diff --git a/CodeGenerationTools/GridworksCore/Enum/DeriveEnums.xslt b/CodeGenerationTools/GridworksCore/Enum/DeriveEnums.xslt
index a1a3b251..66572a41 100644
--- a/CodeGenerationTools/GridworksCore/Enum/DeriveEnums.xslt
+++ b/CodeGenerationTools/GridworksCore/Enum/DeriveEnums.xslt
@@ -110,7 +110,7 @@ class
"""
-
+
diff --git a/CodeGenerationTools/GridworksCore/Enum/EnumTest/DeriveEnumTests.xslt b/CodeGenerationTools/GridworksCore/Enum/EnumTest/DeriveEnumTests.xslt
index 9e209ccc..50485e32 100644
--- a/CodeGenerationTools/GridworksCore/Enum/EnumTest/DeriveEnumTests.xslt
+++ b/CodeGenerationTools/GridworksCore/Enum/EnumTest/DeriveEnumTests.xslt
@@ -34,6 +34,7 @@
+
../../../../tests/enums/
_test.py
@@ -51,8 +52,8 @@ def test_
assert set(.values()) == {
-
-
+
+
"
diff --git a/CodeGenerationTools/GridworksCore/ODXML/DataSchema.odxml b/CodeGenerationTools/GridworksCore/ODXML/DataSchema.odxml
index 92c881f4..476636c9 100644
--- a/CodeGenerationTools/GridworksCore/ODXML/DataSchema.odxml
+++ b/CodeGenerationTools/GridworksCore/ODXML/DataSchema.odxml
@@ -114,11 +114,7 @@
CRUD
- rec9Hc4AlRRUtSxkeNone2022-08-18T13:37:21769062022-08-18T13:37:21StringCurrentSemanticEndrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.CurrentSemanticEnd20.0SchemaRootrecIuUqkLn41mZ8TSCurrentSemanticEnd76398000SchemasSchemas01String763990150
-
-
- CRUD
- recVpLt1h1lFaJPPtNone2022-08-18T13:37:22769072022-08-18T13:37:22StringSchemasrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.Schemas21.0SchemaRootrecIuUqkLn41mZ8TSSchemas76399000SchemaRootscopySchemaRoots copy01String764000150
+ rec9Hc4AlRRUtSxkeNone2022-08-18T13:37:21769062022-08-18T13:37:21StringCurrentSemanticEndrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.CurrentSemanticEnd20.0SchemaRootrecIuUqkLn41mZ8TSCurrentSemanticEnd76398000recVpLt1h1lFaJPPtNone2023-04-30T22:27:17769072022-08-18T13:37:22StringSchemastrueSchemasrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.Schemas21.0SchemaRootrecIuUqkLn41mZ8TSSchemas763990SchemaRootscopySchemaRoots copy01String764000150
CRUD
@@ -146,7 +142,11 @@
CRUD
- recnMa5xJD7jb3ierNone2023-01-09T16:32:26821502023-01-09T16:32:26StringUrlrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.Url30.0SchemaRootrecIuUqkLn41mZ8TSUrl81642000recuSRXe41GdtS77crecd0wQ7MgMBERZHOrecR593Dz0RXe99QZrec7FNSU0EcIocQa7reckkC2u8ssqKX5vIrecumZN3MTdFhMVeEreciPgA34pOecvd1trecJ4fMHwpJ2Z2i7qrecozztBYRd8AWt7DrecxOeQLIO5YViRUgrecbBSrV4Ei9b5iHkrecDNlzyDMR1Z0pwYrec0a1M0CB09zwEmarecT0Gm2LwjkHugZarecj3l62MyNQC9IAQrecJxkH3K9wyb7eKIrecKcHq27mlYUxUSnrecpdQ3t7SESNI2akrecXcBZ7voNPHg0Ydrec9Hc4AlRRUtSxkerecVpLt1h1lFaJPPtrecCHqdjf2zGBNMhzrecsd3la7kaOFw8yqrecUcGE6a9kjAbbwHrecsCmQ5g1sy3MKx6recuhuEDQn3NKBJJfrec2djRgncV4Fpy3UrecnMa5xJD7jb3ierRestfulGetRestfulGetsRestfulGetsRestfulGets
+ recnMa5xJD7jb3ierNone2023-01-09T16:32:26821502023-01-09T16:32:26StringUrlrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.Url30.0SchemaRootrecIuUqkLn41mZ8TSUrl81642000ExtraAllowedExtraAllowed01Boolean825640150
+
+
+ CRUD
+ recNZ1bh0Ysk48HHNNone2023-04-30T22:27:18830722023-04-30T22:27:18BooleanExtraAllowedrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.ExtraAllowed31.0SchemaRootrecIuUqkLn41mZ8TSExtraAllowed82564000recuSRXe41GdtS77crecd0wQ7MgMBERZHOrecR593Dz0RXe99QZrec7FNSU0EcIocQa7reckkC2u8ssqKX5vIrecumZN3MTdFhMVeEreciPgA34pOecvd1trecJ4fMHwpJ2Z2i7qrecozztBYRd8AWt7DrecxOeQLIO5YViRUgrecbBSrV4Ei9b5iHkrecDNlzyDMR1Z0pwYrec0a1M0CB09zwEmarecT0Gm2LwjkHugZarecj3l62MyNQC9IAQrecJxkH3K9wyb7eKIrecKcHq27mlYUxUSnrecpdQ3t7SESNI2akrecXcBZ7voNPHg0Ydrec9Hc4AlRRUtSxkerecVpLt1h1lFaJPPtrecCHqdjf2zGBNMhzrecsd3la7kaOFw8yqrecUcGE6a9kjAbbwHrecsCmQ5g1sy3MKx6recuhuEDQn3NKBJJfrec2djRgncV4Fpy3UrecnMa5xJD7jb3ierrecNZ1bh0Ysk48HHNRestfulGetRestfulGetsRestfulGetsRestfulGets
CRUD
@@ -572,7 +572,15 @@
CRUD
- recCc4GQB5icU2hYHNone2023-03-12T17:17:28822652023-03-12T17:17:28BooleanNotInInitrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrecO8F0MCngKPsXiirecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. Schema.NotInInit43.0SchemarecIuUqkLn41mZ8TSNotInInit81757000recFqhvZF5ZxPsxHIrecRmjpAvVSDNJUOyrecEAZlYvJoznIlDtrecoeRwmw5gM4sUywrecK3TmgvWgU41rzPrec6rUCCriZUENHnyrecSguyKFhRciuJQLrec8veT969D0X8XjZrecQd9hkAt1T75SnBrectqsp5nVV67Pw29recK1P9TaQUNavBXxrecXmcmorQT2xLPZ6recerYEce3irBax2JrecAOy9ZmwD9ImZbSrecWkHnNHrMvKe6LjrecNuAUKwdpBP9iyGrecmcm2sjpbTwQroUrechhGzNfVM4Ua9YdrecUhQ9rXPjUFix4HrecF2gl6BCCKUSUrnrecnGyPJnpH6R9f2lrec9VRrzy03CABwW5rec1yQZz9QnS5j8NgrecNgrvONa0eoDSi7recM6WmGTyRm5VyiGrecLKvaHUspm7AQTArecIcfGu9JI3P1Y0rrecsXqU5tmQrN0PLGrecfmpeSrnwWf703CreceVwqQPlXurn2u6recoVSJwWopQoUB9wrecYgokYN3jlk73WsrecPJRU0Way9OrFu5reckxYGDyhq2U6aGZrec8tPHK1RWLcyXDqrec4UQz0uQGTOXP7vrecjBcWHaD0txkThTrecPChJ4Z0yYiZUOArecCc4GQB5icU2hYHSchemaAttributeSchemaAttributesSchemaAttributesSchemaAttributes
+ recCc4GQB5icU2hYHNone2023-03-12T17:17:28822652023-03-12T17:17:28BooleanNotInInitrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrecO8F0MCngKPsXiirecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. Schema.NotInInit43.0SchemarecIuUqkLn41mZ8TSNotInInit81757000ProtocolsProtocols01String825651150
+
+
+ CRUD
+ recnHjL5hWmhS57nYreccu5newyZkH4tOkLookupLookupLookup-to-Lookup2023-04-30T22:27:19true830732023-04-30T22:27:19StringProtocolstruerecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrecO8F0MCngKPsXiirecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. Schema.Protocols44.0SchemarecIuUqkLn41mZ8TSProtocols82565recM6WmGTyRm5VyiGProtocolTypesProtocolName0ProtocolTypeProtocolNameSchemaProtocolTypeType11ProtocolTypeProtocolTypeIdProtocolNamereccu5newyZkH4tOkrecscYGbW4n76PZ8RLookupNoneLookup-to-None2022-10-30T17:37:19true812192022-10-30T17:36:39StringProtocolNamerecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrecevnfBvpOqzbUaQrecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. ProtocolType.ProtocolName5.0ProtocolTyperecIuUqkLn41mZ8TSProtocolName80711rec8Q6HYmsmkuRsNsProtocolName0ProtocolNameProtocolTypeProtocolProtocolTypesExtraAllowedExtraAllowed01Boolean825661150
+
+
+ CRUD
+ recHpojco9I09N58xrecNZ1bh0Ysk48HHNLookupNoneLookup-to-None2023-04-30T22:28:01true830742023-04-30T22:27:20BooleanExtraAllowedrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrecO8F0MCngKPsXiirecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. Schema.ExtraAllowed45.0SchemarecIuUqkLn41mZ8TSExtraAllowed82566recRmjpAvVSDNJUOySchemaRootExtraAllowed0SchemaRootExtraAllowedSchemaSchemaRootSchemaRootscopy01SchemaRootSchemaRootIdExtraAllowedrecNZ1bh0Ysk48HHNNone2023-04-30T22:27:18830722023-04-30T22:27:18BooleanExtraAllowedrecIuUqkLn41mZ8TSej@ssot.me, jessica.lynn.millar@gmail.comrec4P1HPQcymxTOlErecYfeHO0N6fC3sxJ1715. Scada-develop-v2022.05.16.323366. SchemaRoot.ExtraAllowed31.0SchemaRootrecIuUqkLn41mZ8TSExtraAllowed825640recFqhvZF5ZxPsxHIrecRmjpAvVSDNJUOyrecEAZlYvJoznIlDtrecoeRwmw5gM4sUywrecK3TmgvWgU41rzPrec6rUCCriZUENHnyrecSguyKFhRciuJQLrec8veT969D0X8XjZrecQd9hkAt1T75SnBrectqsp5nVV67Pw29recK1P9TaQUNavBXxrecXmcmorQT2xLPZ6recerYEce3irBax2JrecAOy9ZmwD9ImZbSrecWkHnNHrMvKe6LjrecNuAUKwdpBP9iyGrecmcm2sjpbTwQroUrechhGzNfVM4Ua9YdrecUhQ9rXPjUFix4HrecF2gl6BCCKUSUrnrecnGyPJnpH6R9f2lrec9VRrzy03CABwW5rec1yQZz9QnS5j8NgrecNgrvONa0eoDSi7recM6WmGTyRm5VyiGrecLKvaHUspm7AQTArecIcfGu9JI3P1Y0rrecsXqU5tmQrN0PLGrecfmpeSrnwWf703CreceVwqQPlXurn2u6recoVSJwWopQoUB9wrecYgokYN3jlk73WsrecPJRU0Way9OrFu5reckxYGDyhq2U6aGZrec8tPHK1RWLcyXDqrec4UQz0uQGTOXP7vrecjBcWHaD0txkThTrecPChJ4Z0yYiZUOArecCc4GQB5icU2hYHrecnHjL5hWmhS57nYrecHpojco9I09N58xSchemaAttributeSchemaAttributesSchemaAttributesSchemaAttributes
CRUD
diff --git a/CodeGenerationTools/GridworksCore/SSoT/Airtable.xml b/CodeGenerationTools/GridworksCore/SSoT/Airtable.xml
index baf12fd3..1dfea429 100644
--- a/CodeGenerationTools/GridworksCore/SSoT/Airtable.xml
+++ b/CodeGenerationTools/GridworksCore/SSoT/Airtable.xml
@@ -106,12 +106,12 @@
recg6kZdbgxDUXAAh
2022-11-08T17:16:29Z
reczel9oTcNrweZ1X
- recvGFiTtzXNrhLBm
recH9GUDdSB7SiwNG
+ recvGFiTtzXNrhLBm
+ atn.bid
+ marketmaker
Post atn.bid to marketmaker
MarketMaker
- marketmaker
- atn.bid
000
000
bid.ack
@@ -121,800 +121,853 @@
rec0Od5vGZi8EDj7g
2022-11-23T14:01:26Z
- Json
- recPxYqZlRvCFlD8p
- Active
sla.enter
+ Active
+ Json
000
- sla.enter
+ recPxYqZlRvCFlD8p
1
+ sla.enter
rec0dMwyxvm5Cx9Hu
2022-09-19T15:06:21Z
- Json
- rec1SFXYQUXElpeJ9
- Active
tavalidatorcert.algo.transfer
+ Active
+ Json
+ 000
+ rec1SFXYQUXElpeJ9
Meant to be sent from a pending TaValidator to the GNodeFactory (Gnf), so the
Gnf will transfer its ValidatorCert to the pending TaValidator's Algorand address.
Used for Step 2 of TaValidator certification
- 000
https://gridworks.readthedocs.io/en/latest/ta-validator.html
- tavalidatorcert.algo.transfer
1
+ tavalidatorcert.algo.transfer
rec0r8Vc4daPOhatR
2022-11-04T17:08:01Z
- Json
- recvWBuo1Ws1SIL4b
- Active
new.tadeed.algo.optin
+ Active
+ Json
000
- new.tadeed.algo.optin
+ recvWBuo1Ws1SIL4b
1
+ new.tadeed.algo.optin
rec15cMarXKQ9TAEw
2023-02-20T13:58:24Z
- Json
- rec7aaxWBgMiALe49
- Active
gridworks.event.gt.sh.status
+ Active
+ Json
000
+ rec7aaxWBgMiALe49
true
- gridworks.event.gt.sh.status
1
+ gridworks.event.gt.sh.status
rec1E12bdSXOtQ9qP
2022-06-23T18:39:41Z
- Json
- Unnamed record
- recDEr7ob2KLqM4gU
- Active
telemetry.reporting.config
- ElectricalQuantityReportingConfigList
+ Active
+ Json
000
- telemetry.reporting.config
+ recDEr7ob2KLqM4gU
+ Unnamed record
1
+ telemetry.reporting.config
rec1gy4a9zTVXe420
2022-11-07T20:20:21Z
- Json
- rec7peRuDqMNa0vlW
- Active
sim.timestep
+ Active
+ Json
+ 000
+ rec7peRuDqMNa0vlW
For simulated actors, time progresses discretely on receipt of these time steps.
Sent by TimeCoordinators to coordinate time
- 000
- sim.timestep
1
+ sim.timestep
rec1joYefgk9OQTyG
2022-07-10T12:49:03Z
+ resistive.heater.component.gt
+ Active
Json
- Unnamed record
- recDjO3rdq76LMOoL
- ResistiveHeaterComponent
+ 000
true
- Active
- resistive.heater.component.gt
+ ResistiveHeaterComponent
+ true
+ recDjO3rdq76LMOoL
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ Unnamed record
Type for tracking Resistive Heater Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- resistive.heater.component.gt
1
+ resistive.heater.component.gt
rec23C6am0WIH9veT
2022-06-15T22:55:39Z
- Json
- recE32bnkaJFE5q4Y
- Deprecated
gt.sh.simple.status
+ Deprecated
+ Json
100
- gt.sh.simple.status
+ recE32bnkaJFE5q4Y
1
+ gt.sh.simple.status
rec3iTEohsap8GRP8
2022-11-17T06:07:40Z
- Json
- rec3H5b04RB2vmYrk
- Active
market.price
+ Active
+ Json
000
- market.price
+ rec3H5b04RB2vmYrk
1
+ market.price
rec430tANcSG2ZavF
2022-09-19T18:20:13Z
- Json
- recXCK8GTrT3hnfKX
- Deprecated
tadeed.algo.exchange
+ Deprecated
+ Json
001
- tadeed.algo.exchange
+ recXCK8GTrT3hnfKX
1
+ tadeed.algo.exchange
rec4u5c6FO198haBK
2022-06-07T09:29:22Z
+ pipe.flow.sensor.component.gt
+ Active
Json
- Unnamed record
- recGuvhjDYO65d5rP
- PipeFlowSensorComponent
+ 000
true
- Active
- pipe.flow.sensor.component.gt
+ PipeFlowSensorComponent
+ true
+ recGuvhjDYO65d5rP
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
- PipeFlowSensorComponents
+ Unnamed record
Type for tracking Pipe Flow Sensor Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- pipe.flow.sensor.component.gt
1
+ pipe.flow.sensor.component.gt
rec6PDgvHMkqnbyOQ
2022-11-08T04:30:38Z
+ market.type.gt
+ Active
Json
- recDYjXYf8RbWmUFe
- MarketType
+ 000
true
- Active
- market.type.gt
+ MarketType
+ recDYjXYf8RbWmUFe
A [MarketMaker](https://gridworks.readthedocs.io/en/latest/market-maker.html) GNode can run several types of Markets. For example, it can run an
hourly real-time market and also an ancillary services market for Regulation. This is captured
by the concept of MarketType.
Used by MarketMakers to simultaneously run several different types of Markets
- 000
https://gridworks.readthedocs.io/en/latest/market-type.html
- market.type.gt
1
+ market.type.gt
rec77AahxpNNz6eNx
2023-02-14T14:25:10Z
- Json
- recEGOX7VX0bQ3Lvf
- Active
egauge.io
+ Active
+ Json
+ 000
+ recEGOX7VX0bQ3Lvf
When the component associated to a PowerMeter ShNode has MakeModel EGAUGE__4030, there is a significant amount of configuration required to specify both what is read from the eGauge (input) and what is then sent up to the SCADA (output). This type handles that information.
Used for an eGauge meter's component information in a hardware layout
- 000
https://gridworks-protocol.readthedocs.io/en/latest/egauge-io.html
- egauge.io
1
+ egauge.io
rec9aKp2kx0NQDDc6
2022-11-08T08:14:04Z
- Json
- recd5K0XiAzHsj2Pw
- Active
latest.price
+ Active
+ Json
+ 000
+ recd5K0XiAzHsj2Pw
The price of the current MarketSlot
Latest Price for a MarketType, sent by a MarketMaker
- 000
https://gridworks.readthedocs.io/en/latest/market-slot.html
- latest.price
1
+ latest.price
recBNevzmPrROWd5j
2022-08-11T17:27:11Z
- Json
- Unnamed record, Unnamed record
- recdNEAMkZeOLS8Vo
- Active
telemetry.snapshot.spaceheat
+ Active
+ Json
+ 000
+ recdNEAMkZeOLS8Vo
A snapshot of all current sensed states, sent from a spaceheat SCADA to its
AtomicTNode. The nth element of each of the three lists refer to the same reading
(i.e., what is getting read, what the value is, what the TelemetryNames are.)
- Snapshot
- Snapshot of Telemetry Data from a SpaceHeat SCADA
- 000
true
+ Unnamed record, Unnamed record
+ Snapshot of Telemetry Data from a SpaceHeat SCADA
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
- telemetry.snapshot.spaceheat
1
+ telemetry.snapshot.spaceheat
recBX9s6MqEmX6EjU
2022-07-12T18:11:34Z
+ current.transformer.cac.gt
+ Active
Json
- true
- recdXzxjKArjU2z9Z
- current.transformer.cac.gt.100.100
- CurrentTransformerCac
+ 000
true
- Active
- current.transformer.cac.gt
+ CurrentTransformerCac
+ true
+ recdXzxjKArjU2z9Z
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
Type for trackingCurrent Transformer ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- current.transformer.cac.gt
1
+ current.transformer.cac.gt
recBr8F2Oy5JbxQGP
2022-11-08T17:23:52Z
- Json
- recvGFiTtzXNrhLBm
- Active
bid.ack
+ Active
+ Json
+ 000
+ recvGFiTtzXNrhLBm
This is not a legally binding contract (see accepted.bid). Designed for a POST response.
Bid ack
- 000
- bid.ack
1
+ bid.ack
recCGkiwasshpUQnL
2022-07-03T22:18:03Z
- Json
- Unnamed record, Unnamed record
- receGKnJ8CfemQLdQ
- Active
gt.sh.multipurpose.telemetry.status
+ Active
+ Json
+ 100
+ receGKnJ8CfemQLdQ
A list of readings about a specific SpaceheatNode made by a MultipurposeSensor node,
for a Spaceheat SCADA. Designed as part of a status message sent from the SCADA
to its AtomicTNode typically once every 5 minutes. The nth element of each of its
two lists refer to the same reading (i.e. what the value is, when it was read).
- MultipurposeTelemetryList, MultipurposeTelemetryList
- Data read from a MultipurposeSensor run by a Spaceheat SCADA
- 100
true
+ Unnamed record, Unnamed record
+ Data read from a MultipurposeSensor run by a Spaceheat SCADA
https://gridworks-protocol.readthedocs.io/en/latest/multipurpose-sensor.html
- gt.sh.multipurpose.telemetry.status
1
+ gt.sh.multipurpose.telemetry.status
recCKmWozQuINHiaT
2022-12-04T14:19:58Z
- Json
- recwp0F6Gdrg8qLwb
- Active
super.starter
- Used by world to seed a docker container with data needed to spawn and superviser GNodeInstances
+ Active
+ Json
000
- super.starter
+ recwp0F6Gdrg8qLwb
+ Used by world to seed a docker container with data needed to spawn and superviser GNodeInstances
1
+ super.starter
recCPb9SbFhFCSw5m
2023-01-12T16:52:24Z
- Json
- recE3bIWWFpMPqyS1
- recDq5Oo6baJLVS5s
- Active
heartbeat.b
- Heartbeat for Scada-AtomicTNode DispatchContract, to send via RabbitMQ
+ Active
+ Json
001
- heartbeat.b
+ recE3bIWWFpMPqyS1
+ recDq5Oo6baJLVS5s
+ Heartbeat for Scada-AtomicTNode DispatchContract, to send via RabbitMQ
1
+ heartbeat.b
recCpUQ75l1hoKN45
2022-07-09T23:03:52Z
- Json
- recepkVk3vOelGIUa
- Pending
spaceheat.status
+ Pending
+ Json
100
- spaceheat.status
+ recepkVk3vOelGIUa
1
+ spaceheat.status
recDarbsgFFIi5Cnv
2023-01-08T03:25:10Z
- Json
- rectayh08KEGGGcZc
- Active
gw.cert.id
- Clarifies whether cert id is an Algorand Standard Asset or SmartSig
+ Active
+ Json
000
- gw.cert.id
+ rectayh08KEGGGcZc
+ Clarifies whether cert id is an Algorand Standard Asset or SmartSig
1
+ gw.cert.id
recDnKXIasoP8ODSd
2022-11-06T20:01:05Z
+ g.node.gt
+ Active
Json
- rec8uTC7GK5qgXzg9
- GNode
+ 002
true
- Active
- g.node.gt
+ GNode
+ rec8uTC7GK5qgXzg9
GNodes are the building blocks of Gridworks. They have slowly-changing state
that must be kept in sync across a distributed system. Therefore, they require
a global registry to act as Single Source of Truth (SSoT). This class is used for
that SSoT to share information with actors about their GNodes, and the GNodes
that they will observe and communicate with.
Used to send and receive updates about GNodes
- 002
https://gridworks.readthedocs.io/en/latest/g-node.html
- g.node.gt
1
+ g.node.gt
recERKCcoJa8mkC8L
2022-11-04T13:41:08Z
- Json
- recAWKkS0hcyws7O6
- recUtSmERYdWUVAPm
- Active
initial.tadeed.algo.optin
+ Active
+ Json
+ 002
+ recAWKkS0hcyws7O6
+ recUtSmERYdWUVAPm
The TaDaemon must opt into the TaDeed before receiving it. This message prompts that action.
Received by TaDaemon so that it can opt into intial TaDeed
- 002
- initial.tadeed.algo.optin
1
+ initial.tadeed.algo.optin
recEdlcUTBfQ9Hy6D
2022-06-14T10:57:42Z
- Json
- recgdLh7RL2N6DtWI
- Component
- true
- Active
component.gt
- OtherComponents, Component, Component, Component
+ Active
+ Json
000
- component.gt
+ true
+ Component
+ recgdLh7RL2N6DtWI
1
+ component.gt
recEfMvX9DPwXpcJ3
2022-09-21T16:38:08Z
- Json
- rec5bEVzI1k5qcXYg
- Active
discoverycert.algo.create
+ Active
+ Json
000
- discoverycert.algo.create
+ rec5bEVzI1k5qcXYg
1
+ discoverycert.algo.create
recEoebL6fHn6xzXL
2022-09-30T19:07:43Z
- Json
- rec2qJdOZXwT9U5UP
- Deprecated
signandsubmit.mtx.algo
+ Deprecated
+ Json
000
- signandsubmit.mtx.algo
+ rec2qJdOZXwT9U5UP
1
+ signandsubmit.mtx.algo
recF3FhhkKiMKyjJZ
2022-11-17T06:13:26Z
- Json
- recacY2b5R2bByiAQ
- Active
accepted.bid
+ Active
+ Json
+ 000
+ recacY2b5R2bByiAQ
This is a legally binding contract for the bidder to consume or produce the quantity
in its Bid consistent with the actual price.
Bid acceptance sent from MarketMaker to a market partipant
- 000
https://gridworks.readthedocs.io/en/latest/market-bid.html
+ 1
accepted.bid
+
+
+ recGMHAv9IvCjusuS
+ 2023-05-09T21:46:06Z
+ flo.params
+ Active
+ Json
+ 000
+ recvJ9OVpqVVP895H
+ Derived classes are expected to have TypeNames enforced as literals that start with flo.params. E.g. flo.params.brickstorageheater. This container is used for sending messages that include flo.params (i.e, flo.params.report
+ Base class for Forward Looking Optimizer params
+ https://gridworks-atn.readthedocs.io/en/latest/flo.html#flo-params
+ true
1
+ flo.params
recGPwKi4Sb6sxayy
2022-08-11T15:25:06Z
- Json
- reciPWPv22Y3pt5oD
- Active
ear.g.node.alias.list.toss
+ Active
+ Json
100
- ear.g.node.alias.list.toss
+ reciPWPv22Y3pt5oD
1
+ ear.g.node.alias.list.toss
recGQ4lX5HOPJraGN
2022-11-08T03:38:14Z
- Json
- rechXkF4uGNAulje7
- Active
price.quantity
- 000
- price.quantity
+ Active
+ Json
+ 000
+ rechXkF4uGNAulje7
1
+ price.quantity
recGf44plaa1jjiWQ
2022-11-17T01:54:13Z
- Json
- rechVGhiKUuIgoWYy
- Active
market.maker.info
+ Active
+ Json
000
+ rechVGhiKUuIgoWYy
+ 1
market.maker.info
+
+
+ recGoMNEoqUIuEXwz
+ 2023-04-30T18:09:17Z
+ atn.params
+ Active
+ Json
+ 000
+ rec4yUxGiLZpqWQqb
+ This is a partial type, which is expected to be satisfied by all types starting with atn.params (like atn.params.heatpumpwithbooststore). It is used to describe the generic info required for configuring an AtomicTNode.
+ Generic AtnParams
+ true
1
+ atn.params
recHrNVLHcDTTqaCq
2022-06-07T09:29:41Z
+ simple.temp.sensor.component.gt
+ Active
Json
- Unnamed record
- recjrd0YFmqQQm5sv
- SimpleTempSensorComponent
+ 000
true
- Active
- simple.temp.sensor.component.gt
+ SimpleTempSensorComponent
+ true
+ recjrd0YFmqQQm5sv
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
- TempSensorComponents
+ Unnamed record
Type for tracking Simple Temp Sensor Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- simple.temp.sensor.component.gt
1
+ simple.temp.sensor.component.gt
recIjNSTFZEY0rZ5x
2022-07-12T18:02:08Z
+ electric.meter.cac.gt
+ Active
Json
- true
- recqhQADHovWX1hOl
- ElectricMeterCac
+ 000
true
- Active
- electric.meter.cac.gt
+ ElectricMeterCac
+ true
+ recqhQADHovWX1hOl
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
Type for tracking Electric Meter ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
+ 1
electric.meter.cac.gt
+
+
+ recJEHz9XprAIplqG
+ 2023-06-25T20:37:23Z
+ flo.params.simpleresistivehydronic
+ Active
+ Json
+ 000
+ rec2EA0TG0Xexi6wg
1
+ flo.params.simpleresistivehydronic
recK5H9Pt9ZpF6hgi
2022-06-14T10:58:01Z
- Json
- recm57e2rjMmC2c6n
- ComponentAttributeClass
- true
- Active
component.attribute.class.gt
- OtherCacs, ComponentAttributeClass
+ Active
+ Json
000
- component.attribute.class.gt
+ true
+ ComponentAttributeClass
+ recm57e2rjMmC2c6n
1
+ component.attribute.class.gt
recKA0g4F2FAH28QX
2023-01-28T00:16:22Z
+ multipurpose.sensor.component.gt
+ Active
Json
- recbMWz8PxqJUI41L
- MultipurposeSensorComponent
+ 000
true
- Active
- multipurpose.sensor.component.gt
+ MultipurposeSensorComponent
+ true
+ recbMWz8PxqJUI41L
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
Type for tracking Multupurpose Sensor Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- multipurpose.sensor.component.gt
1
+ multipurpose.sensor.component.gt
recKVkCs5ktwXS3Bu
2022-06-04T19:17:25Z
+ pipe.flow.sensor.cac.gt
+ Active
Json
- true
- Unnamed record
- recmVKHF3ugtUOYrz
- PipeFlowSensorCac
+ 000
true
- Active
- pipe.flow.sensor.cac.gt
+ PipeFlowSensorCac
+ true
+ recmVKHF3ugtUOYrz
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
- ComponentAttributeClass, PipeFlowSensorCacs
+ Unnamed record
Type for tracking Pipe Flow Sensor ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- pipe.flow.sensor.cac.gt
1
+ pipe.flow.sensor.cac.gt
recLF7qGdmXsqb9M2
2022-11-08T04:10:06Z
- Json
- recH9GUDdSB7SiwNG
- recECSz5o4Z7NFjhG
- Active
atn.bid
- AtomicTNode bid sent to a MarketMaker
+ Active
+ Json
001
+ recH9GUDdSB7SiwNG
+ recECSz5o4Z7NFjhG
+ AtomicTNode bid sent to a MarketMaker
https://gridworks.readthedocs.io/en/latest/market-bid.html
- atn.bid
1
+ atn.bid
recLc7QnBdk9iPdHI
2022-06-15T22:49:36Z
- Json
- recncxVAzn76fL8xN
- Deprecated
gt.sh.simple.single.status
- SimpleSingleStatusList
+ Deprecated
+ Json
100
- gt.sh.simple.single.status
+ recncxVAzn76fL8xN
1
+ gt.sh.simple.single.status
recMDHEwaShpGskfS
2022-11-29T13:24:19Z
- Json
- recNIlQetbTDVNam8
- Active
g.nodes.broadcast
+ Active
+ Json
000
- g.nodes.broadcast
+ recNIlQetbTDVNam8
1
+ g.nodes.broadcast
recNH5aI7c5Latl1K
2022-07-03T22:18:20Z
- Json
- Unnamed record, Unnamed record
- recpHvfV5mSI7pgRP
- Active
gt.sh.booleanactuator.cmd.status
- BooleanactuatorCmdList, BooleanactuatorCmdList
+ Active
+ Json
100
+ recpHvfV5mSI7pgRP
true
- gt.sh.booleanactuator.cmd.status
+ Unnamed record, Unnamed record
1
+ gt.sh.booleanactuator.cmd.status
recNShQmJ0F04UlrH
2022-09-21T11:37:21Z
- Json
- reca1A5UXpnpmZdiH
- Active
basegnode.other.create
+ Active
+ Json
000
- basegnode.other.create
+ reca1A5UXpnpmZdiH
1
+ basegnode.other.create
recNZGEdUh6l7BfYp
2022-07-12T18:12:07Z
+ current.transformer.component.gt
+ Active
Json
- recpZ6JqSrTi4xaOu
- CurrentTransformerComponent
+ 000
true
- Active
- current.transformer.component.gt
+ CurrentTransformerComponent
+ true
+ recpZ6JqSrTi4xaOu
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
Type for tracking Current Transformer Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- current.transformer.component.gt
1
+ current.transformer.component.gt
recNgGDYcengufuFe
2022-11-10T22:58:17Z
- Json
- rec3fLb6b0gIeuCTO
+ atn.params.report
Active
- atn.params.report.heatpumpwithbooststore
+ Json
+ 000
+ rec3fLb6b0gIeuCTO
Parameters like the size of the thermal store.
AtomicTNode reporting its AtnParams
- 000
- atn.params.report.heatpumpwithbooststore
1
+ atn.params.report
recNgwEZ9cfcNmeTI
2022-11-07T18:57:19Z
- Json
- recbAMyCyUX2bLKfz
+ simplesim.snapshot.heatpumpwithbooststore
Active
- snapshot.heatpumpwithbooststore
+ Json
000
- snapshot.heatpumpwithbooststore
+ recbAMyCyUX2bLKfz
1
+ simplesim.snapshot.heatpumpwithbooststore
recNkT1cGWR3vqFMM
2022-11-09T22:59:05Z
- Json
- recrZz3gmzl97POA1
- Active
atn.params.heatpumpwithbooststore
- 000
- atn.params.heatpumpwithbooststore
+ Active
+ Json
+ 001
+ recrZz3gmzl97POA1
+ Params for HeatpumpWIthBoostStore Atn strategy
1
+ atn.params.heatpumpwithbooststore
recPnrf8TmF9WBgAm
2022-08-11T17:26:39Z
- Json
- recWWAN9rudjlUYst
- Unnamed record, Unnamed record
- recrnRklRws6Txbqr
- Active
snapshot.spaceheat
+ Active
+ Json
000
+ recWWAN9rudjlUYst
+ recrnRklRws6Txbqr
true
- snapshot.spaceheat
+ Unnamed record, Unnamed record
1
+ snapshot.spaceheat
recRob19Mg7TFO5bB
2023-01-16T07:59:46Z
- Json
- rec9kYNek59Vqps4S
+ simplesim.driver.data.hpwb
Active
- sim.scada.driver.report
+ Json
000
- sim.scada.driver.report
+ rec9kYNek59Vqps4S
1
+ simplesim.driver.data.hpwb
recTSdWeNPEKAZuAP
2022-11-04T17:59:21Z
- Json
- recPy6SuizSerb3JG
- Active
new.tadeed.send
+ Active
+ Json
000
- new.tadeed.send
+ recPy6SuizSerb3JG
1
+ new.tadeed.send
recUrIRjO9EYJRQhG
2022-06-23T18:37:48Z
- Json
- Unnamed record
- recwr8WwMjrVGNL7L
- Active
gt.powermeter.reporting.config
+ Active
+ Json
100
- gt.powermeter.reporting.config
+ recwr8WwMjrVGNL7L
+ Unnamed record
1
+ gt.powermeter.reporting.config
recUtfxpuihd6JBQ9
2022-09-21T11:42:02Z
- Json
- recn0YpsBzBOA9yvq
- Active
discoverycert.algo.transfer
+ Active
+ Json
000
- discoverycert.algo.transfer
+ recn0YpsBzBOA9yvq
1
+ discoverycert.algo.transfer
recVNiapT0HIufahj
2022-06-20T12:49:53Z
- Json
- recxNIfCRauFrb57o
- recFrR35Q6mQhx1KM
- Active
heartbeat.a
+ Active
+ Json
+ 100
+ recxNIfCRauFrb57o
+ recFrR35Q6mQhx1KM
Payload for direct messages sent back and forth between actors,
for example a Supervisor and one of its subordinates.
Used to check that an actor can both send and receive messages
- 100
https://gridworks.readthedocs.io/en/latest/g-node-instance.html
- heartbeat.a
1
+ heartbeat.a
recWDAtZiKvWaXnRX
2022-07-12T18:02:06Z
- Json
- recyD0ycgUiT7TiH2
- Active
hardware.layout
+ Active
+ Json
000
+ recyD0ycgUiT7TiH2
+ 1
hardware.layout
+
+
+ recWWeMXxAoiOeWwx
+ 2023-05-01T21:52:42Z
+ simplesim.driver.data.bsh
+ Active
+ Json
+ 000
+ recwXD4ryogKVwsnE
1
+ simplesim.driver.data.bsh
recWnYsIlIcwBPwZY
2023-01-16T17:25:00Z
- Json
- recF9KonH58AltK0K
- Active
basegnode.scada.create
+ Active
+ Json
+ 000
+ recF9KonH58AltK0K
This is a payload designed to be sent from a TaOwner to the GNodeFactory. The TaOwner creates a private Algorand key and puts it on the Scada Device that will sense and control their TerminalAsset. The public address is associated with the Scada GNode by the GNodeFactory.
Scada BaseGNode Creation
- 000
+ 1
basegnode.scada.create
+
+
+ recXUDaPBBDl9wqBu
+ 2023-06-25T20:38:33Z
+ atn.params.simpleresistivehydronic
+ Active
+ Json
+ 000
+ rechp89wabr5kkqti
1
+ atn.params.simpleresistivehydronic
recZhfzRnHkE804iR
2022-09-20T12:04:51Z
+ base.g.node.gt
+ Active
Json
- recDp8U1jLA9zeEx2
- BaseGNode
+ 002
true
- Active
- base.g.node.gt
+ BaseGNode
+ recDp8U1jLA9zeEx2
BaseGNode. Authority is GNodeFactory.
- 002
- base.g.node.gt
1
+ base.g.node.gt
recaDjX9PV6CUrf6k
2022-11-08T04:03:25Z
- Json
- recsHXkpUxoOF9vYp
- Active
price.quantity.unitless
+ Active
+ Json
000
- price.quantity.unitless
+ recsHXkpUxoOF9vYp
1
+ price.quantity.unitless
recb8a2JTfYBmC6v7
2022-09-19T18:24:49Z
- Json
- recazQb2vEXgbroHd
- Active
basegnode.terminalasset.create
+ Active
+ Json
000
- basegnode.terminalasset.create
+ recazQb2vEXgbroHd
1
+ basegnode.terminalasset.create
recbbx6wGZEfqP2Kn
2022-07-05T12:48:52Z
+ gt.sh.status
+ Active
Json
+ 110
reckop7rgbzAi5Iqq
- Unnamed record, Unnamed record
- recNe1NhrgRzyRlSA
- recNbXbJE9rcnLXAs
- Active
- gt.sh.status
+ recNe1NhrgRzyRlSA
+ recNbXbJE9rcnLXAs
Status message sent by a Spaceheat SCADA every 5 minutes
- 110
true
- gt.sh.status
+ Unnamed record, Unnamed record
1
+ gt.sh.status
recblgO1LGjgyHR2Y
2022-11-21T05:21:17Z
- Json
- recX2g8OLICXZHuHr
- Active
resume.time
+ Active
+ Json
000
- resume.time
+ recX2g8OLICXZHuHr
1
+ resume.time
recbm5aHNmuHvaYKJ
2023-01-16T17:17:50Z
- Json
- recBEBBA0ctnOYQnC
- Active
join.dispatch.contract
+ Active
+ Json
+ 000
+ recBEBBA0ctnOYQnC
This is sent as an invitation to join the DispatchContract. Upon receipt of this,
the AtomicTNode can check that the DispatchContract has finished the first part of
its bootstrapping. This means it is well-funded, and also has the Scada Cert Id
@@ -926,33 +979,33 @@ by the concept of MarketType.
https://gridworks.readthedocs.io/en/latest/dispatch-contract.html
Sent from a Scada to its paired AtomicTNode on RabbitMQ
- 000
- join.dispatch.contract
1
+ join.dispatch.contract
recc5qGcZNQPmktbe
2022-05-11T18:08:26Z
+ gs.pwr
+ Active
GridworksSerial
+ 100
+ p
rec0DJdNtBZJr6pOK
- recO5QLpXXDMjgo1j
- Active
- gs.pwr
+ recO5QLpXXDMjgo1j
Used by a SCADA -> Atn or Atn -> AggregatedTNode to report real-time power of their TerminalAsset. Positive number means WITHDRAWAL from the grid - so generating electricity creates a negative number. This message is considered worse than useless to send after the first attempt, and does not require an ack. Shares the same purpose as power.watts, but designed to be small in size (thus using the GridWorks Serial protocol instead of JSON). The idea is this message, instantaneous reporting of power, is the highest priority message in the system and thus gets to have its metadata made explicit in the structure of the code instead of parameterized. One result is the size of the sent data is very small. Sometimes bandwidth can be an issue, and smaller messages are very useful.
+ true
Real-time power of TerminalAsset in Watts
- 100
- true
- p
- gs.pwr
1
+ gs.pwr
reccq04oqFsHHPTlN
2022-11-04T16:43:48Z
- Json
- recPf7eAhpge7kvO7
- Active
initial.tadeed.algo.transfer
+ Active
+ Json
+ 000
+ recPf7eAhpge7kvO7
Once the TaValidator has done the initial on-site inspection of the Transactive
Device including its location and the type and quality of its power and energy
metering, the TaValidator lets the GNodeFactory know by sending this message.
@@ -972,270 +1025,333 @@ by the concept of MarketType.
TaValidator sends to GNodeFactory after validating Transactive Device
- 000
- initial.tadeed.algo.transfer
1
+ initial.tadeed.algo.transfer
reccsb7VI48EdWlGk
2022-11-02T12:51:03Z
- Json
- rec8ILTteHhn4MpGd
- Active
basegnodes.get
+ Active
+ Json
000
+ rec8ILTteHhn4MpGd
+ 1
basegnodes.get
+
+
+ recd7xonsiIxHvW98
+ 2023-05-03T12:44:11Z
+ simplesim.snapshot
+ Active
+ Json
+ 000
+ Parent class for snapshots sent in a Scada SimpleSimulation
1
+ simplesim.snapshot
recdbl99ZoQqyOhS7
2022-06-06T18:44:52Z
+ relay.component.gt
+ Active
Json
- recPbLemXyDnvKcIc
- RelayComponent
+ 000
true
- Active
- relay.component.gt
+ RelayComponent
+ true
+ recPbLemXyDnvKcIc
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
- BooleanActuatorComponents
Type for tracking Relay Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- relay.component.gt
1
+ relay.component.gt
recde7ZQpg5BRpHxm
2022-11-04T16:50:16Z
- Json
- recMyDdiQjtfTMAP1
- Active
old.tadeed.algo.return
+ Active
+ Json
000
- old.tadeed.algo.return
+ recMyDdiQjtfTMAP1
1
+ old.tadeed.algo.return
recdi7BezBflZlH45
2022-09-20T13:29:20Z
- Json
- rech8RtBLsLVe51DN
- Deprecated
tadeed.algo.transfer
+ Deprecated
+ Json
001
- tadeed.algo.transfer
+ rech8RtBLsLVe51DN
1
+ tadeed.algo.transfer
recdjt7dskJqDJASY
2022-11-17T06:20:24Z
- Json
- recbZXiheXqQdc7b6
- Active
market.book
- MarketMaker's list of bids for a MarketSlot
+ Active
+ Json
000
- market.book
+ recbZXiheXqQdc7b6
+ MarketMaker's list of bids for a MarketSlot
1
+ market.book
recdmZpmDC9qq3Wz5
2022-07-03T21:26:12Z
- Json
- Unnamed record
- recPmpuzBMWnnZRpa
- Active
gt.driver.booleanactuator.cmd
+ Active
+ Json
100
+ recPmpuzBMWnnZRpa
true
- gt.driver.booleanactuator.cmd
+ Unnamed record
1
+ gt.driver.booleanactuator.cmd
rece1suo3h3SqfW4M
2022-06-09T21:31:30Z
- Json
- Unnamed record
- recQ1SzB1rQPnbRUR
- SensorReportingConfig
- Active
gt.sensor.reporting.config
+ Active
+ Json
100
- gt.sensor.reporting.config
+ SensorReportingConfig
+ recQ1SzB1rQPnbRUR
+ Unnamed record
0
+ gt.sensor.reporting.config
receVdNEfIE1HLnwN
2022-07-05T12:55:18Z
- Json
- recHA9kJVs2sT0Fkx
- Unnamed record, Unnamed record
- recm2rM5o9GxgCqbL
- recQVDSRdSrYEHimS
- Active
gt.sh.cli.atn.cmd
+ Active
+ Json
110
+ recHA9kJVs2sT0Fkx
+ recm2rM5o9GxgCqbL
+ recQVDSRdSrYEHimS
true
+ Unnamed record, Unnamed record
+ 1
gt.sh.cli.atn.cmd
+
+
+ recedgBdJvQBnspbO
+ 2023-05-01T22:01:34Z
+ simplesim.driver.data
+ Active
+ Json
+ 000
+ rec8IDXjSvdhHGds4
+ Generic driver report for a simple Scada Simulation
+ true
1
+ simplesim.driver.data
recfTTPpGH16HQ9aY
2022-11-21T22:35:54Z
+ g.node.instance.gt
+ Active
Json
- recV0KuDFayH4qGIl
- GNodeInstance
+ 000
true
- Active
- g.node.instance.gt
+ GNodeInstance
+ recV0KuDFayH4qGIl
One of the layers of abstraction connecting a GNode with a running app in
a Docker container.
Used to send and receive updates about GNodeInstances
- 000
https://gridworks.readthedocs.io/en/latest/g-node-instance.html
+ 1
g.node.instance.gt
+
+
+ rech3pl8AhjCA01Q1
+ 2023-05-01T17:28:06Z
+ atn.params.brickstorageheater
+ Active
+ Json
+ 000
+ recw5evm1WetKAzZG
+ Parameters for a model of a ceramic brick thermal storage room unit, using a two-dimensional Dijstra graph parameterized by 'fullness of the thermal battery' and time.
+ Params for a BrickStorageHeater Atn Strategy
+ https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html
1
+ atn.params.brickstorageheater
rechCPLYrkc1asuPJ
2022-09-14T16:26:22Z
- Json
- reccFZLsGTVhuzGsn
- Active
tavalidatorcert.algo.create
+ Active
+ Json
+ 000
+ reccFZLsGTVhuzGsn
Meant to be sent from a pending TaValidator to the GNodeFactory (Gnf), to
initiate the process of certifying the pending TaValidator.
Used for Step 1 of TaValidator certification
- 000
https://gridworks.readthedocs.io/en/latest/ta-validator.html
+ 1
tavalidatorcert.algo.create
+
+
+ rechWdY7ztMafROYr
+ 2023-05-10T14:02:46Z
+ flo.params.report
+ Active
+ Json
+ 000
+ recBqSlQdF17CgMPY
+ Type used for a message provided by an AtomicTNode or SCADA actor re the flo parameters just used to run a FLO.
+ Flo Params Report
+ https://gridworks-atn.readthedocs.io/en/latest/flo.html#flo-params
1
+ flo.params.report
rechZ9OTpGxuT8xWl
2022-05-11T18:08:26Z
- Json
- recTZzT6nQkrQ4sMq
- Pending
gt.power.sync
+ Pending
+ Json
100
- gt.power.sync
+ recTZzT6nQkrQ4sMq
1
+ gt.power.sync
rechZBY0G1JuNeEuG
2022-07-05T11:32:23Z
+ gt.dispatch.boolean
+ Active
Json
+ 110
recmwngNXL4YDMudy
- Unnamed record, Unnamed record
- recTZ13dEbwrKazkL
- reckTci9LVdsEt2WQ
- Active
- gt.dispatch.boolean
+ recTZ13dEbwrKazkL
+ reckTci9LVdsEt2WQ
Boolean dispatch command sent over the cloud broker from one GNode (FromGNodeAlias/ FromGNodeId) to another (ToGNodeAlias). AboutNodeAlias is the node getting dispatched. It may be a GNode, but it can also be a SpaceHeatNode.
- 110
true
- gt.dispatch.boolean
+ Unnamed record, Unnamed record
1
+ gt.dispatch.boolean
reci4VO3iee2LGfcG
2022-11-10T13:22:20Z
- Json
- reczzIn3wGYrEKtbr
- Active
flo.params.heatpumpwithbooststore
- 000
- flo.params.heatpumpwithbooststore
+ Active
+ Json
+ 001
+ reczzIn3wGYrEKtbr
+ Flo params for the (private) HeatPumpWithBoostStore AtomicTNode strategy.
+ https://gridworks.readthedocs.io/en/latest/enums.html#gridworks.enums.StrategyName
1
+ flo.params.heatpumpwithbooststore
recijDUCMCF0drLi3
2022-07-10T14:13:06Z
+ spaceheat.node.gt
+ Active
Json
- recUj3ZPKMsXanG88
- recEhzcpob8H7VuEF
- reccsu6ZeZHKoDqDy
- ShNode
+ 100
true
- Active
- spaceheat.node.gt
+ ShNode
+ recUj3ZPKMsXanG88
+ recEhzcpob8H7VuEF
+ reccsu6ZeZHKoDqDy
Type for tracking information about a Spaceheat Node.
Spaceheat Node
- 100
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
+ 1
spaceheat.node.gt
+
+
+ recioXjg9Rh1AaoBV
+ 2023-05-01T17:49:59Z
+ simplesim.snapshot.brickstorageheater
+ Active
+ Json
+ 000
+ recm5UcVaAPAtrrFS
1
+ simplesim.snapshot.brickstorageheater
recjFoqZkvOjg0VXc
2023-03-25T22:52:13Z
- Json
- rec3EIGuvfybwwFOK
- Active
power.watts
+ Active
+ Json
+ 000
+ rec3EIGuvfybwwFOK
Used by a SCADA -> Atn or Atn -> AggregatedTNode to report real-time power of their TerminalAsset. Positive number means WITHDRAWAL from the grid - so generating electricity creates a negative number. This message is considered worse than useless to send after the first attempt, and does not require an ack.
Shares the same purpose as gs.pwr, but is not designed to minimize bytes so comes in JSON format.
Real-time power of TerminalAsset in Watts.
- 000
- power.watts
1
+ power.watts
recjI10N2qf36kpmC
2022-07-05T12:55:36Z
- Json
- reccy0CAc6XAa6fGb
- recVIr500A203gkcH
- Deprecated
gt.sh.cli.scada.response
- recPnrf8TmF9WBgAm
+ Deprecated
+ Json
110
- gt.sh.cli.scada.response
+ recPnrf8TmF9WBgAm
+ reccy0CAc6XAa6fGb
+ recVIr500A203gkcH
1
+ gt.sh.cli.scada.response
snapshot.spaceheat
recjpCj1MoKBvlAbR
2022-11-08T03:22:29Z
- Json
- recXGRmBBB6Pch163
- recc2Km1jUViJqVeK
- Active
ready
+ Active
+ Json
+ 001
+ recc2Km1jUViJqVeK
Only intended for simulations that do not have sub-second TimeSteps.
TimeCoordinators based on ```gridworks-timecoordinator``` have a notion of actors
whose `Ready` must be received before issuing the next TimeStep.
+ recXGRmBBB6Pch163
Used in simulations by TimeCoordinator GNodes
- 001
https://gridworks.readthedocs.io/en/latest/time-coordinator.html
- ready
1
+ ready
reckliobnY6Igi5Fa
2022-11-21T05:20:22Z
- Json
- recf5K0BP9qLabpdS
- Active
pause.time
+ Active
+ Json
000
- pause.time
+ recf5K0BP9qLabpdS
1
+ pause.time
recl00nd7rYLyLDUL
2022-11-14T15:41:26Z
- Json
- recPPTLAWZu08mD7s
- Active
terminalasset.certify.hack
+ Active
+ Json
000
- terminalasset.certify.hack
+ recPPTLAWZu08mD7s
1
+ terminalasset.certify.hack
reclb8xqooxtyPZZc
@@ -1246,384 +1362,426 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recmRa74R0GAk0PKx
2022-09-21T11:35:54Z
- Json
- rec70ndc2atifo8Ri
- Active
basegnode.marketmaker.create
+ Active
+ Json
000
- basegnode.marketmaker.create
+ rec70ndc2atifo8Ri
1
+ basegnode.marketmaker.create
recn81szg83l6vw2o
2022-11-30T19:43:13Z
- Json
- rece2rn8uFKupSOZM
- Active
debug.tc.reinitialize.time
+ Active
+ Json
000
- debug.tc.reinitialize.time
+ rece2rn8uFKupSOZM
1
+ debug.tc.reinitialize.time
recnOen6KenxkwQtB
2022-06-14T10:41:17Z
- Json
- recZOEsjIoauhsLjG
- ThermalEdge
- Pending
gt.thermal.edge
- ThermalEdges
+ Pending
+ Json
100
- gt.thermal.edge
+ ThermalEdge
+ recZOEsjIoauhsLjG
0
+ gt.thermal.edge
recnUzSx1WgKUdTZO
2022-07-03T17:26:39Z
- Json
- Deprecated
gt.dispatch
- rechZBY0G1JuNeEuG
+ Deprecated
+ Json
110
- gt.dispatch
+ rechZBY0G1JuNeEuG
1
+ gt.dispatch
gt.dispatch.boolean
recoAsAg06Qp7jYp3
2022-07-05T11:32:40Z
- Json
- Unnamed record
- rec0ASFtYgDm4fTf8
- reciGkEyh61sro7R0
- Active
gt.dispatch.boolean.local
- By Locally, this means sent without access to Internet. The HomeAlone actor must reside within the Local Area Network of the SCADA - typically it should reside on the same hardware.
- Dispatch message sent locally by SCADA HomeAlone actor
+ Active
+ Json
110
+ rec0ASFtYgDm4fTf8
+ reciGkEyh61sro7R0
+ By Locally, this means sent without access to Internet. The HomeAlone actor must reside within the Local Area Network of the SCADA - typically it should reside on the same hardware.
true
+ Unnamed record
+ Dispatch message sent locally by SCADA HomeAlone actor
+ 1
gt.dispatch.boolean.local
+
+
+ recoB5GFAkU3CD9Pu
+ 2023-05-01T22:05:19Z
1
recpqtAlI1M19QR9b
2023-01-28T00:16:07Z
+ multipurpose.sensor.cac.gt
+ Active
Json
- true
- recULIwPg69M69185
- MultipurposeSensorCac
+ 000
true
- Active
- multipurpose.sensor.cac.gt
+ MultipurposeSensorCac
+ true
+ recULIwPg69M69185
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
Type for tracking Multipuprose Sensor ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- multipurpose.sensor.cac.gt
1
+ multipurpose.sensor.cac.gt
recqmA1Cu9GIg4hpp
2022-07-10T12:48:52Z
+ resistive.heater.cac.gt
+ Active
Json
- true
- Unnamed record
- rec2m06PsjtFd0cfu
- ResistiveHeaterCac
+ 000
true
- Active
- resistive.heater.cac.gt
+ ResistiveHeaterCac
+ true
+ rec2m06PsjtFd0cfu
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ Unnamed record
Type for tracking Resistive Heater ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- resistive.heater.cac.gt
1
+ resistive.heater.cac.gt
recrNYtQoRa7YhqI4
2022-06-04T19:21:25Z
+ simple.temp.sensor.cac.gt
+ Active
Json
- true
- Unnamed record
- rec3Noy3m1X4Vdly9
- SimpleTempSensorCac
+ 000
true
- Active
- simple.temp.sensor.cac.gt
+ SimpleTempSensorCac
+ true
+ rec3Noy3m1X4Vdly9
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
- ComponentAttributeClass, TempSensorCacs
+ Unnamed record
Type for tracking Simple Temp Sensor ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- simple.temp.sensor.cac.gt
1
+ simple.temp.sensor.cac.gt
+ itrHua59IITXpXqvf/recrNYtQoRa7YhqI4
recsMoh2JkG2YPR8u
2022-06-07T09:29:06Z
+ electric.meter.component.gt
+ Active
Json
- Unnamed record
- recxdlQ6gCN8mD39r
- ElectricMeterComponent
+ 000
true
- Active
- electric.meter.component.gt
+ ElectricMeterComponent
+ true
+ recxdlQ6gCN8mD39r
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
- ElectricMeterComponents
+ Unnamed record
Type for tracking Electric Meter Components
- true
- 000
https://g-node-registry.readthedocs.io/en/latest/component.html
- electric.meter.component.gt
1
+ electric.meter.component.gt
rect6WA80mNWDt7v0
2022-09-19T20:20:07Z
- Json
- recJH4tbXOqVJkMVW
- Active
basegnode.ctn.create
+ Active
+ Json
000
- basegnode.ctn.create
+ recJH4tbXOqVJkMVW
1
+ basegnode.ctn.create
rectwW4fAko33gT7a
2023-01-19T23:59:02Z
- Json
- recbrp6V9qD6J1NHb
- Active
scada.cert.transfer
+ Active
+ Json
+ 000
+ recbrp6V9qD6J1NHb
This is a payload designed to be sent from a SCADA device to the GNodeFactory after the SCADA has opted into its certificate.
Scada Certificate Transfer
- 000
- scada.cert.transfer
1
+ scada.cert.transfer
recu1iYKh47xRDEt9
2023-01-13T18:48:04Z
- Json
- rechKgkXf88R5dkGD
- Active
heartbeat.algo.audit
+ Active
+ Json
+ 000
+ rechKgkXf88R5dkGD
Algo payload with report of last HeartbeatB sent to partner via Rabbit, to be sent to
DispatchContract on Algo blockchain
- 000
- heartbeat.algo.audit
1
+ heartbeat.algo.audit
recu7baM2BVbAYQAH
2023-02-20T14:22:24Z
- Json
- recObejFqCYx5kpak
- Active
gridworks.header
+ Active
+ Json
000
+ recObejFqCYx5kpak
true
- gridworks.header
1
+ gridworks.header
recuGgxcKPz76mhQc
2022-11-12T08:14:49Z
- Json
- recbGrdqqYGiwVYVK
- Active
tadeed.specs.hack
+ Active
+ Json
000
+ recbGrdqqYGiwVYVK
+ 1
tadeed.specs.hack
+
+
+ recuoD0qsOivs7xOo
+ 2023-05-09T21:46:16Z
+ flo.params.brickstorageheater
+ Active
+ Json
+ 000
+ recfDQscmquO0odpo
+ FloParams for the BrickStorageHeater AtomicTNode strategy.
+ https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html
1
+ flo.params.brickstorageheater
recuocYj9OaOIsmtn
2022-09-21T11:38:10Z
- Json
- recXrOxZu3uUqL6pH
- Active
tatradingrights.algo.create
+ Active
+ Json
000
+ recXrOxZu3uUqL6pH
+ 1
tatradingrights.algo.create
+
+
+ recuzRX6RAVYBuYO4
+ 2023-06-28T14:03:17Z
+ atn.outside.temp.regr.coeffs
+ Active
+ Json
+ 000
+ recy7fqBm5Cl94dnF
+ Coefficients for a linear regression of avg power leaving a building as a function of weather:
+
+PowerOut = Alpha + Beta * OutsideTempF
+
+ These are an example of Slowly Varying State variables maintained for a thermal storage heating Terminal Asset by
+ its AtomicTNode and Scada.
+ https://gridworks-atn.readthedocs.io/en/latest/data-categories.html#slowly-varying-state-variables
1
+ atn.outside.temp.regr.coeffs
recwEHKPPTKLK8OFz
2022-11-17T06:03:05Z
- Json
- recLufl9jSdsMGsFR
- Active
market.slot
- MarketSlot
+ Active
+ Json
000
+ recLufl9jSdsMGsFR
+ MarketSlot
https://gridworks.readthedocs.io/en/latest/market-slot.html
- market.slot
1
+ market.slot
recwcEF6jm0pivW8K
2022-07-03T22:15:16Z
- Json
- Unnamed record, Unnamed record
- rec8c4KjhwNmfrRYP
- Active
gt.sh.simple.telemetry.status
+ Active
+ Json
+ 100
+ rec8c4KjhwNmfrRYP
A list of readings from a simple sensor for a Spaceheat SCADA. Designed as part of a status
message sent from the SCADA to its AtomicTNode typically once every 5 minutes. The nth
element of each of its two lists refer to the same reading (i.e. what the value is,
when it was read).
- SimpleTelemetryList, SimpleTelemetryList
- Data read from a SimpleSensor run by a SpaceHeat SCADA
- 100
true
+ Unnamed record, Unnamed record
+ Data read from a SimpleSensor run by a SpaceHeat SCADA
https://gridworks-protocol.readthedocs.io/en/latest/simple-sensor.html
- gt.sh.simple.telemetry.status
1
+ gt.sh.simple.telemetry.status
recx3kwLemvtMaT0t
2022-06-24T20:28:53Z
- Json
- Unnamed record
- rec93KBYcwiqJ6OQy
- Active
gt.sh.telemetry.from.multipurpose.sensor
+ Active
+ Json
+ 100
+ rec93KBYcwiqJ6OQy
A set of readings made at the same time by a multipurpose sensor, sent by the
MultipurposeSensor SpaceheatNode actor to its SCADA. The nth element of each of its
three readings (what is getting read, what the value is, what the TelemetryNames are).
- Data sent from a MultipurposeSensor to a Spaceheat SCADA
- 100
true
+ Unnamed record
+ Data sent from a MultipurposeSensor to a Spaceheat SCADA
https://gridworks-protocol.readthedocs.io/en/latest/multipurpose-sensor.html
- gt.sh.telemetry.from.multipurpose.sensor
1
+ gt.sh.telemetry.from.multipurpose.sensor
recx4EL5mDebUhtzp
2022-06-09T15:17:43Z
- Json
- Unnamed record
- rec2V7vc3NDSaRb1D
- rec944QikN18Rdopu
- Active
gt.telemetry
+ Active
+ Json
110
+ rec2V7vc3NDSaRb1D
+ rec944QikN18Rdopu
true
- gt.telemetry
+ Unnamed record
1
+ gt.telemetry
- itroCzUO7RmOhCI03/recx4EL5mDebUhtzp
recxXnNUXYPwJi4ns
2023-02-14T13:12:20Z
- Json
- rec9dL2CYkm5s4OXX
- Active
egauge.register.config
+ Active
+ Json
+ 000
+ rec9dL2CYkm5s4OXX
This type captures the information provided by eGauge in its modbus csv map, when reading current, power, energy, voltage, frequency etc from an eGauge 4030.
Used to translate eGauge's Modbus Map
- 000
- egauge.register.config
1
+ egauge.register.config
recxnrRBEZg5cPVPt
2022-10-03T04:44:51Z
- Json
- rec9udDZT7JDuAbjl
- Deprecated
optin.tadeed.algo
- Sent by Gnf to Daemon to opt into a new tadeed.
+ Deprecated
+ Json
100
- optin.tadeed.algo
+ rec9udDZT7JDuAbjl
+ Sent by Gnf to Daemon to opt into a new tadeed.
1
+ optin.tadeed.algo
recxvwvC3YlR3RGEN
2022-11-29T13:56:49Z
- Json
- reczVqlxJInFWonml
- Active
supervisor.container.gt
+ Active
+ Json
+ 000
+ reczVqlxJInFWonml
Sent from a GNodeRegistry to a World, and used also by the World as it spawns
GNodeInstances in docker instances (i.e., the SupervisorContainers).
Used to send and receive updates about SupervisorContainers
- 000
https://gridworks.readthedocs.io/en/latest/supervisor.html
+ 1
supervisor.container.gt
+
+
+ recxwsQKMLrM6UR5g
+ 2023-05-01T22:06:03Z
+ simplesim.driver.report
+ Active
+ Json
+ 000
+ reckQg9yTsSw2dxbh
1
+ simplesim.driver.report
recy2lAURQitTqKTR
2022-06-03T18:20:11Z
+ relay.cac.gt
+ Active
Json
- true
- reca2LF7P05qQmFJW
- RelayCac
+ 000
true
- Active
- relay.cac.gt
+ RelayCac
+ true
+ reca2LF7P05qQmFJW
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
- ComponentAttributeClass, BooleanActuatorCacs
Type for tracking Relay ComponentAttributeClasses
- 000
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
- relay.cac.gt
1
+ relay.cac.gt
recySyBLBbcax7x8D
2023-04-03T20:20:42Z
- Json
- recyETDKMGTbGb0zf
- Active
data.channel
+ Active
+ Json
+ 000
+ recyETDKMGTbGb0zf
A data channel is a concept of some collection of readings that share all characteristics other than time.
Data Channel
- 000
- data.channel
1
+ data.channel
recyuQKkp5CFejv2j
2022-09-21T18:01:12Z
- Json
- recO8OdobcISYms0B
- Active
initial.tadeed.algo.create
+ Active
+ Json
+ 000
+ recO8OdobcISYms0B
If this message is valid, the GNodeFactory co-signs and submits the TaDeed creation. In addition, the
GnodeFactory creates a TerminalAsset with GNodeStatus pending. For more information:
[TaDeed](https://gridworks.readthedocs.io/en/latest/ta-deed.html)
[TaValidator](https://gridworks.readthedocs.io/en/latest/ta-validator.html)
TaValidator sends to GNodeFactory to complete creation of an initial TaDeed
- 000
- initial.tadeed.algo.create
1
+ initial.tadeed.algo.create
recyuopIDguUgR1mI
2022-06-20T13:16:05Z
- Json
- recauOuVBqhRdNWcN
- Deprecated
gt.sh.status.snapshot
- Snapshot, Snapshot
- recBNevzmPrROWd5j
+ Deprecated
+ Json
110
- gt.sh.status.snapshot
+ recBNevzmPrROWd5j
+ recauOuVBqhRdNWcN
1
+ gt.sh.status.snapshot
telemetry.snapshot.spaceheat
reczIxfEiJFKQYsNw
2023-01-16T17:25:02Z
- Json
- rec3kcgktiHCBYpA4
+ dispatch.contract.confirmed
Active
- dispatch.contract.confirmed.heatpumpwithbooststore
+ Json
+ 000
+ rec3kcgktiHCBYpA4
Paired with join.dispatch.contract. Sent from AtomicTNode back to SCADA
once the AtomicTNode has successfully finished bootstrapping the Dispatch
Contract and opted in. Once it has done this, the Dispatch Contract is ready
@@ -1631,20 +1789,19 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
https://gridworks.readthedocs.io/en/latest/dispatch-contract.html
Message sent from AtomicTNode back to SCADA via Rabbit
- 000
- dispatch.contract.confirmed.heatpumpwithbooststore
1
+ dispatch.contract.confirmed
reczYInsSYetUcVpZ
2022-09-20T12:14:51Z
- Json
- recT4SSkJ18pz5YoZ
- Active
basegnodes.broadcast
+ Active
+ Json
000
- basegnodes.broadcast
+ recT4SSkJ18pz5YoZ
1
+ basegnodes.broadcast
@@ -1653,10 +1810,10 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
2022-11-08T16:36:45Z
reczel9oTcNrweZ1X
recd5K0XiAzHsj2Pw
- Get latest.price from marketmaker
- MarketMaker
latest.price
marketmaker
+ Get latest.price from marketmaker
+ MarketMaker
000
@@ -1664,7 +1821,6 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec2HyLffy6QK9QId
2022-05-11T18:30:57Z
- Active
recOAkkrDxlp0hZYR
recAu5abxRBSG7Csu
recPOwKTDIww8SLUy
@@ -1678,9 +1834,24 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recPV5eCtZVeT7zmX
recX4AWEX4SombnY3
recSO1tOVjY3EhnSS
+ recfMyBibCC1lqTy1
+ recAy1MJ6WTkJC2Bt
+ recFfaru1gmnzHcg3
+ rec1TiEjRVAsU1G6T
+ rec367deUgDqEaq89
+ recjhPIPtr6UXppHQ
+ recydLuwKpW0ptMyj
+ rec6fCUex0HlMSbTR
+ recjuJ8RaGljvo9ZZ
+ recl3xwMzRxkadUBM
+ rec0oIFJ2LAVcoLeV
+ rec2Mwqc5DnE715Ck
+ recJokmStFWW1yWsq
+ spaceheat.telemetry.name
+ telemetry.name
UpperPython
- SpaceheatTelemetryName
- https://gridworks-protocol.readthedocs.io/en/latest/telemetry-name.html
+ Active
+ true
recDEr7ob2KLqM4gU
recQ1SzB1rQPnbRUR
rec3Noy3m1X4Vdly9
@@ -1693,85 +1864,76 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recbMWz8PxqJUI41L
recqhQADHovWX1hOl
recyETDKMGTbGb0zf
+ recZR3u3WuSGv96su
+ recqt9zKlCbThWViA
000
Specifies the name of sensed data reported by a Spaceheat SCADA
- recRncRvdA6tysnAt
- recfpS2uOHAcfWGdN
- recqt9zKlCbThWViA
- recZR3u3WuSGv96su
- telemetry.name
- spaceheat.telemetry.name
- true
- recfMyBibCC1lqTy1
- recAy1MJ6WTkJC2Bt
- recFfaru1gmnzHcg3
- rec1TiEjRVAsU1G6T
- rec367deUgDqEaq89
- recjhPIPtr6UXppHQ
- recydLuwKpW0ptMyj
- rec6fCUex0HlMSbTR
- recjuJ8RaGljvo9ZZ
- recl3xwMzRxkadUBM
- rec0oIFJ2LAVcoLeV
- rec2Mwqc5DnE715Ck
- recJokmStFWW1yWsq
+ SpaceheatTelemetryName
+ https://gridworks-protocol.readthedocs.io/en/latest/telemetry-name.html
spaceheat.telemetry.name.000
- 00000000
Unknown
SpaceheatTelemetryName000
+ 00000000
rec4S3L3NZiPihbLi
2022-11-08T00:10:06Z
- Active
recmvMaXSyZBYlpNZ
recAUdFybCuqCJwTQ
rechQD0Jf8c5xaUzc
+ recY6HHhAS5y7TB48
+ recr1lA07ReOr9HMQ
+ recWpU6k2DSQfofVc
+ recnabpmvAZza5CWK
+ rec3MAw2y2MewO5VK
+ recAoJrWkdqNbZwLx
+ recm85TehRT6oXtTP
+ recDgwmeLksJ4L46f
+ distribution.tariff
+ distribution.tariff
UpperPython
- DistributionTariff
+ Active
recrZz3gmzl97POA1
reczzIn3wGYrEKtbr
+ recw5evm1WetKAzZG
+ rechp89wabr5kkqti
+ rec2EA0TG0Xexi6wg
+ recmvMaXSyZBYlpNZ
+ rec1AjUKBV2cKU0zq
+ recUJdyAtLmKAZB4S
000
Name of distribution tariff of local network company/utility
- rec1AjUKBV2cKU0zq
- recmvMaXSyZBYlpNZ
- distribution.tariff
- distribution.tariff
- recr1lA07ReOr9HMQ
- recWpU6k2DSQfofVc
- recnabpmvAZza5CWK
- rec3MAw2y2MewO5VK
+ DistributionTariff
distribution.tariff.000
- 00000000
Unknown
DistributionTariff000
+ 00000000
rec57bh9xoIxLUHjY
2022-11-08T00:07:37Z
- Active
rectyLwNNQRCXsJnR
recmlXyeV4QRYx0Vp
+ recy6wm0IgQI90zHG
+ rec0DytUWYZc8xqSl
+ sh.dist.pump.feedback.model
+ sh.dist.pump.feedback.model
UpperPython
- EmitterPumpFeedbackModel
+ Active
recrZz3gmzl97POA1
reczzIn3wGYrEKtbr
- 000
- recLromkpguogn9x9
rectyLwNNQRCXsJnR
- emitter.pump.feedback.model
- emitter.pump.feedback.model
- recy6wm0IgQI90zHG
- rec0DytUWYZc8xqSl
- emitter.pump.feedback.model.000
- 00000000
+ recLromkpguogn9x9
+ 000
+ ShDistPumpFeedbackModel
+ sh.dist.pump.feedback.model.000
ConstantDeltaT
- EmitterPumpFeedbackModel000
+ ShDistPumpFeedbackModel000
+ 00000000
rec5HXPeyp3jic6FV
2022-08-02T17:19:39Z
- Active
recOCvGJeUYjgNnhB
rec7m1gszFhiCmwBB
recSzV4YyUAPnTaO5
@@ -1780,64 +1942,59 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
reclMrRIA4ISmRw6t
recvNW0XMWSQSZEGn
recj7R1VzYtkQ3rX5
+ recEpIg7AB9Qr2dpX
+ recGSAil9ULCQw1S1
+ core.g.node.role
+ core.g.node.role
UpperPython
- CoreGNodeRole
+ Active
true
- https://gridworks.readthedocs.io/en/latest/core-g-node-role.html
recDp8U1jLA9zeEx2
rec5bEVzI1k5qcXYg
+ reclMrRIA4ISmRw6t
+ recLRAc86dtBYsogW
000
CoreGNodeRole assigned by GNodeFactory
- recX5VXrxWR81za5J
- recCEQgAR8tPu4mgu
- recLRAc86dtBYsogW
- rec6qUrXNHuchMTRb
- reclMrRIA4ISmRw6t
- core.g.node.role
- core.g.node.role
- recEpIg7AB9Qr2dpX
- recGSAil9ULCQw1S1
+ CoreGNodeRole
+ https://gridworks.readthedocs.io/en/latest/core-g-node-role.html
core.g.node.role.000
- 00000000
Other
CoreGNodeRole000
+ 00000000
rec75xMuw0SMkzjVc
2022-11-08T03:48:57Z
- Active
reczQc8UjfHLBjqBM
+ recEPPqtrPd0FeUOQ
+ recQJb1dVOhb9b4gc
+ recRU6cvY6FKUwxbv
+ recSWBVF41HakpB18
+ recRwEFucyvVZaXY2
+ recfzsWHMU0fhZE47
+ market.price.unit
+ market.price.unit
UpperPython
- MarketPriceUnit
+ Active
rechXkF4uGNAulje7
recH9GUDdSB7SiwNG
recDYjXYf8RbWmUFe
recd5K0XiAzHsj2Pw
rec3H5b04RB2vmYrk
recECSz5o4Z7NFjhG
+ reczQc8UjfHLBjqBM
+ rec3OJ7Qnn65b8uug
000
Price unit assigned to MarketMaker MarketType
- rec8B7NqLQHwAZjcw
- recmNuAp0alwhubds
- rec3OJ7Qnn65b8uug
- reczQc8UjfHLBjqBM
- market.price.unit
- market.price.unit
- recEPPqtrPd0FeUOQ
- recQJb1dVOhb9b4gc
- recRU6cvY6FKUwxbv
- recSWBVF41HakpB18
- recRwEFucyvVZaXY2
- recfzsWHMU0fhZE47
+ MarketPriceUnit
market.price.unit.000
- 00000000
USDPerMWh
MarketPriceUnit000
+ 00000000
rec7Ck8y72m0NytYa
2022-06-23T16:10:33Z
- Active
recyOP19Dh8Ldz3q1
recO4pWIknEU18DRO
recUbUSUjbSTDsCnD
@@ -1847,27 +2004,26 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recaStmQ39S4Zsbza
rechyjciVYC2Y6FWo
rec00UKpmRMOkjCGx
+ rec3NEaYaETLIXR9Z
+ local.comm.interface
+ local.comm.interface
Upper
- LocalCommInterface
+ Active
recqhQADHovWX1hOl
- 000
- Categorization of in-house comm mechanisms for SCADA
+ reco9UaGyf9bBkYcs
recM4mFl7a9iTxdrm
- recaR5EUku9iF2rKc
recE24bIOzJ4vCtXl
- reco9UaGyf9bBkYcs
- local.comm.interface
- local.comm.interface
- rec3NEaYaETLIXR9Z
+ 000
+ Categorization of in-house comm mechanisms for SCADA
+ LocalCommInterface
local.comm.interface.000
- 00000000
Unknown
LocalCommInterface000
+ 00000000
rec7pzii3dy9m3jCe
2022-11-08T21:52:51Z
- Active
recjlLyMGMXYaff8w
recEDRPnUux2WZ3vI
recS2IaAF6JHWcYjI
@@ -1876,124 +2032,125 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recyO1LPQqlZeZX7v
recyNnqxvxbEGLzhG
recWYzqc5sRK0ksAD
+ message.category
+ message.category
UpperPython
- MessageCategory
+ Active
+ recjlLyMGMXYaff8w
+ recNmqSEf7jl4AsqG
000
Categorizes how GridWorks messages are sent and decoded/encoded
- recaaXWI5JSINnLOx
- recaWGhVScY6KXA44
- rec9HtmIiTasYUNy0
- recV9jP0nFcRCDphV
- reczs2uW5OOP1dIaw
- recT6IKeUqmmI7L84
- recNmqSEf7jl4AsqG
- recjlLyMGMXYaff8w
- message.category
- message.category
+ MessageCategory
message.category.000
- 00000000
Unknown
MessageCategory000
+ 00000000
rec7qsokBmd2hN5vT
2022-08-01T12:18:20Z
- Active
reconXBspv9L7OQqS
recQH1y9oFoMDcnsd
recqZ8LSzlPWUPcKF
recVVshv4AuJAbuyp
+ component.category
+ component.category
UpperPython
- ComponentCategory
+ Active
true
000
Rough breakdown of devices by category
- component.category
- component.category
+ ComponentCategory
component.category.000
ComponentCategory000
recA15Ak50x6bNMx1
2022-11-07T22:56:11Z
- Active
recfW76lkiFHpOg3N
recgTxLB3WCMDRLJM
recdZoU45YlNxDBUe
+ recV7ixIyYTmrGAbL
+ reclsQog4UhrdIbyr
+ recFv92txxktPwANR
+ recwO34MxjMi4xVbh
+ recbIZmTs1RacVBoR
+ recCRcF7T7qTSMD37
+ reccuXB02dnW4Wl6y
+ recognized.currency.unit
+ recognized.currency.unit
Upper
- RecognizedCurrencyUnit
+ Active
recDYjXYf8RbWmUFe
recrZz3gmzl97POA1
reczzIn3wGYrEKtbr
+ recw5evm1WetKAzZG
+ recfDQscmquO0odpo
+ rechp89wabr5kkqti
+ rec2EA0TG0Xexi6wg
+ recdZoU45YlNxDBUe
+ recEAaklKzWgLdKio
000
Unit of currency
- recVdbIqzBFT6Qpsd
- rechPYPk940Fi7Uud
- reck0WsxFdPOoe5ZM
- recEAaklKzWgLdKio
- recdZoU45YlNxDBUe
- recognized.currency.unit
- recognized.currency.unit
- recV7ixIyYTmrGAbL
- reclsQog4UhrdIbyr
- recFv92txxktPwANR
+ RecognizedCurrencyUnit
recognized.currency.unit.000
- 00000000
Unknown
RecognizedCurrencyUnit000
+ 00000000
recCQyaQ1Oq0MlT20
2023-01-06T03:03:24Z
- Active
rec4Ro9hLznPv7jIw
recm2rIwNRJUR8CCY
+ recI9U053gkcDYRVB
+ rec2pvNC90x1j8fhm
+ algo.cert.type
+ algo.cert.type
UpperPython
- AlgoCertType
+ Active
recUtSmERYdWUVAPm
rectayh08KEGGGcZc
+ recm2rIwNRJUR8CCY
+ recdz6xbHSpZlJDxe
000
Used to distinguish ASA vs SmartSignature certificates
- recdz6xbHSpZlJDxe
- recvmdMYmWLhBwujD
- recsHlBETSCTId6TE
- recm2rIwNRJUR8CCY
- algo.cert.type
- algo.cert.type
- recI9U053gkcDYRVB
- rec2pvNC90x1j8fhm
+ AlgoCertType
algo.cert.type.000
- 00000000
ASA
AlgoCertType000
+ 00000000
recEyU9EKDtM3bD18
2022-11-08T00:09:22Z
- Active
recPDb4imbs6ehnwD
rec02K3Si20fVlsyc
+ recn1qW3ADtk1dB5T
+ recVtRiqtAcpf0fqr
+ recBoiuVaUD2AUett
+ recEmOauAesrLmBV2
+ recognized.temperature.unit
+ recognized.temperature.unit
UpperPython
- RecognizedTemperatureUnit
+ Active
recrZz3gmzl97POA1
reczzIn3wGYrEKtbr
+ recw5evm1WetKAzZG
+ recfDQscmquO0odpo
+ recPDb4imbs6ehnwD
+ rec9izwc0IQmbp6gf
000
Unit of temperature
- rec9izwc0IQmbp6gf
- recPDb4imbs6ehnwD
- recognized.temperature.unit
- recognized.temperature.unit
- recn1qW3ADtk1dB5T
- recVtRiqtAcpf0fqr
+ RecognizedTemperatureUnit
recognized.temperature.unit.000
- 00000000
C
RecognizedTemperatureUnit000
+ 00000000
recLQWqTvGwSz2GcN
2022-06-03T18:20:52Z
- Active
recqfo3DV2CZigvn5
recgLuWiIpBnWvI8T
recljcVVnRh9ne2dH
@@ -2008,9 +2165,21 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
reclpWTi7clJae05G
rec0IwWL8iQqD3anq
recnC6OKNs1p2giG9
+ recpHGTkKtzs36Fvw
+ recjCvwGoMdYArjAn
+ rec0mssbZhVSJPTp8
+ recYch7I4D20ee78G
+ rec9E6HTIAJLoh9wW
+ recrX6PgQEW9ggu8q
+ recRTTglTWqlyAaQW
+ rec1nhmaOdYNQmXTy
+ recLfb3AjS6LNracR
+ recpWdhk8DkfrmbVD
+ recZJ9AJ4rOoBcDpv
+ spaceheat.make.model
+ make.model
Upper
- SpaceheatMakeModel
- https://gridworks-protocol.readthedocs.io/en/latest/make-model.html
+ Pending
reca2LF7P05qQmFJW
recdXzxjKArjU2z9Z
recmVKHF3ugtUOYrz
@@ -2018,58 +2187,58 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec3Noy3m1X4Vdly9
recqhQADHovWX1hOl
recULIwPg69M69185
- 000
- Determines Make/Model of device associated to a Spaceheat Node supervised by SCADA
- recDa8t2QVwfTLzpo
- recfXjHuQMUL0RQ7H
- recVpliEuu2jtKKUj
- rec4ZV16eScgcdZAE
recqfsKuobhERLH1d
- make.model
- spaceheat.make.model
- rec9E6HTIAJLoh9wW
- recrX6PgQEW9ggu8q
- recRTTglTWqlyAaQW
- rec1nhmaOdYNQmXTy
- recLfb3AjS6LNracR
- recpWdhk8DkfrmbVD
- recZJ9AJ4rOoBcDpv
- spaceheat.make.model.000
- 00000000
+ rec4ZV16eScgcdZAE
+ 001
+ Determines Make/Model of device associated to a Spaceheat Node supervised by SCADA
+ SpaceheatMakeModel
+ https://gridworks-protocol.readthedocs.io/en/latest/make-model.html
+ spaceheat.make.model.001
UnknownMake__UnknownModel
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ 00000000
+
+
+ recM2pM6KPgGbqEe2
+ 2023-05-12T13:11:54Z
+ recL0xmZgHaR1Z5Wm
+ recVP2uNFpOFanI2j
+ recognized.irradiance.type
+ recognized.irradiance.type
+ UpperPython
+ Active
+ recL0xmZgHaR1Z5Wm
+ recg48Xi06BYdm33C
+ 000
+ recognized.irradiance.type.000
+ PlaneOfArray
+ 000
+ 00000000
recPvHsXzCenxLa7v
2022-11-09T19:38:22Z
- Active
recrqYsXVPagMEhO3
reclgi3dCrOboE4Dn
recsRZi1bpgYSIj81
+ universe.type
+ universe.type
UpperPython
- UniverseType
- https://gridworks.readthedocs.io/en/latest/universe.html
+ Active
+ recrqYsXVPagMEhO3
+ recNZQe0b4tOcjM0W
000
Allows for multiple GridWorks, in particular for development and shared simulations
- rec4dIrr33GsfXGEi
- recGcb0eH9z0Np8jd
- recihvUJVR6oEfEap
- recfChwtbhGYGwQAx
- rec7riMLKDhllLHJF
- recZKMG3hALXcWQuc
- recNZQe0b4tOcjM0W
- recrqYsXVPagMEhO3
- universe.type
- universe.type
+ UniverseType
+ https://gridworks.readthedocs.io/en/latest/universe.html
universe.type.000
- 00000000
Dev
UniverseType000
+ 00000000
recQeMNisJZjsYXTl
2022-07-20T21:01:38Z
- Active
rec8yn5AqUJJxZVsa
recOGGYynMVbu3Xi9
recyHL0VJtn5jmtIW
@@ -2079,84 +2248,79 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recc1TC8wyNJUO4Vq
recBec6UbnZzyTdpG
recIHpeeM6gwIE1Ec
- recsgSJKZIgLynrjL
+ recYtyZl3uBr6N9Ey
+ recXk1RFSZEvWMYii
+ rec3JoWyUlqUfiTLp
+ sh.actor.class
+ actor.class
UpperPython
- SpaceheatActorClass
- https://gridworks-protocol.readthedocs.io/en/latest/actor-class.html
+ Active
recUj3ZPKMsXanG88
recEhzcpob8H7VuEF
reccsu6ZeZHKoDqDy
- 001
- Determines the code running Spaceheat Nodes supervised by Spaceheat SCADA software
- recyDSPjw1NYVGiOH
+ recaZld1o7mqNRDS9
recu25eXE4ralXooT
- recg4YcVJnk1bG3PL
recTsc0Fiab7VGVWX
- recaZld1o7mqNRDS9
- actor.class
- sh.actor.class
- recYtyZl3uBr6N9Ey
- recXk1RFSZEvWMYii
- rec3JoWyUlqUfiTLp
- sh.actor.class.001
- 00000000
+ 000
+ Determines the code running Spaceheat Nodes supervised by Spaceheat SCADA software
+ SpaceheatActorClass
+ https://gridworks-protocol.readthedocs.io/en/latest/actor-class.html
+ sh.actor.class.000
NoActor
- SpaceheatActorClass001
+ SpaceheatActorClass000
+ 00000000
recWX07Mlzf8djb6q
2022-11-29T13:46:05Z
- Active
recPS1VuBOSiGbyiI
recnnxKBRYfc7uy2Q
rec8UlSDyBAUUZnZ8
rec2qfQHVVYwNQYRf
+ recuB9KYdZDBm0dal
+ gni.status
+ gni.status
UpperPython
- GniStatus
- https://gridworks.readthedocs.io/en/latest/g-node-instance.html
+ Active
recV0KuDFayH4qGIl
+ recPS1VuBOSiGbyiI
+ recdOkYhGUBlj7FBT
000
Enum for managing GNodeInstance lifecycle
- rec3lKyK0qukOmAfT
- reckI8CRWIPcmOTrC
- recdOkYhGUBlj7FBT
- recPS1VuBOSiGbyiI
- gni.status
- gni.status
- recuB9KYdZDBm0dal
+ GniStatus
+ https://gridworks.readthedocs.io/en/latest/g-node-instance.html
gni.status.000
- 00000000
Unknown
GniStatus000
+ 00000000
recX0A9nSriRUvl9n
2022-11-08T00:08:31Z
- Active
recuzlYpywiv3imR3
recE3kKfePg8GJvEC
rec2JJLqGIPAzbj6K
+ recygXnG0FNBHKEpI
+ rec5N3oYOvCWemw2p
+ sh.mixing.valve.feedback.model
+ sh.mixing.valve.feedback.model
UpperPython
- MixingValveFeedbackModel
+ Active
recrZz3gmzl97POA1
reczzIn3wGYrEKtbr
+ recuzlYpywiv3imR3
+ recUKBtypJxJFHldg
000
Control mechanism for a mixing valve, used by Spaceheat SCADAs
- recUKBtypJxJFHldg
- recuzlYpywiv3imR3
- mixing.valve.feedback.model
- mixing.valve.feedback.model
- recygXnG0FNBHKEpI
- rec5N3oYOvCWemw2p
- mixing.valve.feedback.model.000
- 00000000
+ ShMixingValveFeedbackModel
+ sh.mixing.valve.feedback.model.000
ConstantSwt
- MixingValveFeedbackModel000
+ ShMixingValveFeedbackModel000
+ 00000000
recZB6uJDEaCzvTZX
2022-11-06T20:10:43Z
- Active
recyZNh6DHD8cSQJs
rec0rH864GSip8TkD
recue7CvgzoOvpWSK
@@ -2172,32 +2336,26 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recBvWAtxnRxd7bry
recBTSPLKqojr0im3
recuFrnfEo5wsUKx9
+ recF8QiEbhrOARMRK
+ g.node.role
+ g.node.role
UpperPython
- GNodeRole
- https://gridworks.readthedocs.io/en/latest/g-node-role.html
+ Active
rec8uTC7GK5qgXzg9
+ recyZNh6DHD8cSQJs
+ recFcFz3hJ9GJbVDh
000
Categorizes GNodes by their function within GridWorks
- reczplFItDku5AaRa
- recpKd5HOmAf37QY5
- rect0T4CM09fP7g2t
- recxchS4k09ivH7vN
- recjOCdfp4V6Ugqfs
- recA0Q62wqmXkzSse
- recFcFz3hJ9GJbVDh
- recyZNh6DHD8cSQJs
- g.node.role
- g.node.role
- recF8QiEbhrOARMRK
+ GNodeRole
+ https://gridworks.readthedocs.io/en/latest/g-node-role.html
g.node.role.000
- 00000000
GNode
GNodeRole000
+ 00000000
recZmZP13YV9Rmbnw
2022-11-08T04:21:08Z
- Active
recLOiNkyzP8oSI06
reco5WtUl0pdbMf5Z
rec0ltWNsJ1nSwP7i
@@ -2206,29 +2364,27 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recHj4ppdCe6klLwJ
rec3KCdGZftmsMARP
receT6Fp8JXN2GXQY
+ recOxmICij5REVdXj
+ market.type.name
+ market.type.name
UpperPython
- MarketTypeName
+ Active
recDYjXYf8RbWmUFe
recH9GUDdSB7SiwNG
recECSz5o4Z7NFjhG
+ reco5WtUl0pdbMf5Z
+ rectmy7sSSaRVzm4x
000
Categorizes different markets run by MarketMaker
- recJX40Wt0rcWDFET
- rec8YFBXCvMbO7Fnc
- rectmy7sSSaRVzm4x
- reco5WtUl0pdbMf5Z
- market.type.name
- market.type.name
- recOxmICij5REVdXj
+ MarketTypeName
market.type.name.000
- 00000000
unknown
MarketTypeName000
+ 00000000
recc1W1unmzowrKX9
2022-06-16T10:08:00Z
- Deprecated
recD09OLaDB4NHeH0
recY1j4wZLAwwD5K5
recoQaLaEtnGeQcwe
@@ -2239,34 +2395,31 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recCwEZ0rWNNQogj3
recMaTvAWUEtfZ3yk
reccY0eF2JadrVovu
+ recF5JRJR6AVkfQsK
+ recL9BeJniQtSOgyV
+ recEwx1N4X1KFrH7d
+ recDSzwJ1nc31pFT2
+ spaceheat.unit
+ unit
UpperPython
- SpaceheatUnit
+ Deprecated
recDEr7ob2KLqM4gU
recQ1SzB1rQPnbRUR
rec3Noy3m1X4Vdly9
recULIwPg69M69185
+ recIg9jSoS2FGMvEJ
+ recfpgcDj8PWcwGZe
000
Specifies the physical unit of sensed data reported by SCADA
- recLjDrJSnNnwWD54
- recWrjAGRucT1hiRq
- recV83OsyQx8GqHV8
- recfpgcDj8PWcwGZe
- recIg9jSoS2FGMvEJ
- unit
- spaceheat.unit
- recF5JRJR6AVkfQsK
- recL9BeJniQtSOgyV
- recEwx1N4X1KFrH7d
- recDSzwJ1nc31pFT2
+ SpaceheatUnit
spaceheat.unit.000
- 00000000
Unknown
SpaceheatUnit000
+ 00000000
recdH9n0oS3nRRWON
2022-11-29T13:49:28Z
- Active
recPNIzAaCIFw5mT8
recVBvjU9QYshrQ7c
rec37H4Wr3fhZuqBA
@@ -2274,101 +2427,99 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recgphsceOlnshETa
recnn8MUgeat2N88w
rectV4strhNnQayZ6
+ recunD4ijwQh302Oo
+ supervisor.container.status
+ supervisor.container.status
UpperPython
- SupervisorContainerStatus
+ Active
reczVqlxJInFWonml
+ recPNIzAaCIFw5mT8
+ reczQlMuDvW3WO9oA
000
Manages lifecycle of the docker containers where GridWorks actors run
- rec3aEohPrsl8Z6M3
- rec3tGkwCYPLdVaio
- reczQlMuDvW3WO9oA
- recPNIzAaCIFw5mT8
- supervisor.container.status
- supervisor.container.status
- recunD4ijwQh302Oo
+ SupervisorContainerStatus
supervisor.container.status.000
- 00000000
Unknown
SupervisorContainerStatus000
+ 00000000
recf9ZTshqRu81HZo
2022-11-08T00:10:39Z
- Active
reclSgYLAFa1ll8vp
recN22aM14AVV1PuR
rece9uqvosClHWLDu
- UpperPython
- EnergySupplyType
- recrZz3gmzl97POA1
- reczzIn3wGYrEKtbr
- 000
- reclDWkXtj41G28wW
- reclSgYLAFa1ll8vp
- energy.supply.type
- energy.supply.type
recc5ycF0PbAAyQtA
recrrGZ3RvMBzGjrP
rec85nrhXQw9tRODn
recaaEpN2NrRBsCmW
+ recIClynqMSTgczNz
+ recQVmUtZgyRJS0Fw
+ recOaBXisU25ozsU1
+ energy.supply.type
+ energy.supply.type
+ UpperPython
+ Active
+ recrZz3gmzl97POA1
+ reczzIn3wGYrEKtbr
+ recw5evm1WetKAzZG
+ rechp89wabr5kkqti
+ rec2EA0TG0Xexi6wg
+ reclSgYLAFa1ll8vp
+ reclDWkXtj41G28wW
+ recSXyujnroySodqB
+ 000
+ EnergySupplyType
energy.supply.type.000
- 00000000
Unknown
EnergySupplyType000
-
-
- recfdR0NaoJuQy24A
- 2023-04-09T21:06:02Z
- .
+ 00000000
recgq98LIAwVwgALk
2022-12-02T17:35:02Z
- Active
recchYovfZl6dZtje
recmcoCNDhq8Dknn5
recaYTfkpFUTDvJQd
+ atn.spaceheat.strategy.name
+ atn.spaceheat.strategy.name
UpperPython
- AtnSpaceheatStrategyName
- 000
- rec6kz3pyxVALoFsu
- recKJi6uA9s9Sp8XM
+ Active
recmcoCNDhq8Dknn5
- atn.spaceheat.strategy.name
- atn.spaceheat.strategy.name
+ 000
+ AtnSpaceheatStrategyName
atn.spaceheat.strategy.name.000
- 00000000
NoActor
AtnSpaceheatStrategyName000
+ 00000000
rechRk6DjahLATrOI
2022-08-30T18:04:21Z
- Active
rec46s7o3XEL0nMyc
recYZ4i0CenNHSN68
rectW0RYQ9V3zy3cY
recPY9T9Npi1jCIVV
recEHVFmBtSGMPmxk
recWvHiwQvwKVnBgW
+ registry.g.node.role
+ registry.g.node.role
UpperPython
- RegistryGNodeRole
+ Active
true
- 000
+ recWvHiwQvwKVnBgW
recr9TyWTi2Ct7iKH
recmacM072NkqkOW1
- recWvHiwQvwKVnBgW
- registry.g.node.role
- registry.g.node.role
+ 000
+ RegistryGNodeRole
registry.g.node.role.000
- 00000000
Unknown
RegistryGNodeRole000
+ 00000000
reclaO4DqpDmwPOIC
2022-11-08T22:23:48Z
- Active
rechaotHblmyukrn1
recBbKNjWyV1mwxXD
recLgRPx2UGsQFiRr
@@ -2377,29 +2528,23 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recZthcBSla9DrcCf
recuWBQ06IQsYr0or
recbUxpxV3qnYpYEA
+ message.category.symbol
+ message.category.symbol
UpperPython
- MessageCategorySymbol
+ Active
+ rechaotHblmyukrn1
+ rec7umpHOe1zBQgmH
000
Shorthand symbols for MessageCategory000 Enum, used in meta-data like routing keys
- rec9bDgohSOum1o1F
- recf2bjSGV3D1Ml5i
- recISSyBDybwCsc9S
- recLgjTEHK9NGb3nq
- recesY3Van2qeFjV0
- recsRpVdgR7q3fCML
- rec7umpHOe1zBQgmH
- rechaotHblmyukrn1
- message.category.symbol
- message.category.symbol
+ MessageCategorySymbol
message.category.symbol.000
- 00000000
unknown
MessageCategorySymbol000
+ 00000000
recomGYBJ9ldSsiNU
2022-06-25T21:51:48Z
- Active
reclVQqsN9eKLnIFs
recmK3fpzdj9xCe10
recYLv2x2lR5rftCy
@@ -2420,133 +2565,122 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recOiGQpWfPtwhP9F
recawk0tnuNgj0Vn2
recBamnEI4FxIrDzE
+ recMomsDfu8ViRPzW
+ recKf4zpfW8Q9hzkW
+ rechsgO8WdwiCbPKX
+ sh.node.role
+ role
UpperPython
- ShNodeRole
- https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node-role.html
+ Active
recUj3ZPKMsXanG88
recEhzcpob8H7VuEF
reccsu6ZeZHKoDqDy
+ recBamnEI4FxIrDzE
+ receRjseORDOQyD4F
000
Categorizes SpaceheatNodes by their function within the heating system
- recqMWuADrFZz8VgP
- rec1OdnzZiXinfwfj
- recEIu8DZMwf0J7za
- receRjseORDOQyD4F
- recBamnEI4FxIrDzE
- role
- sh.node.role
- recMomsDfu8ViRPzW
- recKf4zpfW8Q9hzkW
- rechsgO8WdwiCbPKX
+ ShNodeRole
+ https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node-role.html
sh.node.role.000
- 00000000
Unknown
ShNodeRole000
+ 00000000
recounhEj97w5SfDm
2022-11-08T03:47:08Z
- Active
recdMV7TkDw8zFcf9
recRYMQ5xAzlYZafa
+ recehDezdvO5nKJJQ
+ rec5yCVNnWVXBDdMc
+ recOhTtiANrJcVKgf
+ recREgyk5HQKEtSMJ
+ market.quantity.unit
+ market.quantity.unit
UpperPython
- MarketQuantityUnit
+ Active
rechXkF4uGNAulje7
recH9GUDdSB7SiwNG
recDYjXYf8RbWmUFe
recECSz5o4Z7NFjhG
+ recdMV7TkDw8zFcf9
+ rectGOQvuxBQ1f8LZ
000
Quantity unit assigned to MarketMaker MarketType
- recy37qKrW01vTt7S
- recGhJkY0Egp6jCRt
- rectGOQvuxBQ1f8LZ
- recdMV7TkDw8zFcf9
- market.quantity.unit
- market.quantity.unit
- recehDezdvO5nKJJQ
- rec5yCVNnWVXBDdMc
- recOhTtiANrJcVKgf
- recREgyk5HQKEtSMJ
+ MarketQuantityUnit
market.quantity.unit.000
- 00000000
AvgMW
MarketQuantityUnit000
+ 00000000
recqx4EqT3OFtnxTG
2022-08-01T19:40:48Z
- Active
recX4LfgcX5340LCn
reccbyMtvH1trII7S
recBxzAFmSdGMky9f
recuDHqYzSnUGgaOA
recmkdghA4yolcvkz
+ rec3Ip25a5UdscQKD
+ recVtNsE7nmGPy31j
+ g.node.status
+ g.node.status
UpperPython
- GNodeStatus
+ Active
true
- https://gridworks.readthedocs.io/en/latest/g-node-status.html
recDp8U1jLA9zeEx2
rec8uTC7GK5qgXzg9
+ recmkdghA4yolcvkz
+ recIyZCjcgxuH7wbv
100
Enum for managing GNode lifecycle
- rec8Ahq8RdNkgPzQN
- recOCu54C8gBud4Rp
- recZKMmBxWot2RY5F
- recTt38mXlQtJdywQ
- recWkTXMymydxR5UX
- recUiiAdTTH4zmBfJ
- recIyZCjcgxuH7wbv
- recmkdghA4yolcvkz
- g.node.status
- g.node.status
- rec3Ip25a5UdscQKD
- recVtNsE7nmGPy31j
+ GNodeStatus
+ https://gridworks.readthedocs.io/en/latest/g-node-status.html
g.node.status.100
- 00000000
Unknown
GNodeStatus100
+ 00000000
recv25tG4mBjyVeMY
2022-08-02T20:12:55Z
- Active
rectpVbb3vrmCp4X9
reciyc2Iq5RQOs8kr
recF26uqkY2rHT7Xp
+ schema.status
+ schema.status
UpperPython
- SchemaStatus
+ Active
000
- schema.status
- schema.status
+ SchemaStatus
schema.status.000
SchemaStatus000
recyOOpe9zHor9FIY
2022-12-02T23:45:13Z
- Active
recMMj6g6FxFlaABn
recRHbwNE0YPqaThx
recHV1XP9JK2N3mBN
rechjwPVSGfZctKi2
recOgl1jT8XKEDvZw
rec1dipUc4zFFowvS
+ recZKpSeaBMKswWfh
+ reccsr0glHYFUIca3
+ strategy.name
+ strategy.name
UpperPython
- StrategyName
+ Active
recV0KuDFayH4qGIl
- 000
- Used to assign code to run a particular GNodeInstance
- recpwlwbrp4FbfXbU
- recf9z2cLhcr9up3s
- recfKJvRoPrS32Ima
recMMj6g6FxFlaABn
- strategy.name
- strategy.name
- reccsr0glHYFUIca3
- strategy.name.000
- 00000000
+ recfKJvRoPrS32Ima
+ 001
+ Used to assign code to run a particular GNodeInstance
+ StrategyName
+ strategy.name.001
NoActor
- StrategyName000
+ StrategyName001
+ 00000000
@@ -2556,18 +2690,26 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
supervisor
rec2Ecw4AiDnLjr1m
recoddRuayvzh5LI2
+ recLd50n420SZT2Ph
+ rec4QRsw9pyqletk7
+ recHOaQXKeRZPL0Nb
recXkDh6rUnHrjUgP
recknL0adnUfQpqPN
rechLbeILCDyEGO1Y
+ recB8H3txw2ls31X2
+ recsikwiyHUpGY4pw
Supervisor
recTX2jQM519euXg3
2022-12-23T11:35:39Z
timecoordinator
+ recsikwiyHUpGY4pw
reczKXN1K75S2z24T
recVyGGSoV8hXTdEX
recZM7YGf3lwhBZXp
+ rec3Wz3mODtKI1hno
+ rec4QRsw9pyqletk7
TimeCoordinator
@@ -2575,6 +2717,9 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
2022-12-23T11:34:49Z
marketmaker
recknL0adnUfQpqPN
+ rec3Wz3mODtKI1hno
+ recB5lUNdb61JWFzw
+ recHOaQXKeRZPL0Nb
MarketMaker
@@ -2600,6 +2745,9 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
2022-12-23T11:34:49Z
atomictnode
recVyGGSoV8hXTdEX
+ recB8H3txw2ls31X2
+ recB5lUNdb61JWFzw
+ recLd50n420SZT2Ph
AtomicTNode
@@ -2607,140 +2755,218 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec2Ecw4AiDnLjr1m
2022-12-23T12:00:21Z
- recVpxgbZYRNPQBo7
recBICOfWLnejLDbV
- supervisor -> gnode
+ recVpxgbZYRNPQBo7
supervisor
gnode
+ supervisor -> gnode
- recVyGGSoV8hXTdEX
- 2022-12-23T11:59:35Z
+ rec3Wz3mODtKI1hno
+ 2023-06-22T12:16:15Z
+ recV7jilfpQAiKSJC
recTX2jQM519euXg3
- rect67WIHRrRgUGHb
- atomictnode -> timecoordinator
- atomictnode
+ marketmaker
timecoordinator
+ marketmaker -> timecoordinator
- recXkDh6rUnHrjUgP
- 2022-12-23T11:56:54Z
- recBICOfWLnejLDbV
- recVpxgbZYRNPQBo7
- gnode -> supervisor
- gnode
+ rec4QRsw9pyqletk7
+ 2023-06-22T19:31:09Z
+ recBICOfWLnejLDbV
+ recTX2jQM519euXg3
+ supervisor
+ timecoordinator
+ supervisor -> timecoordinator
+
+
+ recB5lUNdb61JWFzw
+ 2023-06-22T19:19:58Z
+ rect67WIHRrRgUGHb
+ recV7jilfpQAiKSJC
+ atomictnode
+ marketmaker
+ atomictnode -> marketmaker
+
+
+ recB8H3txw2ls31X2
+ 2023-06-22T19:12:47Z
+ rect67WIHRrRgUGHb
+ recBICOfWLnejLDbV
+ atomictnode
+ supervisor
+ atomictnode -> supervisor
+
+
+ recHOaQXKeRZPL0Nb
+ 2023-06-22T19:31:16Z
+ recBICOfWLnejLDbV
+ recV7jilfpQAiKSJC
+ supervisor
+ marketmaker
+ supervisor -> marketmaker
+
+
+ recLd50n420SZT2Ph
+ 2023-06-22T12:14:34Z
+ recBICOfWLnejLDbV
+ rect67WIHRrRgUGHb
+ supervisor
+ atomictnode
+ supervisor -> atomictnode
+
+
+ recVyGGSoV8hXTdEX
+ 2022-12-23T11:59:35Z
+ rect67WIHRrRgUGHb
+ recTX2jQM519euXg3
+ atomictnode
+ timecoordinator
+ atomictnode -> timecoordinator
+
+
+ recXkDh6rUnHrjUgP
+ 2022-12-23T11:56:54Z
+ recVpxgbZYRNPQBo7
+ recBICOfWLnejLDbV
+ gnode
supervisor
+ gnode -> supervisor
recZM7YGf3lwhBZXp
2022-12-23T12:00:35Z
- recTX2jQM519euXg3
recYJDvKOf8sVkLY9
- world -> timecoordinator
+ recTX2jQM519euXg3
world
timecoordinator
+ world -> timecoordinator
rechLbeILCDyEGO1Y
2022-12-23T12:00:46Z
- recBICOfWLnejLDbV
recYJDvKOf8sVkLY9
- world -> supervisor
+ recBICOfWLnejLDbV
world
supervisor
+ world -> supervisor
recknL0adnUfQpqPN
2022-12-23T12:00:06Z
- recBICOfWLnejLDbV
recV7jilfpQAiKSJC
- marketmaker -> supervisor
+ recBICOfWLnejLDbV
marketmaker
supervisor
+ marketmaker -> supervisor
recoddRuayvzh5LI2
2022-12-23T12:02:12Z
- recYJDvKOf8sVkLY9
recBICOfWLnejLDbV
- supervisor -> world
+ recYJDvKOf8sVkLY9
supervisor
world
+ supervisor -> world
+
+
+ recsikwiyHUpGY4pw
+ 2023-06-22T19:29:13Z
+ recTX2jQM519euXg3
+ recBICOfWLnejLDbV
+ timecoordinator
+ supervisor
+ timecoordinator -> supervisor
reczKXN1K75S2z24T
2022-12-23T11:56:54Z
- recTX2jQM519euXg3
recVpxgbZYRNPQBo7
- gnode -> timecoordinator
+ recTX2jQM519euXg3
gnode
timecoordinator
+ gnode -> timecoordinator
rec00UKpmRMOkjCGx
2022-06-23T17:58:41Z
+ Analog_4_20_mA
+ rec7Ck8y72m0NytYa
653c73b8
7
000
- Analog_4_20_mA
- rec7Ck8y72m0NytYa
local.comm.interface.000__Analog_4_20_mA
rec02K3Si20fVlsyc
2022-11-08T00:13:11Z
+ F
+ recEyU9EKDtM3bD18
6f16ee63
Fahrenheit
1
- F
- recEyU9EKDtM3bD18
recognized.temperature.unit.000__F
rec0IwWL8iQqD3anq
2023-02-09T14:47:37Z
+ GridWorks__SimTSnap1
+ recLQWqTvGwSz2GcN
3042c432
Simulated SCADA Box
10
000
- GridWorks__SimTSnap1
- recLQWqTvGwSz2GcN
- spaceheat.make.model.000__GridWorks__SimTSnap1
+ spaceheat.make.model.001__GridWorks__SimTSnap1
rec0ltWNsJ1nSwP7i
2022-11-08T04:21:41Z
+ rt60gate5
+ recZmZP13YV9Rmbnw
b36cbfb4
Real-time energy, 60 minute MarketSlots, gate closing 5 minutes prior to start
2
- rt60gate5
- recZmZP13YV9Rmbnw
market.type.name.000__rt60gate5
+
+ rec0mssbZhVSJPTp8
+ 2023-09-22T12:52:43Z
+ spaceheat.make.model.001__Amphenol__NTC_10K_Thermistor_MA100GG103BN
+ recLQWqTvGwSz2GcN
+ Amphenol__NTC_10K_Thermistor_MA100GG103BN
+ 15
+ A small gauge, low-cost, rapid response NTC 10K Thermistor designed for medical applications.
+ https://drive.google.com/drive/u/0/folders/11HW4ov66UvxKAwqApW6IrtoXatZBLQkd
+ 001
+ 46f21cd5
+
rec0rH864GSip8TkD
2022-11-06T20:13:05Z
+ TerminalAsset
+ recZB6uJDEaCzvTZX
bdeaa0b1
An avatar for a real-word Transactive Device
1
000
- TerminalAsset
- recZB6uJDEaCzvTZX
https://gridworks.readthedocs.io/en/latest/transactive-device.html
g.node.role.000__TerminalAsset
rec1dipUc4zFFowvS
2022-12-03T21:30:51Z
+ WorldA
+ recyOOpe9zHor9FIY
642c83d3
- Basic GridWorks world strategy
+ Authority on GNodeInstances, and their private keys. Maintains a FastAPI used
+ for relational information about backoffice information held locally
+ and/or in the GNodeRegistry/GNodeFactory.
+ [More Info](https://gridworks.readthedocs.io/en/latest/world-role.html)
1
000
- WorldA
- recyOOpe9zHor9FIY
- strategy.name.000__WorldA
+ strategy.name.001__WorldA
rec1u3bNUp0jNp9sm
@@ -2750,104 +2976,105 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec2JJLqGIPAzbj6K
2022-11-08T00:15:49Z
+ NaiveVariableSwt
+ recX0A9nSriRUvl9n
0397c1df
Variable Source Water Temp, naive assumptions about distribution system capabilities
1
- NaiveVariableSwt
- recX0A9nSriRUvl9n
- mixing.valve.feedback.model.000__NaiveVariableSwt
+ sh.mixing.valve.feedback.model.000__NaiveVariableSwt
rec2jUtFQpNHrTK7d
2022-06-03T22:00:34Z
- f652d87f
HeatedSpace
+ f652d87f
__HeatedSpace
rec2qfQHVVYwNQYRf
2022-11-29T13:51:24Z
+ Active
+ recWX07Mlzf8djb6q
69241259
Active in its GridWorks world. If the GNodeInstance has an actor, that actor is communicating
2
0
- Active
- recWX07Mlzf8djb6q
gni.status.000__Active
rec37H4Wr3fhZuqBA
2022-11-29T13:50:11Z
+ Launching
+ recdH9n0oS3nRRWON
17c5cc54
World has launched the container
2
0
- Launching
- recdH9n0oS3nRRWON
supervisor.container.status.000__Launching
rec3CAP2O1QnDmoZO
2022-06-14T10:26:53Z
+ BoostElement
+ recomGYBJ9ldSsiNU
99c5f326
Resistive element used for providing heat to a thermal store.
5
000
- BoostElement
- recomGYBJ9ldSsiNU
sh.node.role.000__BoostElement
rec3HXGuVG1ysS4cB
2022-11-06T20:13:12Z
+ Supervisor
+ recZB6uJDEaCzvTZX
88112a93
Responsible for GNode actors running in a container
9
000
- Supervisor
- recZB6uJDEaCzvTZX
+ https://gridworks.readthedocs.io/en/latest/supervisor.html
g.node.role.000__Supervisor
rec3KCdGZftmsMARP
2022-11-08T04:21:59Z
+ rt30gate5
+ recZmZP13YV9Rmbnw
e997ccfb
Real-time energy, 30 minute MarketSlots, gate closing 5 minutes prior to start
7
- rt30gate5
- recZmZP13YV9Rmbnw
market.type.name.000__rt30gate5
rec46s7o3XEL0nMyc
2022-08-30T18:04:59Z
+ GNodeFactory
+ rechRk6DjahLATrOI
79503448
1
000
- GNodeFactory
- rechRk6DjahLATrOI
registry.g.node.role.000__GNodeFactory
rec4Ro9hLznPv7jIw
2023-01-06T03:03:47Z
+ SmartSig
+ recCQyaQ1Oq0MlT20
086b5165
Certificate based on Algorand Smart Signature
1
000
- SmartSig
- recCQyaQ1Oq0MlT20
algo.cert.type.000__SmartSig
rec4UxxZLx0pcrNYV
2022-06-21T16:13:33Z
+ PowerW
+ rec2HyLffy6QK9QId
af39eec9
Power in Watts
1
000
- PowerW
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__PowerW
@@ -2858,28 +3085,28 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec7DAQOMxfbTg2ar
2022-06-03T22:00:41Z
- 6eb05344
Outdoors
+ 6eb05344
__Outdoors
rec7m1gszFhiCmwBB
2022-08-02T17:20:16Z
+ ConductorTopologyNode
+ rec5HXPeyp3jic6FV
4502e355
5
1
- ConductorTopologyNode
- rec5HXPeyp3jic6FV
core.g.node.role.000__ConductorTopologyNode
rec7ncccsiImnbc78
2022-11-08T04:21:44Z
+ rt60gate30
+ recZmZP13YV9Rmbnw
5f335bdb
Real-time energy, 60 minute MarketSlots, gate closing 30 minutes prior to start
4
- rt60gate30
- recZmZP13YV9Rmbnw
market.type.name.000__rt60gate30
@@ -2891,225 +3118,234 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
rec8UlSDyBAUUZnZ8
2022-11-29T13:46:40Z
+ Pending
+ recWX07Mlzf8djb6q
7890ab0a
Has been created by the World, but has not yet finished provisioning
1
0
- Pending
- recWX07Mlzf8djb6q
gni.status.000__Pending
rec8yn5AqUJJxZVsa
2022-07-20T21:02:36Z
+ Atn
+ recQeMNisJZjsYXTl
b103058f
A SpaceheatNode representing the AtomicTNode. Note that the code running the AtomicTNode is not local within the SCADA code, except for a stub used for testing purposes.
5
000
- Atn
- recQeMNisJZjsYXTl
https://gridworks.readthedocs.io/en/latest/atomic-t-node.html
- sh.actor.class.001__Atn
+ sh.actor.class.000__Atn
rec90WWRRGoXVDSFG
2022-06-03T22:00:30Z
- eb1eb8b3
ElectricHeater
+ eb1eb8b3
__ElectricHeater
rec9HQGNlXpTRVF1D
2022-06-14T10:30:01Z
+ PipeFlowMeter
+ recomGYBJ9ldSsiNU
ece3b600
A meter that measures flow of liquid through a pipe, in units of VOLUME/TIME
12
000
- PipeFlowMeter
- recomGYBJ9ldSsiNU
sh.node.role.000__PipeFlowMeter
rec9n5zRdlLVYTfp1
2022-06-03T18:27:44Z
+ GridWorks__WaterTempHighPrecision
+ recLQWqTvGwSz2GcN
f8b497e8
Simulated temp sensor
5
000
- GridWorks__WaterTempHighPrecision
- recLQWqTvGwSz2GcN
- spaceheat.make.model.000__GridWorks__WaterTempHighPrecision
+ spaceheat.make.model.001__GridWorks__WaterTempHighPrecision
rec9xQpKaAPQNQavK
2022-07-20T17:31:27Z
- a8d9a70d
- Magnelab 50A current transformer
- 14
- 001
Magnelab__SCT-0300-050
recLQWqTvGwSz2GcN
- spaceheat.make.model.000__Magnelab__SCT-0300-050
+ a8d9a70d
+ Magnelab 50A current transformer
+ 18
+ 002
+ spaceheat.make.model.001__Magnelab__SCT-0300-050
recAUdFybCuqCJwTQ
2022-11-08T00:17:04Z
+ VersantA1StorageHeatTariff
+ rec4S3L3NZiPihbLi
2127aba6
+ Versant is a utility serving customers in Maine, and in particular serves much of the area behind the Keene Rd Constraint in the [GridWorks Millinocket Demo](https://gridworks.readthedocs.io/en/latest/millinocket-demo.html#background). Alternately known as the 'Home Eco Rate With Bonus Meter, Time-of-Use.' Look for rate A1 in Versant
+[rate schedules](https://www.versantpower.com/residential/rates/rates-schedules/);
+details are also available [here](https://drive.google.com/drive/u/0/folders/1mhIeNj2JWVyIJrQnSHmBDOkBpNnRRVKB).
+
+More:
+Service under this rate will be available to residential customers with thermal energy storage devices, electric battery storage devices, and/or vehicle chargers who agree to install a second metered point of delivery. The customer will be subject to inspections to ensure that the thermal storage device, electric battery storage device, and electric vehicle charger(s) are sized appropriately for residential use. If the thermal storage device, electric battery storage device, and electric vehicle charger(s) do not pass Company inspection, then the service will be denied. Service will be single-phase, alternating current, 60 hertz, at one standard secondary distribution voltage. Customers taking service under this rate schedule are responsible for paying both Distribution Service and Stranded Cost.
+
+See attached csv for instantiation of this rate as an 8760.
1
- VersantStorageHeatTariff
- rec4S3L3NZiPihbLi
- distribution.tariff.000__VersantStorageHeatTariff
+ https://github.com/thegridelectric/gridworks-ps/blob/dev/input_data/electricity_prices/isone/distp__w.isone.stetson__2022__gw.me.versant.a1.res.ets.csv
+ distribution.tariff.000__VersantA1StorageHeatTariff
recAu5abxRBSG7Csu
2022-05-11T18:31:54Z
+ WaterTempFTimes1000
+ rec2HyLffy6QK9QId
793505aa
Water temperature, in Degrees F multiplied by 1000. So 142100 means 142.1 deg F
4
000
- WaterTempFTimes1000
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__WaterTempFTimes1000
recBTSPLKqojr0im3
2022-12-31T22:46:22Z
+ AggregatedTNode
+ recZB6uJDEaCzvTZX
db57d184
An aggregation of AtomicTNodes
13
000
- AggregatedTNode
- recZB6uJDEaCzvTZX
g.node.role.000__AggregatedTNode
recBUljA6RHgKD5H9
2022-06-03T22:00:44Z
- f6a567c9
PowerMeter
+ f6a567c9
__PowerMeter
recBamnEI4FxIrDzE
2023-03-06T14:20:29Z
+ Unknown
+ recomGYBJ9ldSsiNU
00000000
- recomGYBJ9ldSsiNU
Unknown Role
0
+ recomGYBJ9ldSsiNU
000
- Unknown
- recomGYBJ9ldSsiNU
sh.node.role.000__Unknown
recBbKNjWyV1mwxXD
2022-11-08T22:27:18Z
+ rj
+ reclaO4DqpDmwPOIC
7e4957a3
Serialized Json message sent on the world rabbit broker from one GNode actor to another
1
000
- rj
- reclaO4DqpDmwPOIC
message.category.symbol.000__rj
recBec6UbnZzyTdpG
2022-07-20T21:04:09Z
+ MultipurposeSensor
+ recQeMNisJZjsYXTl
7c483ad0
A sensor that either reads multiple kinds of readings from the same sensing device (for example reads current and voltage), reads multiple different objects (temperature from two different thermisters) or both.
7
000
- MultipurposeSensor
- recQeMNisJZjsYXTl
https://gridworks-protocol.readthedocs.io/en/latest/multipurpose-sensor.html
- sh.actor.class.001__MultipurposeSensor
+ sh.actor.class.000__MultipurposeSensor
recBotb5JTDTQSfLs
2022-06-20T11:27:40Z
+ Scada
6d37aa41
0
- Scada
__Scada
recBsLU3Sz3l2g9UF
2022-06-03T22:00:05Z
- cfab7629
AtomicTNode
+ cfab7629
__AtomicTNode
recBvWAtxnRxd7bry
2022-11-08T15:43:36Z
+ Scada
+ recZB6uJDEaCzvTZX
674ad859
GNode associated to the device and code that directly monitors and actuates a Transactive Device
10
000
- Scada
- recZB6uJDEaCzvTZX
g.node.role.000__Scada
recBxzAFmSdGMky9f
2022-08-02T13:49:42Z
+ PermanentlyDeactivated
+ recqx4EqT3OFtnxTG
839b38db
The GNode can no longer be used, now or in the future.
3
100
- PermanentlyDeactivated
- recqx4EqT3OFtnxTG
g.node.status.100__PermanentlyDeactivated
recCwEZ0rWNNQogj3
2022-07-12T18:08:06Z
+ WattHours
+ recc1W1unmzowrKX9
d66f1622
6
000
- WattHours
- recc1W1unmzowrKX9
spaceheat.unit.000__WattHours
recD09OLaDB4NHeH0
2022-06-16T10:08:41Z
+ Celcius
+ recc1W1unmzowrKX9
ec14bd47
3
000
- Celcius
- recc1W1unmzowrKX9
spaceheat.unit.000__Celcius
recD9SeBr2hL70oTB
2022-06-14T10:27:03Z
+ PowerMeter
+ recomGYBJ9ldSsiNU
9ac68b6e
A SpaceheatNode representing the power meter that is used to settle financial transactions with the TerminalAsset. That is, this is the power meter whose accuracy is certified in the creation of the TerminalAsset GNode via creation of the TaDeed.
4
000
- PowerMeter
- recomGYBJ9ldSsiNU
https://gridworks.readthedocs.io/en/latest/terminal-asset.html
sh.node.role.000__PowerMeter
recDOV8tGrCBYIi9Z
2022-06-21T02:15:31Z
+ HomeAlone
32d3d19f
1
- HomeAlone
__HomeAlone
recDdWr2o8kupiLgA
2022-11-08T22:27:20Z
+ s
+ reclaO4DqpDmwPOIC
eb802736
GwSerial protocol message sent on the world rabbit broker
3
000
- s
- reclaO4DqpDmwPOIC
message.category.symbol.000__s
@@ -3120,83 +3356,83 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recDxlFepZ1Ta6TjM
2022-11-06T20:13:09Z
+ ConductorTopologyNode
+ recZB6uJDEaCzvTZX
234cfaa2
An avatar for a real-world electric grid node - e.g. a substation or transformer
5
000
- ConductorTopologyNode
- recZB6uJDEaCzvTZX
g.node.role.000__ConductorTopologyNode
recE3kKfePg8GJvEC
2022-11-08T00:15:46Z
+ CautiousVariableSwt
+ recX0A9nSriRUvl9n
6a668ab8
Variable Source Water Temp, conservative assumptions about distribution system capabilities
2
- CautiousVariableSwt
- recX0A9nSriRUvl9n
- mixing.valve.feedback.model.000__CautiousVariableSwt
+ sh.mixing.valve.feedback.model.000__CautiousVariableSwt
recEDRPnUux2WZ3vI
2022-11-08T21:53:24Z
+ RabbitJsonDirect
+ rec7pzii3dy9m3jCe
9057ab24
Serialized Json message sent on the world rabbit broker from one GNode actor to another
1
000
- RabbitJsonDirect
- rec7pzii3dy9m3jCe
message.category.000__RabbitJsonDirect
recEHVFmBtSGMPmxk
2022-08-30T18:05:25Z
+ WorldInstanceRegistry
+ rechRk6DjahLATrOI
baa537f6
3
000
- WorldInstanceRegistry
- rechRk6DjahLATrOI
registry.g.node.role.000__WorldInstanceRegistry
recEpQyhK6EjK50v3
2022-08-02T17:20:25Z
+ AtomicTNode
+ rec5HXPeyp3jic6FV
d9823442
2
0
- AtomicTNode
- rec5HXPeyp3jic6FV
core.g.node.role.000__AtomicTNode
recF26uqkY2rHT7Xp
2022-08-02T20:13:22Z
- eec5f61c
- The Schema is no longer in use
Deprecated
recv25tG4mBjyVeMY
+ eec5f61c
+ The Schema is no longer in use
schema.status.000__Deprecated
recFoYhRoxxQ5pAPB
2022-06-21T16:09:11Z
+ GallonsTimes100
+ rec2HyLffy6QK9QId
329a68c0
Gallons multipled by 100
7
000
- GallonsTimes100
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__GallonsTimes100
recG3HM3txYdopTc6
2022-06-22T22:01:29Z
+ AmpsRms
+ recc1W1unmzowrKX9
a969ac7c
7
000
- AmpsRms
- recc1W1unmzowrKX9
spaceheat.unit.000__AmpsRms
@@ -3207,16 +3443,16 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recGGHw0aiNtDGYMK
2022-06-20T11:27:08Z
+ BooleanActuator
fddd0064
2
- BooleanActuator
__BooleanActuator
recGLghuUh9gPboZY
2022-06-11T13:09:24Z
- 64044e41
BaseboardRadiator
+ 64044e41
__BaseboardRadiator
@@ -3227,89 +3463,89 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recHV1XP9JK2N3mBN
2022-12-02T23:47:02Z
+ AtnHeatPumpWithBoostStore
+ recyOOpe9zHor9FIY
f5961401
- GridWorks strategy for an AtomicTNode representing a type of heat pump storage heating system
+ AtomicTNode for a heat pump thermal storage heating system with a boost element and a thermal \n heated by the boost element. [More on AtomicTNodes](https://gridworks.readthedocs.io/en/latest/atomic-t-node.html)
2
000
- AtnHeatPumpWithBoostStore
- recyOOpe9zHor9FIY
- strategy.name.000__AtnHeatPumpWithBoostStore
+ strategy.name.001__AtnHeatPumpWithBoostStore
recHa5PoDhycQozqP
2022-06-14T10:26:55Z
+ HeatedSpace
+ recomGYBJ9ldSsiNU
65725f44
A Heated Space.
13
000
- HeatedSpace
- recomGYBJ9ldSsiNU
sh.node.role.000__HeatedSpace
recHj4ppdCe6klLwJ
2022-11-08T04:21:45Z
+ rt15gate5
+ recZmZP13YV9Rmbnw
01a84101
Real-time energy, 15 minute MarketSlots, gate closing 5 minutes prior to start
5
- rt15gate5
- recZmZP13YV9Rmbnw
market.type.name.000__rt15gate5
recHqypHWJo3QHaJm
2022-06-21T16:31:02Z
+ Gpm
+ recc1W1unmzowrKX9
b4580361
5
000
- Gpm
- recc1W1unmzowrKX9
spaceheat.unit.000__Gpm
recIHpeeM6gwIE1Ec
2022-07-20T21:04:23Z
+ Thermostat
+ recQeMNisJZjsYXTl
4a9c1785
A SpaceheatNode representing a thermostat.
8
000
- Thermostat
- recQeMNisJZjsYXTl
- sh.actor.class.001__Thermostat
+ sh.actor.class.000__Thermostat
recIT8TBlmotrGEdj
2022-11-08T21:53:26Z
+ RabbitGwSerial
+ rec7pzii3dy9m3jCe
9d70744e
GwSerial protocol message sent on the world rabbit broker
3
000
- RabbitGwSerial
- rec7pzii3dy9m3jCe
message.category.000__RabbitGwSerial
recIg9jSoS2FGMvEJ
2022-11-06T17:21:49Z
+ Unknown
+ recc1W1unmzowrKX9
00000000
- recc1W1unmzowrKX9
0
+ recc1W1unmzowrKX9
000
- Unknown
- recc1W1unmzowrKX9
spaceheat.unit.000__Unknown
recJgbyK2OW0Mmspx
2022-07-20T17:31:29Z
+ OpenEnergy__EmonPi
+ recLQWqTvGwSz2GcN
c75d269f
Open Energy's open source multipurpose sensing device (including internal power meter)
9
000
- OpenEnergy__EmonPi
- recLQWqTvGwSz2GcN
https://docs.openenergymonitor.org/emonpi/technical.html
- spaceheat.make.model.000__OpenEnergy__EmonPi
+ spaceheat.make.model.001__OpenEnergy__EmonPi
recJgt6lpr2Y4SOSw
@@ -3319,106 +3555,119 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recK6xt05hjixHV0W
2022-11-06T20:13:08Z
+ AtomicTNode
+ recZB6uJDEaCzvTZX
8021dcad
Transacts in markets on behalf of, and controlling the power use of, a TerminalAsset
2
000
- AtomicTNode
- recZB6uJDEaCzvTZX
+ https://gridworks.readthedocs.io/en/latest/atomic-t-node.html
g.node.role.000__AtomicTNode
recKOYKvUY1kPI2EC
2022-06-14T10:27:06Z
+ Scada
+ recomGYBJ9ldSsiNU
d0afb424
Primary SCADA
1
000
- Scada
- recomGYBJ9ldSsiNU
sh.node.role.000__Scada
recKU7bGZnIOJVL1Z
2022-06-14T10:26:57Z
+ HydronicPipe
+ recomGYBJ9ldSsiNU
fe3cbdd5
A pipe carrying techinical water or other fluid (e.g. glycol) in a heating system.
14
000
- HydronicPipe
- recomGYBJ9ldSsiNU
sh.node.role.000__HydronicPipe
recKvhVnUDsdpOydG
2022-06-14T10:32:14Z
+ PipeTempSensor
+ recomGYBJ9ldSsiNU
c480f612
A temperature sensor used for measuring the temperature of a tank. Typically curved metal thermistor with thermal grease for good contact.
9
000
- PipeTempSensor
- recomGYBJ9ldSsiNU
sh.node.role.000__PipeTempSensor
+
+ recL0xmZgHaR1Z5Wm
+ 2023-05-12T13:28:36Z
+ PlaneOfArray
+ recM2pM6KPgGbqEe2
+ 00000000
+ The sum of the direct normal (DNI) and diffuse (DHI) irradiance components incident on a surface with a given tilt and angle of incidence (AOI)
+ 0
+ recM2pM6KPgGbqEe2
+ 111
+ recognized.irradiance.type.000__PlaneOfArray
+
recLFu70SV2EdhpM6
2022-06-20T11:27:11Z
+ PowerMeter
2ea112b9
3
- PowerMeter
__PowerMeter
recLOiNkyzP8oSI06
2022-11-08T04:21:24Z
+ rt5gate5
+ recZmZP13YV9Rmbnw
d20b81e4
Real-time energy, 5 minute MarketSlots, gate closing 5 minutes prior to start
1
- rt5gate5
- recZmZP13YV9Rmbnw
market.type.name.000__rt5gate5
recLVFwHNrVH3Qrt4
2023-01-06T03:03:43Z
+ ASA
00000000
An Algorand Standard Asset with unit-name TADEED and quantity 1
0
000
- ASA
__ASA
recLgRPx2UGsQFiRr
2022-11-08T22:27:19Z
+ rjb
+ reclaO4DqpDmwPOIC
68bb105c
Serailized Json message broadcast on the world rabbit broker by a GNode actor
2
000
- rjb
- reclaO4DqpDmwPOIC
message.category.symbol.000__rjb
recMMj6g6FxFlaABn
2022-12-02T23:46:48Z
+ NoActor
+ recyOOpe9zHor9FIY
00000000
- recyOOpe9zHor9FIY
Assigned to GNodes that do not have actors
0
+ recyOOpe9zHor9FIY
000
- NoActor
- recyOOpe9zHor9FIY
- strategy.name.000__NoActor
+ strategy.name.001__NoActor
recMaTvAWUEtfZ3yk
2022-07-12T18:08:51Z
+ VoltsRms
+ recc1W1unmzowrKX9
e5d7555c
8
000
- VoltsRms
- recc1W1unmzowrKX9
spaceheat.unit.000__VoltsRms
@@ -3429,32 +3678,32 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recN22aM14AVV1PuR
2022-11-08T00:11:18Z
- cb18f937
- 1
StandardOffer
recf9ZTshqRu81HZo
+ cb18f937
+ 1
energy.supply.type.000__StandardOffer
recNCSlxyWPHkPwtx
2022-06-14T10:27:10Z
+ BaseboardRadiator
+ recomGYBJ9ldSsiNU
05fdd645
A baseboard radiator - one kind of emitter in a hydronic heating system.
15
000
- BaseboardRadiator
- recomGYBJ9ldSsiNU
sh.node.role.000__BaseboardRadiator
recNSUqY6jN9iBJXq
2022-11-29T13:50:14Z
+ Provisioning
+ recdH9n0oS3nRRWON
ec342324
Container has started, but is going through its provisioning process
3
0
- Provisioning
- recdH9n0oS3nRRWON
supervisor.container.status.000__Provisioning
@@ -3465,158 +3714,160 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recO4pWIknEU18DRO
2022-06-23T16:13:51Z
+ RS232
+ rec7Ck8y72m0NytYa
0843a726
8
000
- RS232
- rec7Ck8y72m0NytYa
local.comm.interface.000__RS232
recOAkkrDxlp0hZYR
2022-05-11T18:31:54Z
+ GpmTimes100
+ rec2HyLffy6QK9QId
d70cce28
Gallons Per Minute multiplied by 100. So 433 means 4.33 gallons per minute.
5
000
- GpmTimes100
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__GpmTimes100
recOCvGJeUYjgNnhB
2022-08-02T17:20:11Z
+ TerminalAsset
+ rec5HXPeyp3jic6FV
0f8872f7
1
0
- TerminalAsset
- rec5HXPeyp3jic6FV
core.g.node.role.000__TerminalAsset
recOEbA071k9xzfv3
2022-06-03T22:01:10Z
- e7a8d05a
PrimaryScada
+ e7a8d05a
__PrimaryScada
recOGGYynMVbu3Xi9
2022-07-20T21:02:15Z
+ BooleanActuator
+ recQeMNisJZjsYXTl
fddd0064
A SpaceheatNode representing a generic boolean actuator capable of turning on (closing a circuit) or turning off (opening a circuit).
3
000
- BooleanActuator
- recQeMNisJZjsYXTl
- sh.actor.class.001__BooleanActuator
+ sh.actor.class.000__BooleanActuator
recOVz3BfaUEoVjbv
2022-07-20T18:46:55Z
+ MilliWattHours
+ rec2HyLffy6QK9QId
e0bb014b
Energy in MilliWattHours.
10
001
- MilliWattHours
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__MilliWattHours
recOgl1jT8XKEDvZw
2022-12-02T23:49:28Z
+ MarketMakerA
+ recyOOpe9zHor9FIY
5e18a52e
- Simple GridWorks MarketMaker strategy, in [gridworks-marketmaker repo](https://github.com/thegridelectric/gridworks-marketmaker)
+ Runs a two-sided market associated to its GNode as part of the copper
+ GNode sub-tree.
+ [More on MarketMakers](https://gridworks.readthedocs.io/en/latest/market-maker.html)
4
000
- MarketMakerA
- recyOOpe9zHor9FIY
- strategy.name.000__MarketMakerA
+ strategy.name.001__MarketMakerA
recOiGQpWfPtwhP9F
2022-06-25T17:15:45Z
+ RadiatorFan
+ recomGYBJ9ldSsiNU
6896109b
A fan that can amplify the power out of a radiator.
16
000
- RadiatorFan
- recomGYBJ9ldSsiNU
sh.node.role.000__RadiatorFan
recPDb4imbs6ehnwD
2022-11-08T00:13:25Z
+ C
+ recEyU9EKDtM3bD18
00000000
- recEyU9EKDtM3bD18
Celcius
0
- C
- recEyU9EKDtM3bD18
+ recEyU9EKDtM3bD18
recognized.temperature.unit.000__C
recPNIzAaCIFw5mT8
2022-11-29T13:50:00Z
+ Unknown
+ recdH9n0oS3nRRWON
00000000
- recdH9n0oS3nRRWON
Default value
0
+ recdH9n0oS3nRRWON
0
- Unknown
- recdH9n0oS3nRRWON
supervisor.container.status.000__Unknown
recPOwKTDIww8SLUy
2022-05-11T18:31:54Z
+ WaterTempCTimes1000
+ rec2HyLffy6QK9QId
c89d0ba1
Water temperature, in Degrees Celcius multiplied by 1000. So 43200 means 43.2 deg C
3
000
- WaterTempCTimes1000
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__WaterTempCTimes1000
recPS1VuBOSiGbyiI
2022-11-29T13:46:29Z
+ Unknown
+ recWX07Mlzf8djb6q
00000000
- recWX07Mlzf8djb6q
Default Value
0
+ recWX07Mlzf8djb6q
0
- Unknown
- recWX07Mlzf8djb6q
gni.status.000__Unknown
recPV5eCtZVeT7zmX
2022-07-20T18:47:00Z
+ FrequencyMicroHz
+ rec2HyLffy6QK9QId
337b8659
Frequency in MicroHz
11
001
- FrequencyMicroHz
- rec2HyLffy6QK9QId
spaceheat.telemetry.name.000__FrequencyMicroHz
recPY9T9Npi1jCIVV
2022-08-30T18:05:22Z
+ World
+ rechRk6DjahLATrOI
06469a3c
4
000
- World
- rechRk6DjahLATrOI
registry.g.node.role.000__World
recQH1y9oFoMDcnsd
2022-08-01T12:19:41Z
- f8cf443b
Generator
rec7qsokBmd2hN5vT
+ f8cf443b
component.category.000__Generator
@@ -3627,108 +3878,110 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recREfopISHOktVI2
2022-06-20T11:27:04Z
+ Atn
b103058f
4
- Atn
__Atn
+ itrrXEIStZn65gqTP/recREfopISHOktVI2
recRHbwNE0YPqaThx
2022-12-02T23:46:57Z
+ SupervisorA
+ recyOOpe9zHor9FIY
4bb2cf7e
- Supervisor A Strategy, in [gridworks-atn package](https://pypi.org/project/gridworks-atn/)
+ A simple supervisor that monitors its supervised AtomicTNode GNode strategies
+ via a heartbeat health check.
+ [More Info](https://gridworks.readthedocs.io/en/latest/supervisor.html)
1
000
- SupervisorA
- recyOOpe9zHor9FIY
- strategy.name.000__SupervisorA
+ strategy.name.001__SupervisorA
recRYMQ5xAzlYZafa
2022-11-08T03:47:41Z
- c272f3b3
- 1
AvgkW
recounhEj97w5SfDm
+ c272f3b3
+ 1
market.quantity.unit.000__AvgkW
- itrXUA84T0mWm2ABX/recRYMQ5xAzlYZafa
recRhxuG4B3RCPPqB
2022-06-23T18:00:39Z
- spaceheat.make.model.000__Gridworks__SimPm1
Gridworks__SimPm1
recLQWqTvGwSz2GcN
076da322
Simulated power meter
6
000
+ spaceheat.make.model.001__Gridworks__SimPm1
recS2IaAF6JHWcYjI
2022-11-08T21:53:25Z
- message.category.000__RabbitJsonBroadcast
RabbitJsonBroadcast
rec7pzii3dy9m3jCe
7813eb50
Serailized Json message broadcast on the world rabbit broker by a GNode actor
2
000
+ message.category.000__RabbitJsonBroadcast
recSO1tOVjY3EhnSS
2023-02-19T19:57:07Z
- spaceheat.telemetry.name.000__AirTempFTimes1000
AirTempFTimes1000
rec2HyLffy6QK9QId
4c3f8c78
Air temperature, in Degrees F multiplied by 1000.
13
002
+ spaceheat.telemetry.name.000__AirTempFTimes1000
recSnVcPTdO1wigJU
2022-07-20T17:31:24Z
- spaceheat.make.model.000__YHDC__SCT013-100
YHDC__SCT013-100
recLQWqTvGwSz2GcN
08da3f7d
YHDC current transformer
- 15
- 001
+ 16
+ 002
https://en.yhdc.com/product/SCT013-401.html
+ spaceheat.make.model.001__YHDC__SCT013-100
recSzV4YyUAPnTaO5
2022-08-02T17:20:18Z
- core.g.node.role.000__InterconnectionComponent
InterconnectionComponent
rec5HXPeyp3jic6FV
d67e564e
6
1
+ core.g.node.role.000__InterconnectionComponent
recT4WgGgNHq8EM8c
2022-06-06T18:00:38Z
- spaceheat.telemetry.name.000__RelayState
RelayState
rec2HyLffy6QK9QId
5a71d4b3
- State of a Relay. 0 means open, 1 means closed
+ State of a Boolean Actuator (relay or otherwise). 0 means open (no current can flow), 1 means closed (no current can flow)
2
000
+ spaceheat.telemetry.name.000__RelayState
recTkPuXChChEmYZD
2022-07-20T18:46:45Z
- spaceheat.telemetry.name.000__VoltageRmsMilliVolts
VoltageRmsMilliVolts
rec2HyLffy6QK9QId
bb6fdd59
Voltage in Root Mean Square MilliVolts
9
001
+ spaceheat.telemetry.name.000__VoltageRmsMilliVolts
recTlCdO0J9hFlAfv
@@ -3738,137 +3991,160 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recTyArL6Li3xWPx4
2022-11-06T20:18:32Z
- g.node.role.000__World
World
recZB6uJDEaCzvTZX
3901c7d2
Adminstrative GNode responsible for managing and authorizing instances
7
000
+ https://gridworks.readthedocs.io/en/latest/world-role.html
+ g.node.role.000__World
recUbUSUjbSTDsCnD
2022-06-23T16:27:31Z
- local.comm.interface.000__I2C
I2C
rec7Ck8y72m0NytYa
9ec8bc49
1
000
+ local.comm.interface.000__I2C
recUtA3HI1KJ6BADP
2022-11-06T20:14:10Z
- g.node.role.000__PriceService
PriceService
recZB6uJDEaCzvTZX
2161739f
Provides price forecasts for markets run by MarketMakers
11
000
+ g.node.role.000__PriceService
recVBo0pAOd0H7NK7
2023-01-30T20:55:06Z
- __MultipurposeSensor
MultipurposeSensor
7c483ad0
7
+ __MultipurposeSensor
recVBvjU9QYshrQ7c
2022-11-29T13:50:03Z
- supervisor.container.status.000__Authorized
Authorized
recdH9n0oS3nRRWON
f48cff43
World has created the information for starting the container
1
0
+ supervisor.container.status.000__Authorized
+
+
+ recVP2uNFpOFanI2j
+ 2023-05-12T13:28:39Z
+ Hor
+ recM2pM6KPgGbqEe2
+ 6abfcdab
+ Also known as Global Horizontal Irradiance (GHI), this is the total solar radiation incident on a horizontal surface. It is the sum of Direct Normal Irradiance (DNI), Diffuse Horizontal Irradiance, and ground-reflected radiation
+ 1
+ 000
+ recognized.irradiance.type.000__Hor
recVVshv4AuJAbuyp
2022-08-01T12:19:47Z
- component.category.000__Load
Load
rec7qsokBmd2hN5vT
c8b4617d
+ component.category.000__Load
recWYzqc5sRK0ksAD
2022-11-08T22:21:38Z
- message.category.000__RestApiPostResponse
RestApiPostResponse
rec7pzii3dy9m3jCe
7cbba191
REST API post response
6
000
+ message.category.000__RestApiPostResponse
recWvHiwQvwKVnBgW
2022-10-30T22:57:15Z
- registry.g.node.role.000__Unknown
Unknown
rechRk6DjahLATrOI
00000000
0
rechRk6DjahLATrOI
000
+ registry.g.node.role.000__Unknown
recX4AWEX4SombnY3
2023-02-19T19:56:52Z
- spaceheat.telemetry.name.000__AirTempCTimes1000
AirTempCTimes1000
rec2HyLffy6QK9QId
0f627faa
Air temperature, in Degrees Celsius multiplied by 1000.
12
002
+ spaceheat.telemetry.name.000__AirTempCTimes1000
recX4LfgcX5340LCn
2022-08-02T13:49:12Z
- g.node.status.100__Pending
Pending
recqx4EqT3OFtnxTG
153d3475
The GNode exists but cannot be used yet.
1
100
+ g.node.status.100__Pending
recXi8PVkahKyMdi1
2022-11-06T20:13:09Z
- g.node.role.000__MarketMaker
MarketMaker
recZB6uJDEaCzvTZX
304890c5
Runs energy markets at its Node in the GNodeTree
3
000
+ https://gridworks.readthedocs.io/en/latest/market-maker.html
+ g.node.role.000__MarketMaker
recY1j4wZLAwwD5K5
2022-06-16T10:09:12Z
- spaceheat.unit.000__Fahrenheit
Fahrenheit
recc1W1unmzowrKX9
7d8832f8
4
000
+ spaceheat.unit.000__Fahrenheit
+
+
+ recY6HHhAS5y7TB48
+ 2023-06-26T15:43:55Z
+ VersantA20HeatTariff
+ rec4S3L3NZiPihbLi
+ 54aec3a7
+ Versant is a utility serving customers in Maine, and in particular serves much of the area behind the Keene Rd Constraint in the [GridWorks Millinocket Demo](https://gridworks.readthedocs.io/en/latest/millinocket-demo.html#background). This is an alternative tariff available for electric heat.
+ 3
+ distribution.tariff.000__VersantA20HeatTariff
recYLv2x2lR5rftCy
2022-06-14T10:26:48Z
- sh.node.role.000__CirculatorPump
CirculatorPump
recomGYBJ9ldSsiNU
b0eaf2ba
Circulator pump for one or more of the hydronic pipe loops
17
000
+ sh.node.role.000__CirculatorPump
recYQdLs0j1JI1fHH
@@ -3878,39 +4154,50 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recYZ4i0CenNHSN68
2022-08-30T18:05:14Z
- registry.g.node.role.000__GNodeRegistry
GNodeRegistry
rechRk6DjahLATrOI
63a78529
2
000
+ registry.g.node.role.000__GNodeRegistry
recYbBeH9CQoRciJA
2022-06-22T20:57:19Z
- spaceheat.make.model.000__SchneiderElectric__Iem3455
SchneiderElectric__Iem3455
recLQWqTvGwSz2GcN
d300635e
Schneider Electric IEM 344 utility meter
7
000
+ spaceheat.make.model.001__SchneiderElectric__Iem3455
+
+
+ recYch7I4D20ee78G
+ 2023-09-22T12:54:02Z
+ spaceheat.make.model.001__Fibaro__Analog_Temp_Sensor
+ recLQWqTvGwSz2GcN
+ 14
+ 001
+ Fibaro__Analog_Temp_Sensor
+ https://drive.google.com/drive/u/0/folders/1Muhsvw00goppHIfGSEmreX4hM6V78b-m
+ This enum refers to a Fibaro home automation device that has been configured in a specific way. This includes (1) being attached to two 10K NTC thermistors and a specific voltage divider circuit that specifies its temperature as a function of voltage and (2) one of its potential free outputs being in-line with the power of a partner Fibaro, so that it can power cycle its partner (because there are reports of Fibaros no longer reporting temp change after weeks or months until power cylced). The Fibaro itself is a tiny (29 X 18 X 13 mm) Z-Wave device powered on 9-30V DC that can read up to 6 1-wire DS18B20 temp sensors, 2 0-10V analog inputs and also has 2 potential free outputs.
+ 1f19839d
recYoDcnOm6YgiRz2
2022-06-14T10:31:46Z
- sh.node.role.000__TankWaterTempSensor
TankWaterTempSensor
recomGYBJ9ldSsiNU
73308a1f
A temperature sensor used for measuring temperature inside or on the immediate outside of a water tank.
8
000
+ sh.node.role.000__TankWaterTempSensor
recZ63BUBooCLKXku
2022-07-20T21:02:24Z
- sh.actor.class.001__SimpleSensor
SimpleSensor
recQeMNisJZjsYXTl
dae4b2f0
@@ -3918,11 +4205,32 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
6
000
https://gridworks-protocol.readthedocs.io/en/latest/simple-sensor.html
+ sh.actor.class.000__SimpleSensor
+
+
+ recZKpSeaBMKswWfh
+ 2023-05-10T11:11:10Z
+ AtnBrickStorageHeater
+ recyOOpe9zHor9FIY
+ b2a125d6
+ Publicly available Dijkstra-based AtomicTNode strategy for a brick storage
+ heater. These heaters are rooom units that store heat in a brick core, are
+ heated with resistive elements, and typically have a fan to blow air over the
+ brick core. They are sometimes called Electric Thermal Storage (ETS) heaters,
+ and in the UK are often called Economy 7 heaters or Night Storage Heaters.
+ A strategy very similar to this was used by VCharge to manage an ETS fleet
+ of several thousand heaters in Pennsylvania.
+ This strategy is meant to serve as a template for other private strategies,
+ and also allows for an end-to-end simulation of a realistic aggregated
+ transactive load capable of generating a highly elastic bid curve
+ [More Info](https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html)
+ 5
+ 001
+ strategy.name.001__AtnBrickStorageHeater
recZR3u3WuSGv96su
2022-10-25T12:11:23Z
- spaceheat.telemetry.name.000__Unknown
Unknown
rec2HyLffy6QK9QId
00000000
@@ -3930,64 +4238,64 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
rec2HyLffy6QK9QId
000
+ spaceheat.telemetry.name.000__Unknown
recZtUxi5Vm8mqODR
2022-06-14T10:33:00Z
- sh.node.role.000__RoomTempSensor
RoomTempSensor
recomGYBJ9ldSsiNU
fec74958
A temperature sensor used for measuring room temperature, or temp in a heated space more generally.
10
000
+ sh.node.role.000__RoomTempSensor
recZthcBSla9DrcCf
2022-11-08T22:27:22Z
- message.category.symbol.000__post
post
reclaO4DqpDmwPOIC
94329f30
REST API post
5
000
+ message.category.symbol.000__post
recaKzt7d2RW12fso
2022-11-08T22:27:21Z
- message.category.symbol.000__gw
gw
reclaO4DqpDmwPOIC
f36a8e69
Serialized Json message following MQTT topic format, sent on the world rabbit broker
4
000
+ message.category.symbol.000__gw
recaStmQ39S4Zsbza
2022-06-23T17:56:07Z
- local.comm.interface.000__Wifi
Wifi
rec7Ck8y72m0NytYa
46ac6589
6
000
+ local.comm.interface.000__Wifi
recaYTfkpFUTDvJQd
2022-12-02T23:45:40Z
- atn.spaceheat.strategy.name.000__SupervisorA
SupervisorA
recgq98LIAwVwgALk
28246f18
1
000
+ atn.spaceheat.strategy.name.000__SupervisorA
recaZld1o7mqNRDS9
2022-07-20T21:02:30Z
- sh.actor.class.001__NoActor
NoActor
recQeMNisJZjsYXTl
00000000
@@ -3995,80 +4303,81 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
recQeMNisJZjsYXTl
000
+ sh.actor.class.000__NoActor
recawk0tnuNgj0Vn2
2023-01-30T20:50:36Z
- sh.node.role.000__MultiChannelAnalogTempSensor
MultiChannelAnalogTempSensor
recomGYBJ9ldSsiNU
661d7e73
An analog multi channel temperature sensor
18
000
+ sh.node.role.000__MultiChannelAnalogTempSensor
recbUxpxV3qnYpYEA
2022-11-08T22:27:24Z
- message.category.symbol.000__get
get
reclaO4DqpDmwPOIC
8c36344a
REST API GET
7
000
+ message.category.symbol.000__get
recc1TC8wyNJUO4Vq
2022-07-20T21:02:34Z
- sh.actor.class.001__HomeAlone
HomeAlone
recQeMNisJZjsYXTl
32d3d19f
HomeAlone is an abstract Spaceheat Actor responsible for dispatching the SCADA when it is not talking with the AtomicTNode.
2
000
+ sh.actor.class.000__HomeAlone
reccY0eF2JadrVovu
2023-02-19T20:25:27Z
- spaceheat.unit.000__Gallons
Gallons
recc1W1unmzowrKX9
8e123a26
9
000
+ spaceheat.unit.000__Gallons
reccbyMtvH1trII7S
2022-08-02T13:49:35Z
- g.node.status.100__Active
Active
recqx4EqT3OFtnxTG
a2cfc2f7
The GNode can be used.
2
100
+ g.node.status.100__Active
recchYovfZl6dZtje
2022-12-02T17:35:55Z
- atn.spaceheat.strategy.name.000__HeatPumpWithBoostStore
HeatPumpWithBoostStore
recgq98LIAwVwgALk
68957d0c
2
000
+ atn.spaceheat.strategy.name.000__HeatPumpWithBoostStore
recdMV7TkDw8zFcf9
2022-11-08T03:47:37Z
- market.quantity.unit.000__AvgMW
AvgMW
recounhEj97w5SfDm
00000000
0
recounhEj97w5SfDm
+ market.quantity.unit.000__AvgMW
recdOoocJBLhxafev
@@ -4078,131 +4387,134 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recdWX5ZrS6f3KjcR
2022-06-14T10:26:50Z
- sh.node.role.000__DedicatedThermalStore
DedicatedThermalStore
recomGYBJ9ldSsiNU
3ecfe9b8
A dedicated thermal store within a thermal storage heating system - could be one or more water tanks, phase change material, etc.
7
000
+ sh.node.role.000__DedicatedThermalStore
recdZoU45YlNxDBUe
2022-11-07T22:57:50Z
- recognized.currency.unit.000__Unknown
Unknown
recA15Ak50x6bNMx1
00000000
0
recA15Ak50x6bNMx1
+ recognized.currency.unit.000__Unknown
rece6HBVLBiCaAQgw
2022-11-06T20:13:11Z
- g.node.role.000__InterconnectionComponent
InterconnectionComponent
recZB6uJDEaCzvTZX
fec0c127
An avatar for a cable or wire on the electric grid
6
000
+ g.node.role.000__InterconnectionComponent
rece9uqvosClHWLDu
2022-11-08T00:11:21Z
- energy.supply.type.000__RealtimeLocalLmp
RealtimeLocalLmp
recf9ZTshqRu81HZo
e9dc99a6
2
+ energy.supply.type.000__RealtimeLocalLmp
receKVsL3pT6iHkAW
2022-11-08T07:29:28Z
- g.node.role.000__TimeCoordinator
TimeCoordinator
recZB6uJDEaCzvTZX
c499943c
Responsible for managing time in simulations
8
000
+ g.node.role.000__TimeCoordinator
receT6Fp8JXN2GXQY
2022-11-08T05:20:38Z
- market.type.name.000__rt60gate30b
rt60gate30b
recZmZP13YV9Rmbnw
618f9c0a
Real-time energy, 30 minute MarketSlots, gate closing 5 minutes prior to start, QuantityUnit AvgkW
8
+ market.type.name.000__rt60gate30b
receYYuzekeRIuXHN
2022-06-14T10:33:09Z
- sh.node.role.000__OutdoorTempSensor
OutdoorTempSensor
recomGYBJ9ldSsiNU
5938bf1f
A temperature sensor used for measuring outdoor temperature.
11
000
+ sh.node.role.000__OutdoorTempSensor
recfW76lkiFHpOg3N
2022-11-07T22:56:55Z
- recognized.currency.unit.000__USD
USD
recA15Ak50x6bNMx1
e57c5143
US Dollar
1
+ recognized.currency.unit.000__USD
recgLuWiIpBnWvI8T
2022-06-03T18:27:35Z
- spaceheat.make.model.000__GridWorks__SimBool30AmpRelay
GridWorks__SimBool30AmpRelay
recLQWqTvGwSz2GcN
e81d74a8
Simulated relay
8
000
+ spaceheat.make.model.001__GridWorks__SimBool30AmpRelay
recgTxLB3WCMDRLJM
2022-11-07T22:56:58Z
- recognized.currency.unit.000__GBP
GBP
recA15Ak50x6bNMx1
f7b38fc5
Pounds sterling
2
+ recognized.currency.unit.000__GBP
recgphsceOlnshETa
2022-11-29T13:50:18Z
- supervisor.container.status.000__Running
Running
recdH9n0oS3nRRWON
cfde1b40
GNode actors in the container are active
4
0
+ supervisor.container.status.000__Running
rechQD0Jf8c5xaUzc
2022-11-08T00:17:08Z
- distribution.tariff.000__VersantATariff
VersantATariff
rec4S3L3NZiPihbLi
ea5c675a
+ Versant is a utility serving customers in Maine, and in particular serves much of the area behind the Keene Rd Constraint in the [GridWorks Millinocket Demo](https://gridworks.readthedocs.io/en/latest/millinocket-demo.html#background).
+
+The A Tariff is their standard residential tariff. Look for rate A in Versant
+[rate schedules](https://www.versantpower.com/residential/rates/rates-schedules/)
2
+ distribution.tariff.000__VersantATariff
rechaotHblmyukrn1
2022-11-08T22:27:16Z
- message.category.symbol.000__unknown
unknown
reclaO4DqpDmwPOIC
00000000
@@ -4210,27 +4522,29 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
reclaO4DqpDmwPOIC
000
+ message.category.symbol.000__unknown
rechjwPVSGfZctKi2
2022-12-02T23:47:08Z
- strategy.name.000__TcGlobalA
TcGlobalA
recyOOpe9zHor9FIY
73fbe6ab
- Basic GridWorks TimeCoordinator strategy, in [gridworks-timecoordinator repo](https://github.com/thegridelectric/gridworks-timecoordinator)
+ Used to manage the global time of the Gridworks system when run with\n in a fully simulated universe. \n
+[More on TimeCoordinators](https://gridworks.readthedocs.io/en/latest/time-coordinator.html)
3
000
+ strategy.name.001__TcGlobalA
rechyjciVYC2Y6FWo
2022-06-23T17:56:20Z
- local.comm.interface.000__SimRabbit
SimRabbit
rec7Ck8y72m0NytYa
efc144cd
5
000
+ local.comm.interface.000__SimRabbit
reciHv7JZpJJnIxuE
@@ -4240,20 +4554,32 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
reciyc2Iq5RQOs8kr
2022-08-02T20:13:18Z
- schema.status.000__Active
Active
recv25tG4mBjyVeMY
c88a914d
The Schema is active
+ schema.status.000__Active
recj7R1VzYtkQ3rX5
2023-01-12T15:34:36Z
- core.g.node.role.000__Scada
Scada
rec5HXPeyp3jic6FV
7a8e4046
7
+ core.g.node.role.000__Scada
+
+
+ recjCvwGoMdYArjAn
+ 2023-09-19T14:51:57Z
+ Hubitat__C7__LAN1
+ recLQWqTvGwSz2GcN
+ 12
+ spaceheat.make.model.001__Hubitat__C7__LAN1
+ 001
+ This refers to a Hubitat C7 that has been configured in a specific way with respect to the APIs it presents on the Local Area Network. The Hubitat C7 is a home automation hub that supports building ZigBee and ZWave meshes, plugs into Ethernet, has a reasonable user interface and has an active community of open-source developers who create drivers and package managers for devices, and supports the creation of various types of APIs on the Local Area Network.
+ 4d649420
+ https://drive.google.com/drive/folders/1AqAU_lC2phzuI9XRYvogiIYA7GXNtlr6
recjNfJcxYnUKiUDD
@@ -4263,7 +4589,6 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recjYW279ZYaQS7lV
2022-07-20T17:31:33Z
- spaceheat.make.model.000__Egauge__4030
Egauge__4030
recLQWqTvGwSz2GcN
beb6d3fb
@@ -4271,11 +4596,11 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
1
000
https://store.egauge.net/meters
+ spaceheat.make.model.001__Egauge__4030
recjlLyMGMXYaff8w
2022-11-08T21:53:23Z
- message.category.000__Unknown
Unknown
rec7pzii3dy9m3jCe
00000000
@@ -4283,43 +4608,43 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
rec7pzii3dy9m3jCe
000
+ message.category.000__Unknown
reclMrRIA4ISmRw6t
2022-08-02T17:21:40Z
- core.g.node.role.000__Other
Other
rec5HXPeyp3jic6FV
00000000
0
rec5HXPeyp3jic6FV
0
+ core.g.node.role.000__Other
reclNE5ipPSnw0kaZ
2022-11-06T20:14:12Z
- g.node.role.000__WeatherService
WeatherService
recZB6uJDEaCzvTZX
1dce1efd
Provides weather forecasts
12
000
+ g.node.role.000__WeatherService
reclSgYLAFa1ll8vp
2022-11-08T00:11:14Z
- energy.supply.type.000__Unknown
Unknown
recf9ZTshqRu81HZo
00000000
0
recf9ZTshqRu81HZo
+ energy.supply.type.000__Unknown
reclVQqsN9eKLnIFs
2022-06-14T10:26:43Z
- sh.node.role.000__BooleanActuator
BooleanActuator
recomGYBJ9ldSsiNU
57b788ee
@@ -4327,21 +4652,21 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
6
000
+ sh.node.role.000__BooleanActuator
reclgi3dCrOboE4Dn
2022-11-09T19:38:44Z
- universe.type.000__Hybrid
Hybrid
recPvHsXzCenxLa7v
8281a0fa
Anything goes.
1
+ universe.type.000__Hybrid
recljcVVnRh9ne2dH
2022-06-03T18:27:38Z
- spaceheat.make.model.000__Adafruit__642
Adafruit__642
recLQWqTvGwSz2GcN
acd93fb3
@@ -4349,22 +4674,22 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
3
000
https://www.adafruit.com/product/642
+ spaceheat.make.model.001__Adafruit__642
reclpWTi7clJae05G
2023-01-28T13:55:32Z
- spaceheat.make.model.000__GridWorks__TSnap1
GridWorks__TSnap1
recLQWqTvGwSz2GcN
d0178dc3
Actual GridWorks TSnap 1.0 SCADA Box
4
000
+ spaceheat.make.model.001__GridWorks__TSnap1
recm2rIwNRJUR8CCY
2023-01-06T03:08:20Z
- algo.cert.type.000__ASA
ASA
recCQyaQ1Oq0MlT20
00000000
@@ -4372,54 +4697,54 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
recCQyaQ1Oq0MlT20
000
+ algo.cert.type.000__ASA
recmK3fpzdj9xCe10
2022-06-14T10:26:45Z
- sh.node.role.000__Atn
Atn
recomGYBJ9ldSsiNU
6ddff83b
AtomicTNode
3
000
+ sh.node.role.000__Atn
recmRfADiN3nxZR8U
2022-11-08T04:21:43Z
- market.type.name.000__da60
da60
recZmZP13YV9Rmbnw
94a3fe9b
Day-ahead energy, 60 minute MarketSlots
3
+ market.type.name.000__da60
recmVztwGfJf1x2ba
2022-11-08T21:53:53Z
- message.category.000__MqttJsonBroadcast
MqttJsonBroadcast
rec7pzii3dy9m3jCe
16594e91
Serialized Json message following MQTT topic format, sent on the world rabbit broker
4
000
+ message.category.000__MqttJsonBroadcast
recmcoCNDhq8Dknn5
2022-12-02T17:36:00Z
- atn.spaceheat.strategy.name.000__NoActor
NoActor
recgq98LIAwVwgALk
00000000
0
recgq98LIAwVwgALk
000
+ atn.spaceheat.strategy.name.000__NoActor
recmkdghA4yolcvkz
2022-10-30T22:58:32Z
- g.node.status.100__Unknown
Unknown
recqx4EqT3OFtnxTG
00000000
@@ -4427,92 +4752,93 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
recqx4EqT3OFtnxTG
100
+ g.node.status.100__Unknown
recmlXyeV4QRYx0Vp
2022-11-08T00:18:23Z
- emitter.pump.feedback.model.000__ConstantGpm
ConstantGpm
rec57bh9xoIxLUHjY
f6bde4fa
1
+ sh.dist.pump.feedback.model.000__ConstantGpm
recmvMaXSyZBYlpNZ
2022-11-08T00:17:00Z
- distribution.tariff.000__Unknown
Unknown
rec4S3L3NZiPihbLi
00000000
0
rec4S3L3NZiPihbLi
+ distribution.tariff.000__Unknown
recn6a7ywzaeer0hr
2022-06-14T11:15:37Z
- sh.node.role.000__HomeAlone
HomeAlone
recomGYBJ9ldSsiNU
863e50d1
HomeAlone GNode
2
000
+ sh.node.role.000__HomeAlone
recnC6OKNs1p2giG9
2023-02-16T22:43:16Z
- spaceheat.make.model.000__Atlas__EzFlo
Atlas__EzFlo
recLQWqTvGwSz2GcN
d0b0e375
Atlas Scientific EZO Embedded Flow Meter Totalizer, pulse to I2C
- 13
+ 11
000
https://drive.google.com/drive/u/0/folders/142bBV1pQIbMpyIR_0iRUr5gnzWgknOJp
+ spaceheat.make.model.001__Atlas__EzFlo
recnn8MUgeat2N88w
2022-11-29T13:50:26Z
- supervisor.container.status.000__Stopped
Stopped
recdH9n0oS3nRRWON
4e28b6ae
Stopped
5
0
+ supervisor.container.status.000__Stopped
recnnxKBRYfc7uy2Q
2022-11-29T13:46:36Z
- gni.status.000__Done
Done
recWX07Mlzf8djb6q
8222421f
No longer represents the GNode.
3
0
+ gni.status.000__Done
reco5WtUl0pdbMf5Z
2022-11-08T04:21:30Z
- market.type.name.000__unknown
unknown
recZmZP13YV9Rmbnw
00000000
Default unknown
0
recZmZP13YV9Rmbnw
+ market.type.name.000__unknown
reco9UaGyf9bBkYcs
2022-06-23T16:28:15Z
- local.comm.interface.000__Unknown
Unknown
rec7Ck8y72m0NytYa
00000000
0
rec7Ck8y72m0NytYa
000
+ local.comm.interface.000__Unknown
recoKzrtmctoaOq0s
@@ -4522,82 +4848,94 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recoNR7leouxWteyP
2022-06-20T11:27:43Z
- __SimpleSensor
SimpleSensor
dae4b2f0
5
+ __SimpleSensor
recoQaLaEtnGeQcwe
2022-06-16T10:09:48Z
- spaceheat.unit.000__W
W
recc1W1unmzowrKX9
f459a9c3
2
000
+ spaceheat.unit.000__W
recoY9rsnB3AThC5M
2022-08-02T17:20:22Z
- core.g.node.role.000__MarketMaker
MarketMaker
rec5HXPeyp3jic6FV
86f21dd2
3
0
+ core.g.node.role.000__MarketMaker
recob3YuE614ND3hl
2022-06-03T21:55:39Z
- __Actuator
Actuator
9f13e13e
+ __Actuator
reconXBspv9L7OQqS
2022-08-01T12:19:26Z
- component.category.000__Battery
Battery
rec7qsokBmd2hN5vT
f8b0cb6d
+ component.category.000__Battery
+
+
+ recpHGTkKtzs36Fvw
+ 2023-09-07T20:00:07Z
+ GridWorks__Tank_Module_1
+ recLQWqTvGwSz2GcN
+ This refers to a small module designed and assembled by GridWorks that is meant to be mounted to the side of a hot water tank. It requires 24V DC and has 4 temperature sensors coming out of it labeled 1, 2, 3 and 4. It is meant to provide temperature readings (taken within a half a second of each other) of all 4 of its sensors once a minute.
+ 13
+ 001
+ spaceheat.make.model.001__GridWorks__Tank_Module_1
+ bd759051
+ https://drive.google.com/drive/folders/1GSxDd8Naf1GKK_fSOgQU933M1UcJ4r8q
recpYjsB7MUcXP7TS
2022-06-23T17:55:57Z
- local.comm.interface.000__Ethernet
Ethernet
rec7Ck8y72m0NytYa
c1e7a955
2
000
+ local.comm.interface.000__Ethernet
recq3XELpgNTZptBh
2022-06-03T22:00:28Z
- __DedicatedThermalStore
DedicatedThermalStore
0ed56a13
+ __DedicatedThermalStore
recqLabDaSMQ5uIPL
2022-06-03T22:00:36Z
- __HydronicPipe
HydronicPipe
d9d8f7e1
+ __HydronicPipe
+ itrrXEIStZn65gqTP/recqLabDaSMQ5uIPL
recqZ8LSzlPWUPcKF
2022-08-01T12:19:44Z
- component.category.000__Interconnector
Interconnector
rec7qsokBmd2hN5vT
b9e298b7
+ component.category.000__Interconnector
recqfo3DV2CZigvn5
2022-06-03T18:27:23Z
- spaceheat.make.model.000__NCD__PR8-14-SPST
NCD__PR8-14-SPST
recLQWqTvGwSz2GcN
fabfa505
@@ -4605,17 +4943,18 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
2
000
https://store.ncd.io/product/4-channel-high-power-relay-controller-4-gpio-with-i2c-interface/?attribute_pa_choose-a-relay=20-amp-spdt
+ spaceheat.make.model.001__NCD__PR8-14-SPST
recqfsKuobhERLH1d
2022-06-03T18:27:48Z
- spaceheat.make.model.000__UnknownMake__UnknownModel
UnknownMake__UnknownModel
recLQWqTvGwSz2GcN
00000000
0
recLQWqTvGwSz2GcN
000
+ spaceheat.make.model.001__UnknownMake__UnknownModel
recqprhPirKuBPI9O
@@ -4625,162 +4964,150 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recriuBbhyDgwz6U3
2022-06-03T22:01:12Z
- __Sensor
Sensor
aec254fd
+ __Sensor
recrqYsXVPagMEhO3
2022-11-09T19:38:42Z
- universe.type.000__Dev
Dev
recPvHsXzCenxLa7v
00000000
Simulation running on a single computer.
0
recPvHsXzCenxLa7v
+ universe.type.000__Dev
recsRZi1bpgYSIj81
2023-01-08T12:44:45Z
- universe.type.000__Production
Production
recPvHsXzCenxLa7v
b0168bda
Money at stake.
2
+ universe.type.000__Production
recsXsCs2syjI8IBg
2022-06-20T11:31:37Z
- __NoActor
NoActor
99a5f20d
6
+ __NoActor
- itrXUA84T0mWm2ABX/recsXsCs2syjI8IBg
recseefFsB6BWwTQj
2022-06-23T16:27:43Z
- local.comm.interface.000__OneWire
OneWire
rec7Ck8y72m0NytYa
ae2d4cd8
3
000
-
-
- recsgSJKZIgLynrjL
- 2023-04-10T11:14:08Z
- sh.actor.class.001__Relay
- Relay
- recQeMNisJZjsYXTl
- 311835f6
- A SpaceheatNode representing an electric relay
- 9
- 001
+ local.comm.interface.000__OneWire
rectV4strhNnQayZ6
2022-11-29T13:50:51Z
- supervisor.container.status.000__Deleted
Deleted
recdH9n0oS3nRRWON
da2dafe0
Deleted
6
0
+ supervisor.container.status.000__Deleted
rectW0RYQ9V3zy3cY
2022-08-30T18:05:16Z
- registry.g.node.role.000__GridWorks
GridWorks
rechRk6DjahLATrOI
f0f14c88
5
000
+ registry.g.node.role.000__GridWorks
rectpVbb3vrmCp4X9
2022-08-02T20:13:15Z
- schema.status.000__Pending
Pending
recv25tG4mBjyVeMY
3661506b
The Schema is under construction and not yet stabilized. Should not be sent or recognized in non-dev scenarios.
+ schema.status.000__Pending
rectuuZ31wlxmkduh
2022-06-03T22:00:17Z
- __CirculatorPump
CirculatorPump
5247fc8e
+ __CirculatorPump
rectyLwNNQRCXsJnR
2022-11-08T00:18:19Z
- emitter.pump.feedback.model.000__ConstantDeltaT
ConstantDeltaT
rec57bh9xoIxLUHjY
00000000
0
rec57bh9xoIxLUHjY
+ sh.dist.pump.feedback.model.000__ConstantDeltaT
recuDHqYzSnUGgaOA
2022-09-26T23:46:46Z
- g.node.status.100__Suspended
Suspended
recqx4EqT3OFtnxTG
f5831e1d
The GNode cannot be used, but may become active in the future.
4
100
+ g.node.status.100__Suspended
recuFrnfEo5wsUKx9
2023-02-27T11:04:45Z
- g.node.role.000__Persister
Persister
recZB6uJDEaCzvTZX
07f28817
Responsible for acking events with delivery guarantees
14
001
+ g.node.role.000__Persister
recuFvwowZiXB8M1w
2022-06-14T10:27:00Z
- sh.node.role.000__Outdoors
Outdoors
recomGYBJ9ldSsiNU
dd975b31
The outdoors
19
000
+ sh.node.role.000__Outdoors
recuWBQ06IQsYr0or
2022-11-08T22:27:23Z
- message.category.symbol.000__postack
postack
reclaO4DqpDmwPOIC
9fc1b9d4
REST API post response
6
000
+ message.category.symbol.000__postack
recue7CvgzoOvpWSK
2022-11-06T20:13:06Z
- g.node.role.000__AtomicMeteringNode
AtomicMeteringNode
recZB6uJDEaCzvTZX
8eb5b9e1
Role of a GNode that will become an AtomicTNode, prior to it owning TaTradingRights
4
000
+ g.node.role.000__AtomicMeteringNode
recuqtE7oCqQ18OKh
@@ -4790,34 +5117,34 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recuzlYpywiv3imR3
2022-11-08T00:15:42Z
- mixing.valve.feedback.model.000__ConstantSwt
ConstantSwt
recX0A9nSriRUvl9n
00000000
Constant Source Water Temp
0
recX0A9nSriRUvl9n
+ sh.mixing.valve.feedback.model.000__ConstantSwt
recvNW0XMWSQSZEGn
2022-09-20T23:06:23Z
- core.g.node.role.000__AtomicMeteringNode
AtomicMeteringNode
rec5HXPeyp3jic6FV
9521af06
4
0
+ core.g.node.role.000__AtomicMeteringNode
recvW004kIKJFfD0A
2022-06-22T22:00:59Z
- spaceheat.telemetry.name.000__CurrentRmsMicroAmps
CurrentRmsMicroAmps
rec2HyLffy6QK9QId
ad19e79c
Current measurement in Root Mean Square MicroAmps
6
000
+ spaceheat.telemetry.name.000__CurrentRmsMicroAmps
recxJWgFKGYJ6tUYk
@@ -4827,18 +5154,17 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recy5LK2PQpxG2nBl
2022-07-20T21:02:22Z
- sh.actor.class.001__Scada
Scada
recQeMNisJZjsYXTl
6d37aa41
The SCADA actor is the prime piece of code running and supervising other ProActors within the SCADA code. It is also responsible for managing the state of TalkingWith the AtomicTNode, as well maintaining and reporting a boolean state variable that indicates whether it is following dispatch commands from the AtomicTNode XOR following dispatch commands from its own HomeAlone actor.
1
000
+ sh.actor.class.000__Scada
recyHL0VJtn5jmtIW
2022-07-20T21:02:18Z
- sh.actor.class.001__PowerMeter
PowerMeter
recQeMNisJZjsYXTl
2ea112b9
@@ -4846,53 +5172,53 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
4
000
https://gridworks.readthedocs.io/en/latest/terminal-asset.html
+ sh.actor.class.000__PowerMeter
recyNnqxvxbEGLzhG
2022-11-08T22:21:38Z
- message.category.000__RestApiGet
RestApiGet
rec7pzii3dy9m3jCe
167236a6
REST API GET
7
000
+ message.category.000__RestApiGet
recyO1LPQqlZeZX7v
2022-11-08T21:53:54Z
- message.category.000__RestApiPost
RestApiPost
rec7pzii3dy9m3jCe
5b2c69cb
REST API post
5
000
+ message.category.000__RestApiPost
recyOP19Dh8Ldz3q1
2022-06-23T16:10:54Z
- local.comm.interface.000__RS485
RS485
rec7Ck8y72m0NytYa
a6a4ac9f
4
000
+ local.comm.interface.000__RS485
recyROVELbss084Dl
2022-06-16T10:09:53Z
- spaceheat.unit.000__Unitless
Unitless
recc1W1unmzowrKX9
ec972387
1
000
+ spaceheat.unit.000__Unitless
recyZNh6DHD8cSQJs
2022-11-06T20:13:04Z
- g.node.role.000__GNode
GNode
recZB6uJDEaCzvTZX
00000000
@@ -4900,228 +5226,298 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
0
recZB6uJDEaCzvTZX
000
+ g.node.role.000__GNode
reczQc8UjfHLBjqBM
2022-11-08T03:49:14Z
- market.price.unit.000__USDPerMWh
USDPerMWh
rec75xMuw0SMkzjVc
00000000
0
rec75xMuw0SMkzjVc
+ market.price.unit.000__USDPerMWh
recXGRmBBB6Pch163
2022-11-08T16:35:22Z
- recXoGg7l3r7ZG6Em
recjpCj1MoKBvlAbR
+ recXoGg7l3r7ZG6Em
+ atomictnode
+ ready
+ timecoordinator
atomictnode sends ready to timecoordinator
AtomicTNode
- atomictnode
TimeCoordinator
- timecoordinator
- ready
rec0ASFtYgDm4fTf8
2022-07-05T11:32:40Z
- 100
+ gt.dispatch.boolean.local.100
+ Active
+ Json
recnqelpRWYmV8MJR
recWSgdPQdB9dVyux
recDMDjJ0WR1xxx1F
recNpHoc7bhC32M0w
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recoAsAg06Qp7jYp3
- Pending
- gt.dispatch.boolean.local.100
- Active
- Json
+ 100
1
By Locally, this means sent without access to Internet. The HomeAlone actor must reside within the Local Area Network of the SCADA - typically it should reside on the same hardware.
+ recoAsAg06Qp7jYp3
gt.dispatch.boolean.local
110
0
Deprecated
true
+ Pending
Dispatch message sent locally by SCADA HomeAlone actor
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
+
rec1SFXYQUXElpeJ9
2022-09-19T15:06:51Z
- 000
- recBje3quNXHrsP6j
- recbR8wOIppFVic94
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- rec0dMwyxvm5Cx9Hu
- Active
- recxtr4LhX2Ixojmg
- rec49oZw87DHVaGGI
- recnvClBEU4WU5lOe
- recDXr4RoTH1jDsXd
- recKmoKIL8lpLdK2U
- rech3zpojTnscbsH1
tavalidatorcert.algo.transfer.000
Active
Json
+ recBje3quNXHrsP6j
+ recbR8wOIppFVic94
+ 000
1
Meant to be sent from a pending TaValidator to the GNodeFactory (Gnf), so the
Gnf will transfer its ValidatorCert to the pending TaValidator's Algorand address.
+ rec0dMwyxvm5Cx9Hu
tavalidatorcert.algo.transfer
000
1
Active
+ rec49oZw87DHVaGGI
+ recHLWHk24N98yrP7
+ Active
Used for Step 2 of TaValidator certification
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ recDXr4RoTH1jDsXd
+ recKmoKIL8lpLdK2U
+ rech3zpojTnscbsH1
https://gridworks.readthedocs.io/en/latest/ta-validator.html
gnf
- gridworks
gwatn
+
+
+
+ rec2EA0TG0Xexi6wg
+ 2023-06-25T20:39:19Z
+ flo.params.simpleresistivehydronic.000
+ Active
+ Json
+ recIi1kb6LxzOzv0b
+ recaSQiyOGuk96R75
+ recWqq69qS32BdECG
+ recKxC93PtWwHMzJH
+ recXHPMn2CQMzlXo9
+ recx6o26hYbiat65H
+ recSCjwZxVDm5pFH3
+ rec1cSvPeCnzzPlFy
+ recHWv6Qz6hTlMPqx
+ recSeEWijLqaBvnqw
+ recYiAHa33V7Jj2dv
+ recOlYQO9t0ZKGfmx
+ recSmAhe1VTBToaSK
+ rechmXzZK0wqTOIni
+ receQEqkX185ZTnZn
+ reczdvUXsC5uzxqIB
+ recvYmJjkD1Dzzbqk
+ recTLZwyC5fS4xZs4
+ recq5rPWC2xxTWzj7
+ recAaVjjsT4dYXHxM
+ rec2FA57487tkIrdH
+ recwxuYDEnWFeLJKI
+ recjTlFd94m2QsbZy
+ reccuXB02dnW4Wl6y
+ recBsPcptVebBzkn2
+ recVS4wdbtDR3UsJO
+ recR3pGEgjTTT914k
+ recWw9MgX8ZXkyRii
+ recYYjWL9c3xnsGSk
+ recgPfLVLuHQ0esKS
+ rec6J08ESPo5dbR8t
+ recDgwmeLksJ4L46f
+ recOaBXisU25ozsU1
+ recEzoM8c1xB0qzmp
+ recnvahTKBIHt4BTW
+ recA15Ak50x6bNMx1
+ rec4S3L3NZiPihbLi
+ recf9ZTshqRu81HZo
+ 000
+
+
+
+ 1
+ recJEHz9XprAIplqG
+ flo.params.simpleresistivehydronic
+ 000
+ 1
+ Pending
+
+ recjmLBzSO8k29I9e
+ Pending
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ gwatn
+
rec2V7vc3NDSaRb1D
2022-05-11T18:08:26Z
- 100
- recx4EL5mDebUhtzp
gt.telemetry.100
Active
Json
+ 100
1
+ recx4EL5mDebUhtzp
gt.telemetry
110
0
Deprecated
true
+
rec2m06PsjtFd0cfu
2022-07-10T12:48:52Z
- 000
+ resistive.heater.cac.gt.000
+ Active
+ Json
recl7m0jNXQLR5SZu
rec1nhmaOdYNQmXTy
recKdVPFQyTt95V3Y
recRjhyzbBd693UU7
recHZBCEFTBrFubo9
- rec24qjC90m0f4Kvl
- recqmA1Cu9GIg4hpp
- Active
recLQWqTvGwSz2GcN
- recuqYXBpW9rcXrKC
- recCuch3XtEssNGuu
- recRONwOhclu8u3Ef
- ComponentAttributeClassId
- resistive.heater.cac.gt.000
- Active
- Json
+ 000
true
ResistiveHeaterCac
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ recqmA1Cu9GIg4hpp
resistive.heater.cac.gt
000
1
Active
+ recuqYXBpW9rcXrKC
+ recCuch3XtEssNGuu
+ recRONwOhclu8u3Ef
+ ComponentAttributeClassId
+ Active
Type for tracking Resistive Heater ComponentAttributeClasses
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
newatn
scada
gwproto
+
rec2qJdOZXwT9U5UP
2022-09-30T19:08:40Z
- 000
+ signandsubmit.mtx.algo.000
+ Deprecated
+ Json
recSsJxTMJFhAidWC
recXgOcojFyG3Ftr6
recpwKIE1g7BN8jGg
recCMCD6fLQzuN9RA
- recEoebL6fHn6xzXL
- Pending
- signandsubmit.mtx.algo.000
- Deprecated
- Json
+ 000
1
+ recEoebL6fHn6xzXL
signandsubmit.mtx.algo
000
1
Deprecated
+ Pending
+
rec3EIGuvfybwwFOK
2023-03-25T23:00:03Z
- 000
- recuSkupIk5cS8BGw
- recjFoqZkvOjg0VXc
- Active
- recnQycM6WlPw1K0f
power.watts.000
Active
Json
-
+ recuSkupIk5cS8BGw
+ 000
+
1
Used by a SCADA -> Atn or Atn -> AggregatedTNode to report real-time power of their TerminalAsset. Positive number means WITHDRAWAL from the grid - so generating electricity creates a negative number. This message is considered worse than useless to send after the first attempt, and does not require an ack.
Shares the same purpose as gs.pwr, but is not designed to minimize bytes so comes in JSON format.
+ recjFoqZkvOjg0VXc
power.watts
000
1
Active
+ recnQycM6WlPw1K0f
+ Active
Real-time power of TerminalAsset in Watts.
gwproto
+
rec3H5b04RB2vmYrk
2022-11-17T06:07:58Z
- 000
- recbWq8Ueg7KgQie0
- recRwEFucyvVZaXY2
- rec3iTEohsap8GRP8
- Pending
- rec75xMuw0SMkzjVc
- recPkFr8lDBRTXq08
market.price.000
Active
Json
+ recbWq8Ueg7KgQie0
+ recRwEFucyvVZaXY2
+ rec75xMuw0SMkzjVc
+ 000
1
+ rec3iTEohsap8GRP8
market.price
000
1
Pending
+ recPkFr8lDBRTXq08
+ Pending
gwmm
+
rec3Noy3m1X4Vdly9
2022-06-04T19:21:25Z
- 000
+ simple.temp.sensor.cac.gt.000
+ Active
+ Json
recUgsnOcEMiKpYMF
recRTTglTWqlyAaQW
rec83s8fct15feQXU
@@ -5130,85 +5526,78 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recL9BeJniQtSOgyV
recqGEAWc6ioKwYCv
rec1TiEjRVAsU1G6T
- rec24qjC90m0f4Kvl
- recrNYtQoRa7YhqI4
- Active
recLQWqTvGwSz2GcN
recc1W1unmzowrKX9
rec2HyLffy6QK9QId
- rec1WZNSLK8X3RGoh
- recx6S4XffM5RzxKe
- ComponentAttributeClassId
- simple.temp.sensor.cac.gt.000
- Active
- Json
+ 000
true
SimpleTempSensorCac
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ recrNYtQoRa7YhqI4
simple.temp.sensor.cac.gt
000
1
Active
+ rec1WZNSLK8X3RGoh
+ recx6S4XffM5RzxKe
+ ComponentAttributeClassId
+ Active
Type for tracking Simple Temp Sensor ComponentAttributeClasses
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
scada
gwproto
+
rec3fLb6b0gIeuCTO
2022-11-11T00:45:45Z
- 000
+ atn.params.report.000
+ Active
+ Json
recWvVApidAuVFsAP
recwWl6qWsyeh76o4
receaI7kIGQr97TD5
recNujglYpalkIIRN
reciDBLc8MRRJUFnC
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- rec13dujLuXXSf5L3
- recNgGDYcengufuFe
- Pending
- recfsDYNRW0af16Ol
- recOoCg1T2rOplTJT
- atn.params.report.heatpumpwithbooststore.000
- Active
- Json
+ recFFrCFMIAqvoz8H
+ 000
1
Parameters like the size of the thermal store.
- atn.params.report.heatpumpwithbooststore
+ recNgGDYcengufuFe
+ atn.params.report
000
1
- Pending
+ Active
+ recOoCg1T2rOplTJT
+ Active
AtomicTNode reporting its AtnParams
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ rec13dujLuXXSf5L3
gwatn
- satn
+
rec3kcgktiHCBYpA4
2023-01-16T17:34:18Z
- 000
+ dispatch.contract.confirmed.000
+ Active
+ Json
reciX75GU6FOPxifV
recSy6tRXV5XRsb7i
rec5xtm1Bu9kG4GaK
recAw8J1ipB7Ef1SZ
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recvbnpa4cX2nNp9p
- reczIxfEiJFKQYsNw
- Pending
- recurndoUQt30tVFv
- recDIPWhldlUQVNYr
- dispatch.contract.confirmed.heatpumpwithbooststore.000
- Active
- Json
+ recLnHXHBgC0FTXR0
+ 000
@@ -5219,19 +5608,58 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
to collect audit information about heartbeats, dispatch, energy and power.
https://gridworks.readthedocs.io/en/latest/dispatch-contract.html
- dispatch.contract.confirmed.heatpumpwithbooststore
+ reczIxfEiJFKQYsNw
+ dispatch.contract.confirmed
000
1
- Pending
+ Active
+ recDIPWhldlUQVNYr
+ Active
Message sent from AtomicTNode back to SCADA via Rabbit
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recvbnpa4cX2nNp9p
+ recy2Ozo32rIJuZcl
gwatn
- satn
+
+
+
+ rec4yUxGiLZpqWQqb
+ 2023-04-30T18:10:15Z
+ atn.params.000
+ Active
+ Json
+ recqDBnMUrFKhR7xh
+ rec7YRRBTA86B1MVU
+ recwlNYE7g30gSHqZ
+ recAw8J1ipB7Ef1SZ
+ recNujglYpalkIIRN
+ 000
+
+
+
+ 1
+ This is a partial type, which is expected to be satisfied by all types starting with atn.params (like atn.params.heatpumpwithbooststore). It is used to describe the generic info required for configuring an AtomicTNode.
+ recGoMNEoqUIuEXwz
+ atn.params
+ 000
+ 1
+ Active
+
+ recQZBqdNBFdbHYdk
+ Active
+ Generic AtnParams
+ recb9fI4kRkTYXDzA
+ gwatn
+ true
rec5bEVzI1k5qcXYg
2022-09-21T16:38:24Z
- 000
+ discoverycert.algo.create.000
+ Active
+ Json
rec4BpH0P9FNwZJqs
recPrU0RlBfIouTuN
recWtBipbdRHF9uJs
@@ -5239,164 +5667,179 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recoyYXXZBRG1ipPM
recVUltfFpgKkEKR0
recGSAil9ULCQw1S1
- recb9fI4kRkTYXDzA
- recopFBsq4TmG87Op
- recEfMvX9DPwXpcJ3
- Pending
rec5HXPeyp3jic6FV
- recAJ6AYNLdBZ7XfK
- recs6Jf8auLqC5z1T
- discoverycert.algo.create.000
- Active
- Json
+ 000
1
+ recEfMvX9DPwXpcJ3
discoverycert.algo.create
000
1
- Pending
+ Active
+ recAJ6AYNLdBZ7XfK
+ recs6Jf8auLqC5z1T
+ Active
+ recb9fI4kRkTYXDzA
+ recopFBsq4TmG87Op
gnf
gwatn
+
rec70ndc2atifo8Ri
2022-09-21T11:36:19Z
- 000
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recmRa74R0GAk0PKx
- Pending
- reccfgO8fAUzT3J2W
- recD9RSdxZFlCh0nV
basegnode.marketmaker.create.000
Active
Json
+ 000
1
+ recmRa74R0GAk0PKx
basegnode.marketmaker.create
000
1
Pending
+ reccfgO8fAUzT3J2W
+ recD9RSdxZFlCh0nV
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gnf
gnr
+
rec7aaxWBgMiALe49
2023-02-20T13:59:13Z
- 000
- recXYWcQiauWoeify
- recTkA12JINIgGcXq
- rec15cMarXKQ9TAEw
- Pending
gridworks.event.gt.sh.status.000
Active
Json
+ recXYWcQiauWoeify
+ recTkA12JINIgGcXq
+ 000
1
+ rec15cMarXKQ9TAEw
gridworks.event.gt.sh.status
000
1
Pending
true
+ Pending
+
rec7peRuDqMNa0vlW
2022-11-07T20:20:45Z
- 000
+ sim.timestep.000
+ Active
+ Json
recbSsyPYfoVza9CX
recmqSV7XbS4h2ys6
recKC523HTZfmLKCA
recvEZ0oKpVYcIXNN
recU7a6o1lmKrFeWj
+ 000
+
+
+
+ 1
+ For simulated actors, time progresses discretely on receipt of these time steps.
+ rec1gy4a9zTVXe420
+ sim.timestep
+ 000
+ 1
+ Active
+
+ recrPfgjVyVAXVJ3k
+ Active
+ rec5d0mwIHTTqYjC8
+ Sent by TimeCoordinators to coordinate time
recb9fI4kRkTYXDzA
rec24qjC90m0f4Kvl
rec13dujLuXXSf5L3
recqSXVzLo8RtEjlH
- rec1gy4a9zTVXe420
- Pending
- rec5d0mwIHTTqYjC8
- recuetPMCxsDyU0R4
- reccuFJPlMliv6yW8
- recOVsu1AQ1nyhMTN
- recrPfgjVyVAXVJ3k
- reciXeCa9g1WrIc02
- sim.timestep.000
+ gridworks
+
+
+
+ rec8IDXjSvdhHGds4
+ 2023-05-01T22:02:02Z
+ simplesim.driver.data.000
Active
Json
+ recWfVfIe5SaVyrD2
+ recCTlz2ZI9XsPdtX
+ 000
1
- For simulated actors, time progresses discretely on receipt of these time steps.
- sim.timestep
+ recedgBdJvQBnspbO
+ simplesim.driver.data
000
1
- Pending
+ Active
- Sent by TimeCoordinators to coordinate time
+ recCWJPidn8ABRVgU
+ Active
+ Generic driver report for a simple Scada Simulation
+ recb9fI4kRkTYXDzA
gwatn
- gwtime
- gwmm
- gridworks
- gworld
+ true
rec8ILTteHhn4MpGd
2022-11-02T12:51:38Z
- 000
+ basegnodes.get.000
+ Active
+ Json
rec4j6ntpGttspb5O
recZVxZMDqON9vDkN
recdbLbodkd8hei4G
rec6erTuD9iej4cpC
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- reccsb7VI48EdWlGk
- Pending
- rec2QIaMX8gSssv7M
- recs8N9wVyonAKE8y
- basegnodes.get.000
- Active
- Json
+ 000
1
+ reccsb7VI48EdWlGk
basegnodes.get
000
1
Pending
+ rec2QIaMX8gSssv7M
+ recs8N9wVyonAKE8y
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gnf
gnr
+
rec8c4KjhwNmfrRYP
2022-07-03T22:15:16Z
- 100
+ gt.sh.simple.telemetry.status.100
+ Active
+ Json
recpnxWC9ATaBFzMB
recjuJ8RaGljvo9ZZ
rec0SCL5wm4k2QtCO
recgVLpaOczJX5BCi
- recqSXVzLo8RtEjlH
- recb9fI4kRkTYXDzA
- recwcEF6jm0pivW8K
recOWeL6PoLldCrop
recBtrSRyxjOXp8aA
- Active
rec2HyLffy6QK9QId
- recU7kqqWFDEW9g7n
- recXMf6hlVg265ccL
- gt.sh.simple.telemetry.status.100
- Active
- Json
+ 100
@@ -5405,19 +5848,28 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
message sent from the SCADA to its AtomicTNode typically once every 5 minutes. The nth
element of each of its two lists refer to the same reading (i.e. what the value is,
when it was read).
+ recwcEF6jm0pivW8K
gt.sh.simple.telemetry.status
100
1
Active
true
+ recU7kqqWFDEW9g7n
+ Active
Data read from a SimpleSensor run by a SpaceHeat SCADA
+ recqSXVzLo8RtEjlH
+ recb9fI4kRkTYXDzA
+ recXMf6hlVg265ccL
https://gridworks-protocol.readthedocs.io/en/latest/simple-sensor.html
gwproto
+
rec8uTC7GK5qgXzg9
2022-11-06T20:02:04Z
- 002
+ g.node.gt.002
+ Active
+ Json
recQnH1rlTK3K4DZz
recQJigqO8DLTKCqH
recVtNsE7nmGPy31j
@@ -5434,35 +5886,12 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recstfJ6XtUvbv3Vc
recYFsJii0BGiCmAH
recIhSSpqIviBUW64
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- recopFBsq4TmG87Op
- recDnKXIasoP8ODSd
reci06VasVLO4ZMyk
recYGgvDIbffdBWZO
recMLU2TAAxgQCJoD
- {
- "GNodeId": "575f374f-8533-4733-baf7-91146c607445",
- "Alias": "d1.isone.ver.keene",
- "StatusGtEnumSymbol": "a2cfc2f7",
- "RoleGtEnumSymbol": "234cfaa2",
- "GNodeRegistryAddr": "MONSDN5MXG4VMIOHJNCJJBVASG7HEZQSCEIKJAPEPVI5ZJUMQGXQKSOAYU",
- "TypeName": "g.node.gt",
- "Version": "000"
- }
-
- Pending
recqx4EqT3OFtnxTG
recZB6uJDEaCzvTZX
- recmXImdzdJvIhwRj
- recrWS8cReivzRx92
- recfdC5aUpHXgXtON
- recnwesXAnDk54IJt
- rect3RqANsPtjXr8a
- GNodeId
- g.node.gt.002
- Active
- Json
+ 002
true
GNode
@@ -5473,37 +5902,45 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
a global registry to act as Single Source of Truth (SSoT). This class is used for
that SSoT to share information with actors about their GNodes, and the GNodes
that they will observe and communicate with.
+ recDnKXIasoP8ODSd
g.node.gt
002
1
- Pending
+ Active
- Used to send and receive updates about GNodes
- https://gridworks.readthedocs.io/en/latest/g-node.html
- gwatn
- gwmm
- gnr
- gworld
+ rect3RqANsPtjXr8a
+ GNodeId
+ Active
+ Used to send and receive updates about GNodes
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ recopFBsq4TmG87Op
+ {
+ "GNodeId": "575f374f-8533-4733-baf7-91146c607445",
+ "Alias": "d1.isone.ver.keene",
+ "StatusGtEnumSymbol": "a2cfc2f7",
+ "RoleGtEnumSymbol": "234cfaa2",
+ "GNodeRegistryAddr": "MONSDN5MXG4VMIOHJNCJJBVASG7HEZQSCEIKJAPEPVI5ZJUMQGXQKSOAYU",
+ "TypeName": "g.node.gt",
+ "Version": "000"
+ }
+
+ https://gridworks.readthedocs.io/en/latest/g-node.html
gridworks
+
rec93KBYcwiqJ6OQy
2022-06-24T20:28:53Z
- 100
+ gt.sh.telemetry.from.multipurpose.sensor.100
+ Active
+ Json
rec0EFbgjuaALp5xv
recydLuwKpW0ptMyj
recGRNEh1iK0tu10N
recP42BiKvu4xhepH
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recx3kwLemvtMaT0t
- Active
rec2HyLffy6QK9QId
- recFJlNwyiBE5mu93
- recEnG4y5Q19QVq6H
- gt.sh.telemetry.from.multipurpose.sensor.100
- Active
- Json
+ 100
@@ -5511,183 +5948,192 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
A set of readings made at the same time by a multipurpose sensor, sent by the
MultipurposeSensor SpaceheatNode actor to its SCADA. The nth element of each of its
three readings (what is getting read, what the value is, what the TelemetryNames are).
+ recx3kwLemvtMaT0t
gt.sh.telemetry.from.multipurpose.sensor
100
1
Active
true
+ recFJlNwyiBE5mu93
+ Active
Data sent from a MultipurposeSensor to a Spaceheat SCADA
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
+ recEnG4y5Q19QVq6H
https://gridworks-protocol.readthedocs.io/en/latest/multipurpose-sensor.html
gwproto
+
rec944QikN18Rdopu
2022-06-09T15:17:43Z
- 110
+ gt.telemetry.110
+ Active
+ Json
recyNip0u0FiM066j
rec0yzwyCWxtaJQJF
recKwPBxJr8R55KlB
recfMyBibCC1lqTy1
- recqSXVzLo8RtEjlH
- recx4EL5mDebUhtzp
- Active
rec2HyLffy6QK9QId
- recojG3YXcclEwrnX
- gt.telemetry.110
- Active
- Json
+ 110
1
+ recx4EL5mDebUhtzp
gt.telemetry
110
1
Active
true
+ recojG3YXcclEwrnX
+ Active
+ recqSXVzLo8RtEjlH
gwproto
+
rec9dL2CYkm5s4OXX
2023-02-14T13:13:25Z
- 000
+ egauge.register.config.000
+ Active
+ Json
rechFmb5stcc7uIXs
recQlA6ZTLxJPzvCG
rec6nWq42TdJuV1oR
recrM0seVr3IoDloF
recmScnEAEGlamF9G
reccWS9zkRp01leDv
- recxXnNUXYPwJi4ns
recjsV3JWXQNje4mp
- Active
- recstn9IrZMpRLKja
- recJWEoBrffJ7gSMB
- egauge.register.config.000
- Active
- Json
+ 000
1
This type captures the information provided by eGauge in its modbus csv map, when reading current, power, energy, voltage, frequency etc from an eGauge 4030.
+ recxXnNUXYPwJi4ns
egauge.register.config
000
1
Active
+ recstn9IrZMpRLKja
+ recJWEoBrffJ7gSMB
+ Active
Used to translate eGauge's Modbus Map
scada
gwproto
+
rec9kYNek59Vqps4S
2023-01-16T08:00:58Z
- 000
+ simplesim.driver.data.hpwb.000
+ Active
+ Json
recCZdtLIakEf3fWh
- recXfOCZByFlChQxR
rec1CtEN5Aheg8zzR
recQduwtmVeYjXuQV
rec5AtelLyWoElhSp
recyprhpuu5W0nemB
recnpE4pnmald9iTU
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recRob19Mg7TFO5bB
- Pending
- rec2ZUAEXRfDLAKh8
- sim.scada.driver.report.000
- Active
- Json
+ 000
1
- sim.scada.driver.report
+ recRob19Mg7TFO5bB
+ simplesim.driver.data.hpwb
000
1
- Pending
+ Active
- gwatn
+ rec2ZUAEXRfDLAKh8
+ Active
+ recb9fI4kRkTYXDzA
+ satn
+
rec9udDZT7JDuAbjl
2022-10-03T04:45:41Z
- 000
+ optin.tadeed.algo.000
+ Deprecated
+ Json
recEfJPESYeun1WwU
recbhlzRRZJ3080ot
recJIkl9dZLq01OeF
recDzW9fuX9MvVvla
- recxnrRBEZg5cPVPt
- Active
- optin.tadeed.algo.000
- Deprecated
- Json
+ 000
1
Sent by Gnf to Daemon to opt into a new tadeed.
+ recxnrRBEZg5cPVPt
optin.tadeed.algo
100
0
Deprecated
+ Active
+
recAWKkS0hcyws7O6
2022-11-04T13:41:29Z
- 002
+ initial.tadeed.algo.optin.002
+ Active
+ Json
recuEy4lhhe7MqUUN
rec3ez7rNTNCnqsst
recRMYT3frXP98k2q
recMpoAkDFT027Lro
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recb9fI4kRkTYXDzA
- recERKCcoJa8mkC8L
- Active
- recYSfcJBIVxFIWCZ
- recCqC0KKS00693kw
- recyzaIpCoUsKpVbL
- recHWe9Q4itm5lWv2
- recQUUMz6KxDUEjWi
- initial.tadeed.algo.optin.002
- Active
- Json
+ 002
1
The TaDaemon must opt into the TaDeed before receiving it. This message prompts that action.
+ recERKCcoJa8mkC8L
initial.tadeed.algo.optin
002
1
Active
+ recyzaIpCoUsKpVbL
+ rec8Ix2UVLnq7xycF
+ Active
Received by TaDaemon so that it can opt into intial TaDeed
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ recb9fI4kRkTYXDzA
+ recHWe9Q4itm5lWv2
+ recQUUMz6KxDUEjWi
gnf
gwatn
- gridworks
+
+
+
+ recAYQXrpksoHikrI
+ 2023-05-01T22:01:58Z
+ .
+ 1
+ 1
+ Pending
+ Pending
recBEBBA0ctnOYQnC
2023-01-16T17:19:07Z
- 000
+ join.dispatch.contract.000
+ Active
+ Json
recxO0tKJ0Wp8B3pW
rec88fKL08R9C0d0I
recaYqACGpgpO40W8
recqZpHzORTrCpcjl
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recvbnpa4cX2nNp9p
- recbm5aHNmuHvaYKJ
- Active
- recIX7Ev6QVM4jtwT
- recg5ScMmCJuinnKL
- rec2zpio7xkxnKeuv
- join.dispatch.contract.000
- Active
- Json
+ 000
@@ -5702,19 +6148,63 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
then responding to the SCADA via RabbitMQ with a dispatch.contract.confirmed payload.
https://gridworks.readthedocs.io/en/latest/dispatch-contract.html
+ recbm5aHNmuHvaYKJ
join.dispatch.contract
000
1
Active
+ recIX7Ev6QVM4jtwT
+ Active
Sent from a Scada to its paired AtomicTNode on RabbitMQ
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recvbnpa4cX2nNp9p
+ rec2zpio7xkxnKeuv
gwatn
- satn
+
+
+
+ recBqSlQdF17CgMPY
+ 2023-05-10T14:21:22Z
+ flo.params.report.000
+ Active
+ Json
+ recNMgiBoWjcpx9qS
+ rect2ta2gIzYqWAyr
+ recJcYgKuh54ltqk5
+ recDvDUWKt6hxy1l9
+ recNy04v6VC70hH8c
+ recHRWGtm51BPqgFb
+ recg6mf4mCKi2Fwa8
+ 000
+
+
+
+ 1
+ Type used for a message provided by an AtomicTNode or SCADA actor re the flo parameters just used to run a FLO.
+ rechWdY7ztMafROYr
+ flo.params.report
+ 000
+ 1
+ Active
+
+ recGCj1HgHQww3p80
+ Active
+ Flo Params Report
+ recb9fI4kRkTYXDzA
+ rec13dujLuXXSf5L3
+ rec24qjC90m0f4Kvl
+ https://gridworks-atn.readthedocs.io/en/latest/flo.html#flo-params
+ gwatn
+
recDEr7ob2KLqM4gU
2022-06-23T18:39:41Z
- 000
+ telemetry.reporting.config.000
+ Active
+ Json
recjhPIPtr6UXppHQ
recJW4Tmdi1HStfwy
rec4adVbIULyfOhu4
@@ -5723,37 +6213,38 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recEwx1N4X1KFrH7d
recJ3u86m6sh2vNWk
recusFjl07hlf1NxY
- recb9fI4kRkTYXDzA
- rec1E12bdSXOtQ9qP
recbw5AyGqRuPCnlj
rec5TsqaPhBNGB6On
recuTyHJfuZVMXRQ4
recNBlEnmGPTuNEva
- Active
recc1W1unmzowrKX9
rec2HyLffy6QK9QId
- reci2IGqh2kbuZxSa
- rec11OYyEPT4FV8al
- rec8j6bhXPOYce5Rq
- telemetry.reporting.config.000
- Active
- Json
+ 000
1
+ rec1E12bdSXOtQ9qP
telemetry.reporting.config
000
1
Active
+ reci2IGqh2kbuZxSa
+ rec11OYyEPT4FV8al
+ Active
+ recb9fI4kRkTYXDzA
+ rec8j6bhXPOYce5Rq
scada
gwproto
+
recDYjXYf8RbWmUFe
2022-11-08T04:31:35Z
- 000
+ market.type.gt.000
+ Active
+ Json
recOxmICij5REVdXj
recBbPnDHgnSutafc
recW6RdAsZlS8B8xV
@@ -5761,20 +6252,13 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
recOhTtiANrJcVKgf
recV7ixIyYTmrGAbL
recc5A1JaRXNBZe9g
- rec6PDgvHMkqnbyOQ
recwDJqmDK7sTdTTC
recDaxDt8J5MZRx8y
- Pending
recZmZP13YV9Rmbnw
rec75xMuw0SMkzjVc
recounhEj97w5SfDm
recA15Ak50x6bNMx1
- rectD1KxAzqJILPfu
- recMvuzDPwhs257Bs
- Name
- market.type.gt.000
- Active
- Json
+ 000
true
MarketType
@@ -5783,15 +6267,21 @@ Shares the same purpose as gs.pwr, but is not designed to minimize bytes so come
A [MarketMaker](https://gridworks.readthedocs.io/en/latest/market-maker.html) GNode can run several types of Markets. For example, it can run an
hourly real-time market and also an ancillary services market for Regulation. This is captured
by the concept of MarketType.
+ rec6PDgvHMkqnbyOQ
market.type.gt
000
1
- Pending
+ Active
+ rectD1KxAzqJILPfu
+ recMvuzDPwhs257Bs
+ Name
+ Active
Used by MarketMakers to simultaneously run several different types of Markets
https://gridworks.readthedocs.io/en/latest/market-type.html
gwatn
gwmm
+
recDhp6cvXPgXpOgi
@@ -5803,44 +6293,47 @@ by the concept of MarketType.
recDjO3rdq76LMOoL
2022-07-10T12:49:03Z
- 000
+ resistive.heater.component.gt.000
+ Active
+ Json
rechtGIFRjENiH3Cv
recLnMCNd00yOpeVw
recSjtsFt8YhLc4wA
recThSsC8YgHG8vd0
recRn71YtHKdHpcAZ
recvDYPGmlUWE3yzH
- rec24qjC90m0f4Kvl
- rec1joYefgk9OQTyG
- Active
- rec9jyOwhibLuECVH
- recswpHqNcpEEPH2G
- rec1TqtyFK3VxPiEv
- ComponentId
- resistive.heater.component.gt.000
- Active
- Json
+ 000
true
ResistiveHeaterComponent
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ rec1joYefgk9OQTyG
resistive.heater.component.gt
000
1
Active
+ rec9jyOwhibLuECVH
+ recswpHqNcpEEPH2G
+ rec1TqtyFK3VxPiEv
+ ComponentId
+ Active
Type for tracking Resistive Heater Components
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component.html
newatn
scada
gwproto
+
recDp8U1jLA9zeEx2
2022-10-02T23:32:44Z
- 002
+ base.g.node.gt.002
+ Active
+ Json
recbP43UORyJcMOyK
recSyaqv9CQCvmg7I
rec3Ip25a5UdscQKD
@@ -5855,22 +6348,29 @@ by the concept of MarketType.
recKtxHw3srimaENr
recKVh2K6tmazsz4r
recHPzXnfcnuA7lLS
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- recopFBsq4TmG87Op
- recZhfzRnHkE804iR
recoe5Oa6CzAAMH80
recCuVGEIt5PtitBs
- Pending
rec5HXPeyp3jic6FV
recqx4EqT3OFtnxTG
- recBJRHgd3WPVUvQw
- rectEwF6ZLLRopleW
- recUb6ezx8SD26ynT
- rec3dplhqy7h95uAR
- rec1osS0C34lxMFkC
- recAZ1Zsq5mzNmXks
- recIah41uCqR2IDJk
+ 002
+ true
+ BaseGNode
+
+
+ 1
+ BaseGNode. Authority is GNodeFactory.
+ recZhfzRnHkE804iR
+ base.g.node.gt
+ 002
+ 1
+ Active
+ recBJRHgd3WPVUvQw
+ rectEwF6ZLLRopleW
+ recUb6ezx8SD26ynT
+ rec3dplhqy7h95uAR
+ rec1osS0C34lxMFkC
+ recAZ1Zsq5mzNmXks
+ recIah41uCqR2IDJk
recKkK9eMIcEKx0ye
rec2tMERYL2Mdnty3
rechF4eml8urlVmxU
@@ -5881,35 +6381,25 @@ by the concept of MarketType.
recueNLsroZPIyXPm
recloTCbAMeQzOIzq
recehciOce1BjWYzY
- reccq15mpDgpXGekn
- recHxMHk1Q13AGxQT
- recGg8u1kDk0dEwT0
- GNodeId
New attributes: PrevAlias, OwnerAddr, DaemonAddr, TradingRightsNftId.
CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- base.g.node.gt.002
- Active
- Json
- true
- BaseGNode
-
-
- 1
- BaseGNode. Authority is GNodeFactory.
- base.g.node.gt
- 002
- 1
- Pending
- gnf
- gnr
- gwatn
+ reccq15mpDgpXGekn
+ GNodeId
+ Active
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ recopFBsq4TmG87Op
+ gridworks
+
recDq5Oo6baJLVS5s
2023-03-02T10:35:29Z
- 001
+ heartbeat.b.001
+ Active
+ Json
recu9WOouWCxxqJsw
rec34OIYCFo5w9hkm
recu06qV62QnggRW0
@@ -5917,89 +6407,88 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reciMffYqbquDDMwr
recsbmamjY68wXvzD
recbm3rb6c3wtCzWR
- recWwoTHJMScsOvnF
- rec24qjC90m0f4Kvl
- recqSXVzLo8RtEjlH
- recb9fI4kRkTYXDzA
- recCPb9SbFhFCSw5m
- Active
- recgroRYrhO8lRT9B
- recLbNfmaoYeiI8A9
- rec9hyu5DGf4HWX7A
- heartbeat.b.001
- Active
- Json
+ 001
1
Heartbeat for Scada-AtomicTNode DispatchContract, to send via RabbitMQ
+ recCPb9SbFhFCSw5m
heartbeat.b
001
1
Active
- gwatn
+ recLbNfmaoYeiI8A9
+ Active
+ recWwoTHJMScsOvnF
+ rec24qjC90m0f4Kvl
+ recqSXVzLo8RtEjlH
+ recb9fI4kRkTYXDzA
gwproto
- scada
+
recE32bnkaJFE5q4Y
2022-06-15T22:55:39Z
- 100
+ gt.sh.simple.status.100
+ Deprecated
+ Json
recYD7KpGFv86yleu
recoPn9xJOxqb6ifT
recmUBXrUigX4SFIe
recqTlmb22FCbFzaQ
- rec23C6am0WIH9veT
- gt.sh.simple.status.100
- Deprecated
- Json
+ 100
1
+ rec23C6am0WIH9veT
gt.sh.simple.status
100
1
Deprecated
+
recE3bIWWFpMPqyS1
2023-01-08T10:20:16Z
- 000
+ heartbeat.b.000
+ Active
+ Json
recekkQZ2hCpBzryE
recoduUdKygrSq0T5
reczMHDNg6FcTdh41
rec1nNl4mM8w486VP
recOBfgFL5HGn9j1B
recee7OczpcTACTcR
- recWwoTHJMScsOvnF
- rec24qjC90m0f4Kvl
- recqSXVzLo8RtEjlH
- recb9fI4kRkTYXDzA
- recCPb9SbFhFCSw5m
rechs1D8dytBH2C5s
- Pending
- heartbeat.b.000
- Active
- Json
+ 000
1
Heartbeat for Scada-AtomicTNode DispatchContract, to send via RabbitMQ
+ recCPb9SbFhFCSw5m
heartbeat.b
001
0
Deprecated
+ Pending
+ recWwoTHJMScsOvnF
+ rec24qjC90m0f4Kvl
+ recqSXVzLo8RtEjlH
+ recb9fI4kRkTYXDzA
+
recECSz5o4Z7NFjhG
2023-01-15T12:53:53Z
- 001
+ atn.bid.001
+ Active
+ Json
rec8t56gTGBi3AXBr
recHNfUgwXIvrBwWK
rec4tCsBpIaZUGllT
@@ -6008,71 +6497,73 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recREgyk5HQKEtSMJ
recfzsWHMU0fhZE47
recqXdxf3WK0BhhJo
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recdsSDIz6EmZCvr9
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recLF7qGdmXsqb9M2
- Pending
rec75xMuw0SMkzjVc
recounhEj97w5SfDm
recZmZP13YV9Rmbnw
- recSIwq3BdNSAxp2e
- recSNej4i6EwucKbV
- rec4x9sbCR3Q6Bwm8
- recQEk0lDO3sQJDyc
- BidList changed to PqPairs
- atn.bid.001
- Active
- Json
+ 001
1
+ recLF7qGdmXsqb9M2
atn.bid
001
1
- Pending
+ Active
+ BidList changed to PqPairs
+ recSIwq3BdNSAxp2e
+ recSNej4i6EwucKbV
+ Active
AtomicTNode bid sent to a MarketMaker
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recdsSDIz6EmZCvr9
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ rec4x9sbCR3Q6Bwm8
+ recQEk0lDO3sQJDyc
https://gridworks.readthedocs.io/en/latest/market-bid.html
gwmm
gwatn
+
recEGOX7VX0bQ3Lvf
2023-02-14T14:27:15Z
- 000
- recjsV3JWXQNje4mp
- rec5TsqaPhBNGB6On
- rec77AahxpNNz6eNx
- recnrbGd4QYB1NxjM
- Active
- recfHuF6SpeyhwE56
- recJJyBjjBHOe3FnE
egauge.io.000
Active
Json
+ recjsV3JWXQNje4mp
+ rec5TsqaPhBNGB6On
+ recnrbGd4QYB1NxjM
+ 000
1
When the component associated to a PowerMeter ShNode has MakeModel EGAUGE__4030, there is a significant amount of configuration required to specify both what is read from the eGauge (input) and what is then sent up to the SCADA (output). This type handles that information.
+ rec77AahxpNNz6eNx
egauge.io
000
1
Active
+ recfHuF6SpeyhwE56
+ recJJyBjjBHOe3FnE
+ Active
Used for an eGauge meter's component information in a hardware layout
https://gridworks-protocol.readthedocs.io/en/latest/egauge-io.html
scada
gwproto
+
recEhzcpob8H7VuEF
2023-02-14T20:38:46Z
- 100
+ spaceheat.node.gt.100
+ Active
+ Json
recI6AdAg9Dz3yaLq
rec0WVcC4M6yKdKuR
recXk1RFSZEvWMYii
@@ -6083,79 +6574,76 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reczpo22mAIYZkTRF
recKf4zpfW8Q9hzkW
recgWYB1V2NZmucst
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- recijDUCMCF0drLi3
- Active
recQeMNisJZjsYXTl
recomGYBJ9ldSsiNU
- recHdlXqyTBvi9zRZ
- recuJQxG7uIZ98O1y
- ShNodeId
- spaceheat.node.gt.100
- Active
- Json
+ 100
true
ShNode
1
Type for tracking information about a Spaceheat Node.
+ recijDUCMCF0drLi3
spaceheat.node.gt
100
1
Active
+ recHdlXqyTBvi9zRZ
+ recuJQxG7uIZ98O1y
+ ShNodeId
+ Active
Spaceheat Node
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
scada
gwproto
+
recF9KonH58AltK0K
2023-01-19T14:30:26Z
- 000
+ basegnode.scada.create.000
+ Active
+ Json
rec9PJA13l3jM7pJm
recZQKyBftNOGc46Z
recQOONbTZMocKXeg
recfm7YlkXDX6XQEU
recEG7l0wT1KjHSFs
- recb9fI4kRkTYXDzA
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recWnYsIlIcwBPwZY
- Pending
- recaBlt54tM7DPjwR
- recl7u8ZInYMFV7EC
- reczUIUpS1LU0Aw6d
- recw40tHmgYZ9Jjrx
- basegnode.scada.create.000
- Active
- Json
+ 000
1
This is a payload designed to be sent from a TaOwner to the GNodeFactory. The TaOwner creates a private Algorand key and puts it on the Scada Device that will sense and control their TerminalAsset. The public address is associated with the Scada GNode by the GNodeFactory.
+ recWnYsIlIcwBPwZY
basegnode.scada.create
000
1
- Pending
+ Active
+ recaBlt54tM7DPjwR
+ recl7u8ZInYMFV7EC
+ Active
Scada BaseGNode Creation
+ recb9fI4kRkTYXDzA
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ reczUIUpS1LU0Aw6d
+ recw40tHmgYZ9Jjrx
gwatn
gnf
+
recFrR35Q6mQhx1KM
2023-01-05T16:58:29Z
- 001
- recWwoTHJMScsOvnF
- recVNiapT0HIufahj
- Pending
heartbeat.a.001
Active
Json
+ 001
@@ -6163,18 +6651,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Payload for direct messages sent back and forth between actors,
for example a Supervisor and one of its subordinates.
+ recVNiapT0HIufahj
heartbeat.a
100
0
Deprecated
+ Pending
Used to check that an actor can both send and receive messages
+ recWwoTHJMScsOvnF
https://gridworks.readthedocs.io/en/latest/g-node-instance.html
+
recGuvhjDYO65d5rP
2022-06-07T09:29:22Z
- 000
+ pipe.flow.sensor.component.gt.000
+ Active
+ Json
recVs9H70Rxs6FuHL
recdFwlVqkCgZfGIS
recibIy1C38bRpg0P
@@ -6182,37 +6676,38 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rectkPcgczE3uuPgd
recY8qpylt2Ez8GeH
rec1juFm5ISKu1HWQ
- rec24qjC90m0f4Kvl
- rec4u5c6FO198haBK
- Active
- rece0jNAI2D1qrYj7
- recuRXwHhLfdx259p
- recYDKruJx6uhqxLp
- ComponentId
- pipe.flow.sensor.component.gt.000
- Active
- Json
+ 000
true
PipeFlowSensorComponent
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ rec4u5c6FO198haBK
pipe.flow.sensor.component.gt
000
1
Active
+ rece0jNAI2D1qrYj7
+ recuRXwHhLfdx259p
+ recYDKruJx6uhqxLp
+ ComponentId
+ Active
Type for tracking Pipe Flow Sensor Components
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component.html
newatn
scada
gwproto
+
recH9GUDdSB7SiwNG
2022-11-08T04:11:14Z
- 000
+ atn.bid.000
+ Active
+ Json
recIKbu4rYF1nXhPD
recxZawnFBV5tyTsV
recT1nhwCuJiHkC52
@@ -6221,35 +6716,36 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recQJb1dVOhb9b4gc
rec5yCVNnWVXBDdMc
recOeaCOt6KQeMuNX
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recdsSDIz6EmZCvr9
- recvbnpa4cX2nNp9p
- recLF7qGdmXsqb9M2
- recg6kZdbgxDUXAAh
- Pending
rec75xMuw0SMkzjVc
recounhEj97w5SfDm
recZmZP13YV9Rmbnw
- atn.bid.000
- Active
- Json
+ 000
1
+ recLF7qGdmXsqb9M2
atn.bid
001
0
Deprecated
+ Pending
+ recg6kZdbgxDUXAAh
AtomicTNode bid sent to a MarketMaker
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recdsSDIz6EmZCvr9
+ recvbnpa4cX2nNp9p
https://gridworks.readthedocs.io/en/latest/market-bid.html
+
recJH4tbXOqVJkMVW
2022-09-19T20:21:15Z
- 000
+ basegnode.ctn.create.000
+ Active
+ Json
recHw5JOwPznxEWve
recsEvybSpl9WN6Ny
recfAClSUjZOHVHgw
@@ -6257,118 +6753,122 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recKr9eJbHAgZPAJr
rec2EuDcLlLMuM7C5
recdtoFwqku5okZTc
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recopFBsq4TmG87Op
- rect6WA80mNWDt7v0
- Pending
- recY5s5LoUEwNBowT
- recVyJz6EmMdwDjYy
- basegnode.ctn.create.000
- Active
- Json
+ 000
1
+ rect6WA80mNWDt7v0
basegnode.ctn.create
000
1
Pending
+ recY5s5LoUEwNBowT
+ recVyJz6EmMdwDjYy
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recopFBsq4TmG87Op
gnf
gnr
+
recLufl9jSdsMGsFR
2022-11-17T06:03:24Z
- 000
+ market.slot.000
+ Active
+ Json
recDaxDt8J5MZRx8y
rec1hFSN0SKmeE8CV
recC2OJXewZyxgy8T
- recb9fI4kRkTYXDzA
- rec13dujLuXXSf5L3
- recwEHKPPTKLK8OFz
recbnSBQbnHs5KuDy
- Pending
- recleupDcbcVTVRQ9
- recLBYNcGvIrpb1nX
- market.slot.000
- Active
- Json
+ 000
1
+ recwEHKPPTKLK8OFz
market.slot
000
1
- Pending
+ Active
+ recleupDcbcVTVRQ9
+ recLBYNcGvIrpb1nX
+ Active
MarketSlot
+ recb9fI4kRkTYXDzA
+ rec13dujLuXXSf5L3
https://gridworks.readthedocs.io/en/latest/market-slot.html
gwmm
gwatn
+
recMyDdiQjtfTMAP1
2022-11-04T15:04:29Z
- 000
+ old.tadeed.algo.return.000
+ Active
+ Json
recQegsyGIGw5mDwR
recGTF9QvbMMCTiQu
recb1KEicJAMiVXJV
recElgddLa2jgifep
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recde7ZQpg5BRpHxm
- Active
- recPRrjd1GyqOVHIZ
- recbN7L6MH925xDby
- old.tadeed.algo.return.000
- Active
- Json
+ 000
1
+ recde7ZQpg5BRpHxm
old.tadeed.algo.return
000
1
Active
+ recPRrjd1GyqOVHIZ
+ recbN7L6MH925xDby
+ Active
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
gnf
gwatn
+
recNIlQetbTDVNam8
2022-11-29T13:24:33Z
- 000
+ g.nodes.broadcast.000
+ Active
+ Json
recigdE3vSs3HSd66
recrKX7TavoFqODYc
recdSCNKICUvxsgAo
reci06VasVLO4ZMyk
recYGgvDIbffdBWZO
- recMDHEwaShpGskfS
- Pending
- rec0CVyxlO3cPJGWD
- g.nodes.broadcast.000
- Active
- Json
+ 000
1
+ recMDHEwaShpGskfS
g.nodes.broadcast
000
1
Pending
+ rec0CVyxlO3cPJGWD
+ Pending
gnr
+
recNbXbJE9rcnLXAs
2022-07-05T12:48:52Z
- 110
+ gt.sh.status.110
+ Active
+ Json
recJsAmOvRrHuzY0o
recVgR5ZOHi7dvBav
recEnND4VVh74Ayni
@@ -6378,95 +6878,86 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recK2zOa4WxMEeSn9
recdwjoLr6DQUc20I
recJSFsEahEgbS5C2
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- rec13dujLuXXSf5L3
- recbbx6wGZEfqP2Kn
recTkA12JINIgGcXq
- Active
- rec0X5JpHPTyqYdrx
- gt.sh.status.110
- Active
- Json
+ 110
1
Status message sent by a Spaceheat SCADA every 5 minutes
+ recbbx6wGZEfqP2Kn
gt.sh.status
110
1
Active
true
+ rec0X5JpHPTyqYdrx
+ Active
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ rec13dujLuXXSf5L3
gwproto
+
recNe1NhrgRzyRlSA
2022-07-03T22:09:49Z
- 100
+ gt.sh.status.100
+ Active
+ Json
recfnCI6bJWG4n4xR
recl1CjNX7CBI77Cf
reccl6zfh9EN32iFD
recOWeL6PoLldCrop
recZOVb1cq9Dq3Oi5
recE2H3ffos4Ujqq7
- recbbx6wGZEfqP2Kn
- gt.sh.status.100
- Active
- Json
+ 100
1
Status message sent by a Spaceheat SCADA every 5 minutes
+ recbbx6wGZEfqP2Kn
gt.sh.status
110
0
Deprecated
true
+
recO5QLpXXDMjgo1j
2022-05-11T18:08:26Z
- 100
- recw4w4kyKb5qsTUd
- p
- recc5qGcZNQPmktbe
- Pending
gs.pwr.100
Active
GridworksSerial
+ recw4w4kyKb5qsTUd
+ 100
+ p
1
Used by a SCADA -> Atn or Atn -> AggregatedTNode to report real-time power of their TerminalAsset. Positive number means WITHDRAWAL from the grid - so generating electricity creates a negative number. This message is considered worse than useless to send after the first attempt, and does not require an ack. Shares the same purpose as power.watts, but designed to be small in size (thus using the GridWorks Serial protocol instead of JSON). The idea is this message, instantaneous reporting of power, is the highest priority message in the system and thus gets to have its metadata made explicit in the structure of the code instead of parameterized. One result is the size of the sent data is very small. Sometimes bandwidth can be an issue, and smaller messages are very useful.
+ recc5qGcZNQPmktbe
gs.pwr
100
1
Pending
true
+ Pending
Real-time power of TerminalAsset in Watts
+
recO8OdobcISYms0B
2022-09-21T18:02:02Z
- 000
- recFgsax2FGGg4UTE
- recG3uKKhjsdprmUN
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recyuQKkp5CFejv2j
- Active
- rect61DlS8mCPHnUL
- recaT1SF8nRebYo7G
- recWaQL9LKI0BTilC
- rec41IGqMHOcsZEXl
- recCHkLILWYGN7rjn
- reccpDU01eDwuMvrf
initial.tadeed.algo.create.000
Active
Json
+ recFgsax2FGGg4UTE
+ recG3uKKhjsdprmUN
+ 000
@@ -6475,130 +6966,133 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
GnodeFactory creates a TerminalAsset with GNodeStatus pending. For more information:
[TaDeed](https://gridworks.readthedocs.io/en/latest/ta-deed.html)
[TaValidator](https://gridworks.readthedocs.io/en/latest/ta-validator.html)
+ recyuQKkp5CFejv2j
initial.tadeed.algo.create
000
1
Active
+ recaT1SF8nRebYo7G
+ recJRYtEf5HsSuZBM
+ Active
TaValidator sends to GNodeFactory to complete creation of an initial TaDeed
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ rec41IGqMHOcsZEXl
+ recCHkLILWYGN7rjn
+ reccpDU01eDwuMvrf
gnf
- gridworks
gwatn
+
recObejFqCYx5kpak
2023-02-20T14:22:59Z
- 000
+ gridworks.header.000
+ Active
+ Json
recAPFghl03E7vx46
rec5OmOMeHTBF0VGa
recIdseIWBPHqqxO6
recmJAntc8jP45C1K
recfVWGSQN5M3rRDv
rectU5zx1C8kMXD5O
- recu7baM2BVbAYQAH
recXYWcQiauWoeify
- Pending
- gridworks.header.000
- Active
- Json
+ 000
1
+ recu7baM2BVbAYQAH
gridworks.header
000
1
Pending
true
+ Pending
+
recPPTLAWZu08mD7s
2022-11-14T15:43:18Z
- 000
+ terminalasset.certify.hack.000
+ Active
+ Json
recsXoFOxudbW1SiS
recBClfoIYbmVTcvi
recjn4JQDiHTxb8zW
recRbzzZK0pCTehDf
- recb9fI4kRkTYXDzA
- recopFBsq4TmG87Op
- recl00nd7rYLyLDUL
- Pending
- rec5K84S2MN0iMNlE
- reccEMLYgCyyYLPr2
- terminalasset.certify.hack.000
- Active
- Json
+ 000
1
+ recl00nd7rYLyLDUL
terminalasset.certify.hack
000
1
- Pending
+ Active
+ rec5K84S2MN0iMNlE
+ reccEMLYgCyyYLPr2
+ Active
+ recb9fI4kRkTYXDzA
+ recopFBsq4TmG87Op
gwatn
gnf
+
recPbLemXyDnvKcIc
2022-06-06T18:44:52Z
- 000
+ relay.component.gt.000
+ Active
+ Json
recNiGLIdTxOhujx3
rec1tjyG2fxEVpUYW
recEXU8tEG6X0jUnU
recPuhtbcBHZR6Qai
reci7Ga0o0Ubtlk5g
recUc59QIjyPi1Xpl
- rec24qjC90m0f4Kvl
- recdbl99ZoQqyOhS7
- Active
- recxelQn6OCbkk5A5
- recZBrVC3qx5dJ9B0
- recxgiw8kmcghenPd
- ComponentId
- relay.component.gt.000
- Active
- Json
+ 000
true
RelayComponent
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ recdbl99ZoQqyOhS7
relay.component.gt
000
1
Active
+ recxelQn6OCbkk5A5
+ recZBrVC3qx5dJ9B0
+ recxgiw8kmcghenPd
+ ComponentId
+ Active
Type for tracking Relay Components
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component.html
scada
newatn
gwproto
+
recPf7eAhpge7kvO7
2022-11-04T15:33:25Z
- 000
+ initial.tadeed.algo.transfer.000
+ Active
+ Json
reclVHMPGkM3r0cf2
recqbPC3JOFtb5oXx
rec1kx74Elyh0gRye
reci8yG7lmDsa51uV
recTGNe2hCg0CwUye
rech65PHs37XIxKeb
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- reccq04oqFsHHPTlN
- Active
- recsRFfTXSym7gX54
- recBZVJVqK4DOb2JX
- recD3lLZaCPt9ehVW
- recLRRgeFOdFakOzR
- reconX1DBndnGFRBZ
- initial.tadeed.algo.transfer.000
- Active
- Json
+ 000
@@ -6621,101 +7115,114 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
[Transactive Device](https://gridworks.readthedocs.io/en/latest/transactive-device.html)
+ reccq04oqFsHHPTlN
initial.tadeed.algo.transfer
000
1
Active
+ recBZVJVqK4DOb2JX
+ recdAy68epnKcXjLL
+ Active
TaValidator sends to GNodeFactory after validating Transactive Device
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ recLRRgeFOdFakOzR
+ reconX1DBndnGFRBZ
gnf
- gridworks
gwatn
+
recPmpuzBMWnnZRpa
2022-07-03T21:26:12Z
- 100
- recjdjO1e7eWo3j8T
- rech7EAFuj56GsPDR
- recsyCaWjc5Ii5DrU
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recdmZpmDC9qq3Wz5
- Active
- recRsVv1nAv6EFkrJ
gt.driver.booleanactuator.cmd.100
Active
Json
+ recjdjO1e7eWo3j8T
+ rech7EAFuj56GsPDR
+ recsyCaWjc5Ii5DrU
+ 100
1
+ recdmZpmDC9qq3Wz5
gt.driver.booleanactuator.cmd
100
1
Active
true
+ recRsVv1nAv6EFkrJ
+ Active
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
gwproto
+
recPxYqZlRvCFlD8p
2022-11-23T14:01:41Z
- 000
- rec57uhIFk7eVwvKQ
- recb9fI4kRkTYXDzA
- rec0Od5vGZi8EDj7g
- Pending
- recCLW1iXAhVHGoUm
- recZZqjz8vL6Dj548
sla.enter.000
Active
Json
+ rec57uhIFk7eVwvKQ
+ 000
1
+ rec0Od5vGZi8EDj7g
sla.enter
000
1
- Pending
+ Active
+ recCLW1iXAhVHGoUm
+ recZZqjz8vL6Dj548
+ Active
+ recb9fI4kRkTYXDzA
gnf
gwatn
+
recPy6SuizSerb3JG
2022-11-04T17:59:45Z
- 000
+ new.tadeed.send.000
+ Active
+ Json
recR5j1j3DAzKovaR
recv0jEuP3xygb0bP
rec6n5D0n75iRarhL
rec0PurqCSDSSL9gV
recOdulFCYJbIktv4
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- recTSdWeNPEKAZuAP
- Active
- recQItJExa3ZiV3Jh
- reckwTitpkjc24FAx
- new.tadeed.send.000
- Active
- Json
+ 000
1
+ recTSdWeNPEKAZuAP
new.tadeed.send
000
1
Active
+ recQItJExa3ZiV3Jh
+ reckwTitpkjc24FAx
+ Active
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
gnf
gwatn
+
recQ1SzB1rQPnbRUR
2022-06-09T21:31:30Z
- 100
+ gt.sensor.reporting.config.100
+ Active
+ Json
recAy1MJ6WTkJC2Bt
recmVpjjvpSG6SioS
rec8XxSaRb8m7Wd5D
@@ -6723,129 +7230,131 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reczOogxDbgX7j8pi
recMNoEhsIjpp7oXK
recF5JRJR6AVkfQsK
- rece1suo3h3SqfW4M
- Active
rec2HyLffy6QK9QId
recc1W1unmzowrKX9
- recOq6H5IW6gkmww6
- gt.sensor.reporting.config.100
- Active
- Json
+ 100
SensorReportingConfig
0
+ rece1suo3h3SqfW4M
gt.sensor.reporting.config
100
1
Active
+ recOq6H5IW6gkmww6
+ Active
scada
+
recQVDSRdSrYEHimS
2022-07-05T12:55:18Z
- 110
- recO5REMzzyrc2uHT
- recFUjvwvmvvkA01e
- reci0niurz5s0wuXJ
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- receVdNEfIE1HLnwN
- Active
- recuxGhKEXF5Edw2W
- recOD1KrMbyUpliyI
gt.sh.cli.atn.cmd.110
Active
Json
+ recO5REMzzyrc2uHT
+ recFUjvwvmvvkA01e
+ reci0niurz5s0wuXJ
+ 110
1
+ receVdNEfIE1HLnwN
gt.sh.cli.atn.cmd
110
1
Active
true
+ recuxGhKEXF5Edw2W
+ recOD1KrMbyUpliyI
+ Active
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
newatn
gwproto
+
recRzt4GyUgwjJy3l
2023-04-09T21:06:47Z
- 001
- rec24qjC90m0f4Kvl
.001
+ 001
1
0
Deprecated
+ rec24qjC90m0f4Kvl
recT4SSkJ18pz5YoZ
2022-09-20T12:15:57Z
- 000
+ basegnodes.broadcast.000
+ Active
+ Json
recZoRtISP4HaNWda
recoDIFE4bNJi9OJW
recCaA8vu505G0NGF
recoe5Oa6CzAAMH80
recCuVGEIt5PtitBs
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- reczYInsSYetUcVpZ
- Pending
- rec1Kr8gSWyIe4lG2
- recRLpRImAACQhmSj
- basegnodes.broadcast.000
- Active
- Json
+ 000
1
+ reczYInsSYetUcVpZ
basegnodes.broadcast
000
1
Pending
+ rec1Kr8gSWyIe4lG2
+ recRLpRImAACQhmSj
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gnf
gnr
+
recTZ13dEbwrKazkL
2022-07-05T11:32:23Z
- 100
+ gt.dispatch.boolean.100
+ Active
+ Json
reczfNmiB9hWAkSsY
recjPLNQVJ2uCOYfC
recc61I5CYPBiSoz2
reccHAZq7xruWVLSo
recUyndqnwyKAWe93
recSNRAurDrIeUgqg
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recqSXVzLo8RtEjlH
- rechZBY0G1JuNeEuG
- Pending
- recGk4c4hm4Ng97pB
- gt.dispatch.boolean.100
- Active
- Json
+ 100
1
Boolean dispatch command sent over the cloud broker from one GNode (FromGNodeAlias/ FromGNodeId) to another (ToGNodeAlias). AboutNodeAlias is the node getting dispatched. It may be a GNode, but it can also be a SpaceHeatNode.
+ rechZBY0G1JuNeEuG
gt.dispatch.boolean
110
0
Deprecated
true
- newatn
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recqSXVzLo8RtEjlH
+
recTZzT6nQkrQ4sMq
2022-05-11T18:08:26Z
- 100
+ gt.power.sync.100
+ Pending
+ Json
recSUuF57hzqwp3RB
recVdAiysaXLvmg8u
rec1lT7lfuqohFuY2
@@ -6854,23 +7363,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recgGXDzQHPSfoIYU
reccTfzFazDviUeXp
recn2CJw74mLLQ8tr
- rechZ9OTpGxuT8xWl
- gt.power.sync.100
- Pending
- Json
+ 100
1
+ rechZ9OTpGxuT8xWl
gt.power.sync
100
1
+
recULIwPg69M69185
2023-01-28T00:16:46Z
- 000
+ multipurpose.sensor.cac.gt.000
+ Active
+ Json
recFitcFUJsJBih3G
recZJ9AJ4rOoBcDpv
recwkvcQFhhOMDyO4
@@ -6880,38 +7390,39 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recDSzwJ1nc31pFT2
rec0oIFJ2LAVcoLeV
recrrejIS50R0B0wv
- rec24qjC90m0f4Kvl
- recpqtAlI1M19QR9b
- Active
recLQWqTvGwSz2GcN
rec2HyLffy6QK9QId
recc1W1unmzowrKX9
- recRlWqdLmqPKyUME
- recFZKk2qxmOmDKdD
- ComponentAttributeClassId
- multipurpose.sensor.cac.gt.000
- Active
- Json
+ 000
true
MultipurposeSensorCac
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ recpqtAlI1M19QR9b
multipurpose.sensor.cac.gt
000
1
Active
+ recRlWqdLmqPKyUME
+ recFZKk2qxmOmDKdD
+ ComponentAttributeClassId
+ Active
Type for tracking Multipuprose Sensor ComponentAttributeClasses
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
scada
gwproto
+
recUj3ZPKMsXanG88
2022-07-10T14:13:06Z
- 000
+ spaceheat.node.gt.000
+ Active
+ Json
recda7k1BL8wixO1c
recL0U9e64jcs9Ftk
recN8NS2KiZw0Wzbp
@@ -6921,63 +7432,65 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recbXWZXIxr7MOnUv
recTIuInqPiemsf9b
reclgcZrxIoZfiovl
- recijDUCMCF0drLi3
- Deprecated
recQeMNisJZjsYXTl
recomGYBJ9ldSsiNU
- recN1T4RyJw2VMsOW
- ShNodeId
- spaceheat.node.gt.000
- Active
- Json
+ 000
true
ShNode
1
Type for tracking information about a Spaceheat Node.
+ recijDUCMCF0drLi3
spaceheat.node.gt
100
0
Deprecated
+ recN1T4RyJw2VMsOW
+ ShNodeId
+ Deprecated
Spaceheat Node
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
+
recUtSmERYdWUVAPm
2023-01-06T03:11:49Z
- 003
+ initial.tadeed.algo.optin.003
+ Active
+ Json
rec2E2PuhJhkdGWTk
recxTNjUuhKa3Xw8F
recpGkpFxO7Fj1xFv
reccbS1SXnmZ0Rvrd
recI9U053gkcDYRVB
- recopFBsq4TmG87Op
- recb9fI4kRkTYXDzA
- recvbnpa4cX2nNp9p
- recERKCcoJa8mkC8L
- Pending
recCQyaQ1Oq0MlT20
- initial.tadeed.algo.optin.003
- Active
- Json
+ 003
1
The TaDaemon must opt into the TaDeed before receiving it. This message prompts that action.
+ recERKCcoJa8mkC8L
initial.tadeed.algo.optin
002
0
Deprecated
+ Pending
Received by TaDaemon so that it can opt into intial TaDeed
+ recopFBsq4TmG87Op
+ recb9fI4kRkTYXDzA
+ recvbnpa4cX2nNp9p
+
recV0KuDFayH4qGIl
2022-11-21T22:36:08Z
- 000
+ g.node.instance.gt.000
+ Active
+ Json
recliyex6uoxm791o
recMLU2TAAxgQCJoD
reccsr0glHYFUIca3
@@ -6986,21 +7499,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recUWwce377A33dZw
recbTS3DEJI76HDZU
recm3UvhmUuqF5FAk
- rec24qjC90m0f4Kvl
- rec13dujLuXXSf5L3
- recopFBsq4TmG87Op
- recfTTPpGH16HQ9aY
rec8qVA40s9X5Pcma
- Pending
recWX07Mlzf8djb6q
recyOOpe9zHor9FIY
- recGSPzbsyt0nPa5B
- rec9y2OWDqjR6vSAp
- recc24iKFupSXBEgQ
- GNodeInstanceId
- g.node.instance.gt.000
- Active
- Json
+ 000
true
GNodeInstance
@@ -7009,266 +7511,283 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
One of the layers of abstraction connecting a GNode with a running app in
a Docker container.
+ recfTTPpGH16HQ9aY
g.node.instance.gt
000
1
- Pending
+ Active
+ recc24iKFupSXBEgQ
+ GNodeInstanceId
+ Active
Used to send and receive updates about GNodeInstances
+ rec24qjC90m0f4Kvl
+ rec13dujLuXXSf5L3
+ recopFBsq4TmG87Op
https://gridworks.readthedocs.io/en/latest/g-node-instance.html
- gwatn
- gworld
gridworks
+
recVIr500A203gkcH
2022-07-05T12:55:36Z
- 110
- rec2NckVsy3wDPK6Q
- recCyeOy0hRRYAvoc
- recjXMbjBpdJFTXBi
- recjI10N2qf36kpmC
gt.sh.cli.scada.response.110
Deprecated
Json
+ rec2NckVsy3wDPK6Q
+ recCyeOy0hRRYAvoc
+ recjXMbjBpdJFTXBi
+ 110
1
snapshot.spaceheat
+ recjI10N2qf36kpmC
gt.sh.cli.scada.response
110
1
Deprecated
+
recX2g8OLICXZHuHr
2022-11-21T05:21:49Z
- 000
- recPw5jcOzArg9D84
- recM33kM7FUIUQYie
- rec4XKd6lO34y5XKU
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recblgO1LGjgyHR2Y
- Pending
- rec1nKwt8hPeDIqrE
- recTvm4cpEzdavk6J
- recY4ZPVnAi4v6y0i
resume.time.000
Active
Json
+ recPw5jcOzArg9D84
+ recM33kM7FUIUQYie
+ rec4XKd6lO34y5XKU
+ 000
1
+ recblgO1LGjgyHR2Y
resume.time
000
1
Pending
+ rec1nKwt8hPeDIqrE
+ recTvm4cpEzdavk6J
+ recY4ZPVnAi4v6y0i
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gwtime
gworld
gnf
+
recXCK8GTrT3hnfKX
2022-09-19T18:21:09Z
- 000
+ tadeed.algo.exchange.000
+ Deprecated
+ Json
recTRNtq7f7hryTGh
reco2I4nYIwrUGv3C
recvtYAI3ds1gFdaM
recGtzDdtOf3vahBe
rec9ELFVpaqjO7myp
- rec430tANcSG2ZavF
- Deprecated
- rec4oleeZwPh0Ng0M
- reckfbX3EePBsFCIV
- recH512a7g6p8cLQM
- recwsWtIgu909pJm1
- recYBKWxHw8Q6obsQ
- recdfhrc7m3cOTO3V
- tadeed.algo.exchange.000
- Deprecated
- Json
+ 000
1
+ rec430tANcSG2ZavF
tadeed.algo.exchange
001
0
Deprecated
+ rec4oleeZwPh0Ng0M
+ reckfbX3EePBsFCIV
+ recH512a7g6p8cLQM
+ recwsWtIgu909pJm1
+ recYBKWxHw8Q6obsQ
+ recdfhrc7m3cOTO3V
+ Deprecated
+
recXrOxZu3uUqL6pH
2022-09-21T11:38:59Z
- 000
- recuocYj9OaOIsmtn
- Active
- recg3ZHFD17mRWVDL
tatradingrights.algo.create.000
Active
Json
+ 000
1
+ recuocYj9OaOIsmtn
tatradingrights.algo.create
000
1
Active
+ recg3ZHFD17mRWVDL
+ Active
gnf
+
recZOEsjIoauhsLjG
2022-06-14T10:41:17Z
- 100
- recHyghQ3390tN8LF
- recnVh3bX9GSsAkr3
- recnOen6KenxkwQtB
gt.thermal.edge.100
Pending
Json
+ recHyghQ3390tN8LF
+ recnVh3bX9GSsAkr3
+ 100
ThermalEdge
0
+ recnOen6KenxkwQtB
gt.thermal.edge
100
1
+
reca1A5UXpnpmZdiH
2022-09-21T11:37:43Z
+ basegnode.other.create.000
+ Active
+ Json
000
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recNShQmJ0F04UlrH
- Pending
- recA4Y7Iy3elTbyCB
- rec0Uk7vhJUpp68kq
- basegnode.other.create.000
- Active
- Json
1
+ recNShQmJ0F04UlrH
basegnode.other.create
000
1
Pending
+ recA4Y7Iy3elTbyCB
+ rec0Uk7vhJUpp68kq
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gnf
gnr
+
reca2LF7P05qQmFJW
2022-06-03T18:20:11Z
- 000
+ relay.cac.gt.000
+ Active
+ Json
recD4VpikwJAaTf0c
rec9E6HTIAJLoh9wW
reciCl45E5pQe7ans
recEmEL3LueXj4YbW
reckgfkjeNGk0Rqx0
- rec24qjC90m0f4Kvl
- recy2lAURQitTqKTR
- Active
recLQWqTvGwSz2GcN
- recB57YfEtBGpfH71
- recMWNrvkQjOIdOjQ
- reco01YhMk6anEqXo
- ComponentAttributeClassId
- relay.cac.gt.000
- Active
- Json
+ 000
true
RelayCac
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ recy2lAURQitTqKTR
relay.cac.gt
000
1
Active
+ recB57YfEtBGpfH71
+ recMWNrvkQjOIdOjQ
+ reco01YhMk6anEqXo
+ ComponentAttributeClassId
+ Active
Type for tracking Relay ComponentAttributeClasses
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
newatn
scada
gwproto
+
recacY2b5R2bByiAQ
2022-11-17T06:13:46Z
- 000
+ accepted.bid.000
+ Active
+ Json
rec3akDIjr7e9Pb0u
rec68T9cqrrclsIpW
recO6984PoYsGyotG
recTov3rcOqhTWWcf
- recdsSDIz6EmZCvr9
- recb9fI4kRkTYXDzA
- recF3FhhkKiMKyjJZ
recdUSog9bonuORLH
- Pending
- recbV3eBvST23mHgN
- recKs7BOeqelLodrB
- accepted.bid.000
- Active
- Json
+ 000
1
This is a legally binding contract for the bidder to consume or produce the quantity
in its Bid consistent with the actual price.
+ recF3FhhkKiMKyjJZ
accepted.bid
000
1
- Pending
+ Active
+ recbV3eBvST23mHgN
+ recKs7BOeqelLodrB
+ Active
Bid acceptance sent from MarketMaker to a market partipant
+ recdsSDIz6EmZCvr9
+ recb9fI4kRkTYXDzA
https://gridworks.readthedocs.io/en/latest/market-bid.html
gwmm
gwatn
+
recauOuVBqhRdNWcN
2022-06-20T13:16:05Z
- 110
+ gt.sh.status.snapshot.110
+ Deprecated
+ Json
recsZD75bQDFRNQt2
rechYoiSzlYAU1ZWD
rec367deUgDqEaq89
recysUCe9haFiLkWl
- recyuopIDguUgR1mI
recbRDhEoGNs9jYEB
recjXMbjBpdJFTXBi
- recsymqeqSBbr9R9o
- gt.sh.status.snapshot.110
- Deprecated
- Json
+ 110
1
telemetry.snapshot.spaceheat
+ recyuopIDguUgR1mI
gt.sh.status.snapshot
110
1
Deprecated
+ recsymqeqSBbr9R9o
+
recazQb2vEXgbroHd
2022-09-19T18:25:38Z
- 000
+ basegnode.terminalasset.create.000
+ Active
+ Json
recJdGNNBjXxo81cJ
recrcCzcDvZBxpI2C
recrICREghk3LscaD
@@ -7277,32 +7796,33 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recKXxHn9gIiKvkXm
rec8yK9gvhY44u86S
rec3XrurBTlbCXBfL
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recopFBsq4TmG87Op
- recb8a2JTfYBmC6v7
- Pending
- recZiKOMXJ8UCneY9
- recM8DeGDMOPo9ezd
- basegnode.terminalasset.create.000
- Active
- Json
+ 000
1
+ recb8a2JTfYBmC6v7
basegnode.terminalasset.create
000
1
Pending
+ recZiKOMXJ8UCneY9
+ recM8DeGDMOPo9ezd
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recopFBsq4TmG87Op
gnf
gnr
+
recbAMyCyUX2bLKfz
2022-11-07T18:57:50Z
- 000
+ simplesim.snapshot.heatpumpwithbooststore.000
+ Active
+ Json
recKFwLpMfoUPjFYI
recrInCQkfqVOaAJp
recZwSFwN4qnwJdmE
@@ -7311,166 +7831,159 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recVDfwQzayL572Ip
rec7Kmzb0rNhgYfq6
recFVS00yEVtm2sYI
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recNgwEZ9cfcNmeTI
- Pending
- recVOa2DYOtTyarDA
- recM6At5qFrk4dsir
- recJnQIpCbM1mDUV6
- snapshot.heatpumpwithbooststore.000
- Active
- Json
+ 000
1
- snapshot.heatpumpwithbooststore
+ recNgwEZ9cfcNmeTI
+ simplesim.snapshot.heatpumpwithbooststore
000
1
Pending
- gwatn
+ recJnQIpCbM1mDUV6
+ Pending
+ recVOa2DYOtTyarDA
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
satn
+
recbGrdqqYGiwVYVK
2022-11-12T08:15:09Z
- 000
+ tadeed.specs.hack.000
+ Active
+ Json
recJZMdMai2LWeadg
rec1k8ewouaBtPAoB
recfU5SZEVJA9EYB3
rec1sA97XqAvz5PmW
- recb9fI4kRkTYXDzA
- recuGgxcKPz76mhQc
- Pending
- recFreOp8J4dIjXkD
- reciUjZq6Ym3P59mT
- tadeed.specs.hack.000
- Active
- Json
+ 000
1
+ recuGgxcKPz76mhQc
tadeed.specs.hack
000
1
- Pending
+ Active
+ recFreOp8J4dIjXkD
+ reciUjZq6Ym3P59mT
+ Active
+ recb9fI4kRkTYXDzA
gwatn
gnf
+
recbMWz8PxqJUI41L
2023-01-28T00:17:00Z
- 000
- true
+ multipurpose.sensor.component.gt.000
+ Active
+ Json
recMlJWemMArI2Qrj
recqk08O9ID51tC31
recqBM04MFQCAkFfy
recuTyHJfuZVMXRQ4
rec9fsScoo91bMhGw
recDmQ95OLj1UhZsU
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- recKA0g4F2FAH28QX
- Active
rec2HyLffy6QK9QId
- rec0BOEFEF3Tvn5vW
- recly1p2PV8V88LXc
- ComponentId
- multipurpose.sensor.component.gt.000
- Active
- Json
+ 000
true
MultipurposeSensorComponent
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ recKA0g4F2FAH28QX
multipurpose.sensor.component.gt
000
1
Active
+ rec0BOEFEF3Tvn5vW
+ recly1p2PV8V88LXc
+ ComponentId
+ Active
Type for tracking Multupurpose Sensor Components
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
https://g-node-registry.readthedocs.io/en/latest/component.html
+ true
scada
gwproto
+
recbZXiheXqQdc7b6
2022-11-17T06:20:43Z
- 000
- recbnSBQbnHs5KuDy
- recdUSog9bonuORLH
- recdjt7dskJqDJASY
- Pending
- recvpIR8rXsHiuLTP
market.book.000
Active
Json
+ recbnSBQbnHs5KuDy
+ recdUSog9bonuORLH
+ 000
1
+ recdjt7dskJqDJASY
market.book
000
1
Pending
+ recvpIR8rXsHiuLTP
+ Pending
MarketMaker's list of bids for a MarketSlot
gwmm
+
recbrp6V9qD6J1NHb
2023-01-19T23:59:55Z
- 000
- recmmOlM4okW6SVMc
- recYFjgEXfTizyRiv
- recvbnpa4cX2nNp9p
- recb9fI4kRkTYXDzA
- rectwW4fAko33gT7a
- Pending
- recjvYtEfvMLsZJtV
- recrpoQF951bAlwS5
- recWK98fj1fTua1k9
scada.cert.transfer.000
Active
Json
+ recmmOlM4okW6SVMc
+ recYFjgEXfTizyRiv
+ 000
1
This is a payload designed to be sent from a SCADA device to the GNodeFactory after the SCADA has opted into its certificate.
+ rectwW4fAko33gT7a
scada.cert.transfer
000
1
- Pending
+ Active
+ recjvYtEfvMLsZJtV
+ recrpoQF951bAlwS5
+ Active
Scada Certificate Transfer
+ recvbnpa4cX2nNp9p
+ recb9fI4kRkTYXDzA
+ recWK98fj1fTua1k9
gwatn
gnf
+
recc2Km1jUViJqVeK
2022-11-08T03:22:46Z
- 001
- recWNBlJHWBH2q9kg
- recf4ivPE7VmMFolZ
- recUGf1IY6nFFb5Gw
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recjpCj1MoKBvlAbR
- Pending
- recB2fok3eH3LnZmw
- rec2Gvd8Nt7DvqTpf
- recx5JlRHk2l9zzQK
- recFnEf8eIe2zVWOY
ready.001
Active
Json
+ recWNBlJHWBH2q9kg
+ recf4ivPE7VmMFolZ
+ recUGf1IY6nFFb5Gw
+ 001
@@ -7478,62 +7991,66 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Only intended for simulations that do not have sub-second TimeSteps.
TimeCoordinators based on ```gridworks-timecoordinator``` have a notion of actors
whose `Ready` must be received before issuing the next TimeStep.
+ recjpCj1MoKBvlAbR
ready
001
1
- Pending
+ Active
+ recFnEf8eIe2zVWOY
+ Active
Used in simulations by TimeCoordinator GNodes
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
https://gridworks.readthedocs.io/en/latest/time-coordinator.html
- gwatn
- gwtime
- gwmm
gridworks
+
reccFZLsGTVhuzGsn
2022-09-14T16:27:37Z
- 000
- recrD0Mo96XS8itFz
- reclWEqctUrS5WXwG
- recopFBsq4TmG87Op
- recvbnpa4cX2nNp9p
- rechCPLYrkc1asuPJ
- {
-"ValidatorAddr":"7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII",
- "HalfSignedCertCreationMtx":"gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxECeARrO2EeYKIqsObwggXge02aA+Lf5D/lXB23O98qsyuf7f9jqDu+WT2U/KB53CPR+XSUWGh5nonEUdp63TDIEo3RocgKhdgGjdHhuiaRhcGFyhKJhbq9Nb2xseSBNZXRlcm1haWShbcQgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmhdAGidW6lVkxEVFKjZmVlzQPoomZ2A6NnZW6qc2FuZG5ldC12MaJnaMQgZGDSySH2HEYnRD3oWlUn77Xl6iBj3QBYmURoHXJQSRCibHbNA+ukbm90ZcQrTW9sbHkgSW5jIFRlbGVtZXRyeSBTdXJ2ZXlvcnMgYW5kIFB1cnZleW9yc6NzbmTEIMdnGF0JPZPHHFmVn8fmYiS7Wzi6UObcSZTp1gpcJYQHpHR5cGWkYWNmZw==",
- "TypeName":"tavalidatorcert.algo.create",
- "Version":"000"
-}
- Active
- rec3V5oWa4cyRtWNc
- rec50dqlnp2l3PH7B
- rec5LcnUo5uGaILj6
- recSkcGAjBCP4uFPX
tavalidatorcert.algo.create.000
Active
Json
+ recrD0Mo96XS8itFz
+ reclWEqctUrS5WXwG
+ 000
1
Meant to be sent from a pending TaValidator to the GNodeFactory (Gnf), to
initiate the process of certifying the pending TaValidator.
+ rechCPLYrkc1asuPJ
tavalidatorcert.algo.create
000
1
Active
+ rec50dqlnp2l3PH7B
+ rec0I8YsmUHlc5F67
+ Active
Used for Step 1 of TaValidator certification
+ recopFBsq4TmG87Op
+ recvbnpa4cX2nNp9p
+ {
+"ValidatorAddr":"7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII",
+ "HalfSignedCertCreationMtx":"gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxECeARrO2EeYKIqsObwggXge02aA+Lf5D/lXB23O98qsyuf7f9jqDu+WT2U/KB53CPR+XSUWGh5nonEUdp63TDIEo3RocgKhdgGjdHhuiaRhcGFyhKJhbq9Nb2xseSBNZXRlcm1haWShbcQgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmhdAGidW6lVkxEVFKjZmVlzQPoomZ2A6NnZW6qc2FuZG5ldC12MaJnaMQgZGDSySH2HEYnRD3oWlUn77Xl6iBj3QBYmURoHXJQSRCibHbNA+ukbm90ZcQrTW9sbHkgSW5jIFRlbGVtZXRyeSBTdXJ2ZXlvcnMgYW5kIFB1cnZleW9yc6NzbmTEIMdnGF0JPZPHHFmVn8fmYiS7Wzi6UObcSZTp1gpcJYQHpHR5cGWkYWNmZw==",
+ "TypeName":"tavalidatorcert.algo.create",
+ "Version":"000"
+}
+ recSkcGAjBCP4uFPX
https://gridworks.readthedocs.io/en/latest/ta-validator.html
gnf
- gridworks
gwatn
+
reccsu6ZeZHKoDqDy
2023-03-13T18:11:53Z
- 101
+ spaceheat.node.gt.101
+ Active
+ Json
receX5lrBDRQOfwtV
recwBj4KUuccY6gSN
rechbn6z9nVyxod0R
@@ -7545,54 +8062,56 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3JoWyUlqUfiTLp
rec59ZiBmdpSMTFx6
recE7gfNAh0QZrQT6
- rec24qjC90m0f4Kvl
- recb9fI4kRkTYXDzA
- recijDUCMCF0drLi3
- Pending
recQeMNisJZjsYXTl
recomGYBJ9ldSsiNU
- recAW5oPrc0QXbD9C
- spaceheat.node.gt.101
- Active
- Json
+ 101
true
ShNode
1
Type for tracking information about a Spaceheat Node.
+ recijDUCMCF0drLi3
spaceheat.node.gt
100
0
Deprecated
+ Pending
Spaceheat Node
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ recAW5oPrc0QXbD9C
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
+
reccy0CAc6XAa6fGb
2022-06-20T13:14:15Z
- 100
- recbRDhEoGNs9jYEB
- recjI10N2qf36kpmC
gt.sh.cli.scada.response.100
Deprecated
Json
+ recbRDhEoGNs9jYEB
+ 100
1
snapshot.spaceheat
+ recjI10N2qf36kpmC
gt.sh.cli.scada.response
110
0
Deprecated
+
recd5K0XiAzHsj2Pw
2022-11-08T08:14:42Z
- 000
+ latest.price.000
+ Active
+ Json
rec9XARl8tvdTDGbm
recNJVhjAFGvStAch
recUCVyvcUuDXgUdj
@@ -7600,57 +8119,47 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recSWBVF41HakpB18
recFAv8cdbxLhK5Wh
recpS2nfI9nrA1Mco
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recdsSDIz6EmZCvr9
- recZS8rV9vLS5kFN1
- rec9aKp2kx0NQDDc6
- recU3mtc9M0U3uM3q
- Pending
- recnCUFtuRaM9imRG
rec75xMuw0SMkzjVc
- recanqppJwatq7fmU
- rec8cREVO03dOhbWy
- latest.price.000
- Active
- Json
+ 000
1
The price of the current MarketSlot
+ rec9aKp2kx0NQDDc6
latest.price
000
1
- Pending
+ Active
+ recanqppJwatq7fmU
+ rec8cREVO03dOhbWy
+ Active
+ recU3mtc9M0U3uM3q
+ recnCUFtuRaM9imRG
Latest Price for a MarketType, sent by a MarketMaker
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recdsSDIz6EmZCvr9
+ recZS8rV9vLS5kFN1
https://gridworks.readthedocs.io/en/latest/market-slot.html
gwatn
gwmm
+
recdNEAMkZeOLS8Vo
2022-08-11T17:27:11Z
- 000
+ telemetry.snapshot.spaceheat.000
+ Active
+ Json
recHYSlx2bkFlTrmH
recuI66lGgVCVPoNn
recl3xwMzRxkadUBM
recOpsZkD5RkikKq4
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recBNevzmPrROWd5j
recz0QGMX8yGwdpdl
- Active
rec2HyLffy6QK9QId
- recSENoEtLHiKubGR
- recMiJmpBdJWV7BmB
- recytzNgmiqkWb2di
- rec2Sl2RMNjKXgu98
- recj0W1AWU40FitTy
- telemetry.snapshot.spaceheat.000
- Active
- Json
+ 000
@@ -7658,98 +8167,100 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
A snapshot of all current sensed states, sent from a spaceheat SCADA to its
AtomicTNode. The nth element of each of the three lists refer to the same reading
(i.e., what is getting read, what the value is, what the TelemetryNames are.)
+ recBNevzmPrROWd5j
telemetry.snapshot.spaceheat
000
1
Active
true
+ rec2Sl2RMNjKXgu98
+ Active
Snapshot of Telemetry Data from a SpaceHeat SCADA
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
+ recj0W1AWU40FitTy
https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
- newatn
gwproto
+
recdXzxjKArjU2z9Z
2022-07-12T18:11:34Z
- 000
+ current.transformer.cac.gt.000
+ Active
+ Json
recLfb3AjS6LNracR
recP17DkWzTZm2SdF
recOQgTyTBu9JnU1b
recgIQb2yDNArvM73
- recBX9s6MqEmX6EjU
reciGUKC09U7flB6M
- Pending
- current.transformer.cac.gt.100.100
recLQWqTvGwSz2GcN
- ComponentAttributeClassId
- current.transformer.cac.gt.000
- Active
- Json
+ 000
true
CurrentTransformerCac
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Cac, or ComponentAttributeClass, is part of this structure.
+ current.transformer.cac.gt.100.100
+ recBX9s6MqEmX6EjU
current.transformer.cac.gt
000
1
Pending
+ ComponentAttributeClassId
+ Pending
Type for trackingCurrent Transformer ComponentAttributeClasses
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
+
rece2rn8uFKupSOZM
2022-11-30T19:44:29Z
- 000
- reckRoTaa3PYdQ7Bi
- recd6tt9JGZJKMtox
- recOSHv3NhU02KeIl
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recn81szg83l6vw2o
- Pending
- recVQ3e3vgtZiDbe0
- recI3qMEZNOVje6qG
- recmM5fq13YDWN7oc
debug.tc.reinitialize.time.000
Active
Json
+ reckRoTaa3PYdQ7Bi
+ recd6tt9JGZJKMtox
+ recOSHv3NhU02KeIl
+ 000
1
+ recn81szg83l6vw2o
debug.tc.reinitialize.time
000
1
Pending
+ recVQ3e3vgtZiDbe0
+ recI3qMEZNOVje6qG
+ recmM5fq13YDWN7oc
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
gwtime
gworld
gnf
+
receGKnJ8CfemQLdQ
2022-07-03T22:18:03Z
- 100
+ gt.sh.multipurpose.telemetry.status.100
+ Active
+ Json
rec2l6jE1FMj92czA
rec6fCUex0HlMSbTR
recE3gvDLm8Zvz5AD
recqQXSGmEMh3lnTf
rectMt3G7nhz2ujs5
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recCGkiwasshpUQnL
recZOVb1cq9Dq3Oi5
recK2zOa4WxMEeSn9
- Active
rec2HyLffy6QK9QId
- recoogxM5OZ1mFRCc
- recSLBrC1olag5pK9
- gt.sh.multipurpose.telemetry.status.100
- Active
- Json
+ 100
@@ -7758,350 +8269,502 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
for a Spaceheat SCADA. Designed as part of a status message sent from the SCADA
to its AtomicTNode typically once every 5 minutes. The nth element of each of its
two lists refer to the same reading (i.e. what the value is, when it was read).
+ recCGkiwasshpUQnL
gt.sh.multipurpose.telemetry.status
100
1
Active
true
+ recoogxM5OZ1mFRCc
+ Active
Data read from a MultipurposeSensor run by a Spaceheat SCADA
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
+ recSLBrC1olag5pK9
https://gridworks-protocol.readthedocs.io/en/latest/multipurpose-sensor.html
gwproto
+
recepkVk3vOelGIUa
2022-07-09T23:03:52Z
- 100
- recCpUQ75l1hoKN45
- rec2kI3cJzijFOyV4
- recDqvo81744FkpWd
spaceheat.status.100
Pending
Json
+ 100
1
+ recCpUQ75l1hoKN45
spaceheat.status
100
1
+ rec2kI3cJzijFOyV4
+ recDqvo81744FkpWd
+
recf5K0BP9qLabpdS
2022-11-21T05:21:40Z
- 000
+ pause.time.000
+ Active
+ Json
recU5B4V3aPnvMPZf
rec6tXwpa0rqEikXW
recscJlOCJSX2ckU5
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
+ 000
+
+
+
+ 1
reckliobnY6Igi5Fa
- Pending
+ pause.time
+ 000
+ 1
+ Pending
+
recOEHxBFFDNPACx1
recl5eLv36HJnILWJ
recZCRfLe9nDmrRAU
- pause.time.000
+ Pending
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ gwtime
+ gworld
+ gnf
+
+
+
+ recfDQscmquO0odpo
+ 2023-05-10T14:21:07Z
+ flo.params.brickstorageheater.000
Active
Json
+ recwqncn6q1JvTx8C
+ recJL7h0Cdb45oTNh
+ recEkW3h7HrQ6uigy
+ reckc7GfMfrl08GTz
+ recHUqMGWS2zqNV6H
+ reca2V0hCWFV463bf
+ recVyMdsBkXQRulvG
+ recuCxturGwYam9W0
+ recuKvC5D4tUOKCIH
+ rec8ybKjyg4p5PQBZ
+ rec30du75CvosnjIj
+ recbjZkDY0xosm28b
+ recuK1w199LQQCRjs
+ recfyyQ1OXYTVJeGV
+ recnTZqJLAXkC0udQ
+ recZ0rfW1Kha3I1H4
+ recrlszZe4JuLa5ZU
+ recbIZmTs1RacVBoR
+ recEmOauAesrLmBV2
+ rec8UGujigt7hxKDU
+ rec2Q5gra7JT1hP5z
+ rec8yYiDwp5tkxoeR
+ receLZhjMOO95MTfS
+ recS3mPyncJofH01H
+ recrUmUhuBYrY146C
+ recq321QPv8igpWPT
+ recEMwQrGJ53FQep1
+ rec9LV9kNuSH5H6fq
+ recCMMvdApuru0zxY
+ recvKQH8VYCXnFhS9
+ rec72ld1OI4hNGzPB
+ rec9g3ackYYzyweKE
+ recA15Ak50x6bNMx1
+ recEyU9EKDtM3bD18
+ 000
1
- pause.time
+ FloParams for the BrickStorageHeater AtomicTNode strategy.
+ recuoD0qsOivs7xOo
+ flo.params.brickstorageheater
000
1
- Pending
+ Active
- gwtime
- gworld
- gnf
+ recRis6YmxjqUGg0c
+ Active
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html
+ gwatn
+
recgdLh7RL2N6DtWI
2022-06-14T10:57:42Z
- 000
+ component.gt.000
+ Active
+ Json
recm6RNmsDWsa2sSy
recxu6lhNMYHCoQey
recLO20AZmUda0yof
recsW0wQZK8S5BU8o
- rec24qjC90m0f4Kvl
- recEdlcUTBfQ9Hy6D
recN8NS2KiZw0Wzbp
- Active
- recnode9jR9HdGfcE
- recg17XBd52YMSt1Q
- recnQKx1KrJs2FsGa
- ComponentId
- component.gt.000
- Active
- Json
+ 000
true
Component
1
+ recEdlcUTBfQ9Hy6D
component.gt
000
1
Active
+ recnode9jR9HdGfcE
+ recg17XBd52YMSt1Q
+ recnQKx1KrJs2FsGa
+ ComponentId
+ Active
+ rec24qjC90m0f4Kvl
scada
gwproto
+
rech8RtBLsLVe51DN
2022-09-20T13:30:10Z
- 000
+ tadeed.algo.transfer.000
+ Deprecated
+ Json
recFkS7P6k45TTQjT
reckEe9774XgeDvIL
recnK1jOCabM7QHvd
recobizeq1ZYGN5A2
recXr4oGZuc4Rse9N
recuCJM4TchlCmVVj
- recdi7BezBflZlH45
- Active
- recAV3jdy4xK2e6V4
- recgkttJLsyUmqLlp
- rec5VDuzpUgfcEkJx
- recP9v8cvgHgbDnpZ
- recgr767PF8P1X06i
- rectREWSiFBVSQoOq
- recOyMaXAxwASJw4J
- tadeed.algo.transfer.000
- Deprecated
- Json
+ 000
1
+ recdi7BezBflZlH45
tadeed.algo.transfer
001
0
Deprecated
+ recAV3jdy4xK2e6V4
+ recgkttJLsyUmqLlp
+ rec5VDuzpUgfcEkJx
+ recP9v8cvgHgbDnpZ
+ recgr767PF8P1X06i
+ rectREWSiFBVSQoOq
+ recOyMaXAxwASJw4J
+ Active
+
rechKgkXf88R5dkGD
2023-01-08T10:20:08Z
- 000
- rechs1D8dytBH2C5s
- recqsyHUDPXWxf39U
- recvbnpa4cX2nNp9p
- recb9fI4kRkTYXDzA
- recu1iYKh47xRDEt9
- Pending
- rec48h8N51cFfC0Y2
heartbeat.algo.audit.000
Active
Json
+ rechs1D8dytBH2C5s
+ recqsyHUDPXWxf39U
+ 000
1
Algo payload with report of last HeartbeatB sent to partner via Rabbit, to be sent to
DispatchContract on Algo blockchain
+ recu1iYKh47xRDEt9
heartbeat.algo.audit
000
1
Pending
- gwatn
+ Pending
+ recvbnpa4cX2nNp9p
+ recb9fI4kRkTYXDzA
+
rechVGhiKUuIgoWYy
2022-11-17T01:54:41Z
- 000
+ market.maker.info.000
+ Active
+ Json
recvq0MygOUulKFdl
recwDJqmDK7sTdTTC
recBw1TvOwQk1gM0K
recTV2IpdZjy1gFiQ
- recb9fI4kRkTYXDzA
- recdsSDIz6EmZCvr9
- recGf44plaa1jjiWQ
- Pending
- recYts9GI3HDasco4
- market.maker.info.000
- Active
- Json
+ 000
1
+ recGf44plaa1jjiWQ
market.maker.info
000
1
Pending
+ recYts9GI3HDasco4
+ Pending
+ recb9fI4kRkTYXDzA
+ recdsSDIz6EmZCvr9
gwmm
+
+ itroMRR1cxM9sjTs7/rechVGhiKUuIgoWYy
rechXkF4uGNAulje7
2022-11-08T03:38:33Z
- 000
+ price.quantity.000
+ Active
+ Json
recVoo4kfTnzJtjJR
recajodVScBvapTcg
recEPPqtrPd0FeUOQ
recehDezdvO5nKJJQ
recHl3HcnTyMN0bF2
- recGQ4lX5HOPJraGN
- Pending
recounhEj97w5SfDm
rec75xMuw0SMkzjVc
- rec0yahRyau7Mzmzk
- recwv4Bsb1NA1uZxn
- price.quantity.000
+ 000
+
+
+
+ 1
+ recGQ4lX5HOPJraGN
+ price.quantity
+ 000
+ 1
+ Active
+
+ rec0yahRyau7Mzmzk
+ recwv4Bsb1NA1uZxn
+ Active
+ gwatn
+ gwmm
+
+
+
+ rechp89wabr5kkqti
+ 2023-06-25T20:43:32Z
+ atn.params.simpleresistivehydronic.000
Active
Json
+ recaMsFqtaJuXv5AD
+ recANnuMlvL9PGtYv
+ recQRsIq3xTiLWopK
+ rec1UsBj2W4QOsHy3
+ recTMm4lhEWh9m2It
+ recPuuEJJrwfAgwcn
+ recCRcF7T7qTSMD37
+ recm85TehRT6oXtTP
+ recQVmUtZgyRJS0Fw
+ reclVOYJSKp7L4SON
+ recOd8utfibXflWak
+ recyaa7Sje4vX7qsj
+ recDXgR1mkWGl8FlL
+ recmgWy6guY7V2or8
+ recufHL4WVjMqEiI8
+ recw8d5Trh6AeoLYJ
+ recmQaQas8xe2JRvv
+ recGljnJKcjLcwmVu
+ recZ4cjPPBxvCcE1F
+ recAu0OzbjWTSSUJq
+ reclneIsw2C57Nn40
+ recC9UVPsqE9cHYQS
+ recG7vJbQ7FW4DDT4
+ rec4S3L3NZiPihbLi
+ recf9ZTshqRu81HZo
+ recA15Ak50x6bNMx1
+ 000
1
- price.quantity
+ recXUDaPBBDl9wqBu
+ atn.params.simpleresistivehydronic
000
1
Pending
+ recZsOKTlEbZPh3rD
+ Pending
+ recb9fI4kRkTYXDzA
gwatn
- gwmm
+
reciGkEyh61sro7R0
2023-03-25T18:44:02Z
- 110
+ gt.dispatch.boolean.local.110
+ Active
+ Json
recKo7g23Yhkvozc9
recy22SSV0XnqMR9U
reci7qQs2JCeyRbV7
recMWNMncekPOwSmK
- recb9fI4kRkTYXDzA
- recqSXVzLo8RtEjlH
- recoAsAg06Qp7jYp3
- Active
- recktn7mVOjp0WCql
- gt.dispatch.boolean.local.110
- Active
- Json
+ 110
1
By Locally, this means sent without access to Internet. The HomeAlone actor must reside within the Local Area Network of the SCADA - typically it should reside on the same hardware.
+ recoAsAg06Qp7jYp3
gt.dispatch.boolean.local
110
1
Active
true
+ recktn7mVOjp0WCql
+ Active
Dispatch message sent locally by SCADA HomeAlone actor
+ recb9fI4kRkTYXDzA
+ recqSXVzLo8RtEjlH
gwproto
+
reciPWPv22Y3pt5oD
2022-08-11T15:25:06Z
- 100
+ ear.g.node.alias.list.toss.100
+ Active
+ Json
rec0W9aExBJ7Kueom
rec0AFxprybFFfPgz
rec1SyaI5uoDhNW1f
recTVpMk0yoQ95CTi
- recGPwKi4Sb6sxayy
- ear.g.node.alias.list.toss.100
- Active
- Json
+ 100
1
+ recGPwKi4Sb6sxayy
ear.g.node.alias.list.toss
100
1
+
recjrd0YFmqQQm5sv
2022-06-07T09:29:41Z
- 000
+ simple.temp.sensor.component.gt.000
+ Active
+ Json
recIu6hGiK3PDyJrn
recIoMtP3BgfOzQ9C
rece76qbENBm5shvn
recojCBLEKvcVMiLq
recvDPtsFQBsY8Kln
- rec24qjC90m0f4Kvl
- recHrNVLHcDTTqaCq
- Active
- reciQYtVczpDGsA1n
- reckTKf3fzOuHTt7p
- ComponentId
- simple.temp.sensor.component.gt.000
- Active
- Json
+ 000
true
SimpleTempSensorComponent
true
1
GridWorks Spaceheat SCADA uses the GridWorks GNodeRegistry structures and abstractions for managing relational device data. The Component associated to a SpaceheatNode is part of this structure.
+ recHrNVLHcDTTqaCq
simple.temp.sensor.component.gt
000
1
Active
+ reciQYtVczpDGsA1n
+ reckTKf3fzOuHTt7p
+ ComponentId
+ Active
Type for tracking Simple Temp Sensor Components
+ rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component.html
scada
gwproto
+
+
+
+ reckQg9yTsSw2dxbh
+ 2023-05-01T22:06:40Z
+ simplesim.driver.report.000
+ Active
+ Json
+ recoEOdUEOJ4NE1i8
+ reczco2IoqBeaLSg9
+ recCQfmUkI2by85NK
+ recCTlz2ZI9XsPdtX
+ 000
+
+
+
+ 1
+ recxwsQKMLrM6UR5g
+ simplesim.driver.report
+ 000
+ 1
+ Active
+
+ recDqWAGc9wH8TzcX
+ Active
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ gwatn
+
reckTci9LVdsEt2WQ
2023-01-13T21:24:49Z
- 110
+ gt.dispatch.boolean.110
+ Active
+ Json
recZIrtKh1EyjFqAi
recKRNkuHxdnCTbXe
recdyA1ugrK3wpjRN
recnbtuaL96kZW7Sn
recsgnh5t5it39M5o
recvGseMiH5N85Am3
- recb9fI4kRkTYXDzA
- rec24qjC90m0f4Kvl
- recqSXVzLo8RtEjlH
- rechZBY0G1JuNeEuG
- Active
- recYXSUnBW9DHXJWw
- recwZgp7HvS1QX41E
- GNodeId from gt.dispatch.boolean.100 changed to GNodeInstanceId
- gt.dispatch.boolean.110
- Active
- Json
+ 110
1
Boolean dispatch command sent over the cloud broker from one GNode (FromGNodeAlias/ FromGNodeId) to another (ToGNodeAlias). AboutNodeAlias is the node getting dispatched. It may be a GNode, but it can also be a SpaceHeatNode.
+ rechZBY0G1JuNeEuG
gt.dispatch.boolean
110
1
Active
+ GNodeId from gt.dispatch.boolean.100 changed to GNodeInstanceId
true
- gwatn
+ recwZgp7HvS1QX41E
+ Active
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ recqSXVzLo8RtEjlH
gwproto
+
recm2rM5o9GxgCqbL
2022-06-20T12:58:57Z
- 100
- recZ6Qnf2ivCfWkSG
- receVdNEfIE1HLnwN
gt.sh.cli.atn.cmd.100
Active
Json
+ recZ6Qnf2ivCfWkSG
+ 100
1
+ receVdNEfIE1HLnwN
gt.sh.cli.atn.cmd
110
0
Deprecated
true
+
- itrmsOsvlYd4gnFzo/recm2rM5o9GxgCqbL
recm57e2rjMmC2c6n
2022-06-14T10:58:01Z
@@ -8130,6 +8793,37 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec24qjC90m0f4Kvl
scada
gwproto
+
+
+
+ recm5UcVaAPAtrrFS
+ 2023-05-01T17:50:49Z
+ simplesim.snapshot.brickstorageheater.000
+ Active
+ Json
+ recfeWhbkmYYdayn3
+ recA6xaBWKtDeVbZs
+ recTtF957kyOejDRh
+ rec786yhFCPsLdPgd
+ recESvZItoy9uRIyI
+ recSZuXgqgnSQCBOa
+ 000
+
+
+
+ 1
+ recioXjg9Rh1AaoBV
+ simplesim.snapshot.brickstorageheater
+ 000
+ 1
+ Active
+
+ recntdJAXDry45FT5
+ Active
+ recb9fI4kRkTYXDzA
+ rec24qjC90m0f4Kvl
+ gwatn
+
recmVKHF3ugtUOYrz
@@ -8166,6 +8860,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
newatn
scada
gwproto
+
recn0YpsBzBOA9yvq
@@ -8191,6 +8886,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recb9fI4kRkTYXDzA
recopFBsq4TmG87Op
gnf
+
recncxVAzn76fL8xN
@@ -8214,6 +8910,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Deprecated
+
recpHvfV5mSI7pgRP
@@ -8242,6 +8939,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recb9fI4kRkTYXDzA
recqSXVzLo8RtEjlH
gwproto
+
recpZ6JqSrTi4xaOu
@@ -8273,6 +8971,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Type for tracking Current Transformer Components
rec24qjC90m0f4Kvl
https://g-node-registry.readthedocs.io/en/latest/component.html
+
recqhQADHovWX1hOl
@@ -8312,11 +9011,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
https://g-node-registry.readthedocs.io/en/latest/component-attribute-class.html
scada
gwproto
+
recrZz3gmzl97POA1
2022-11-09T22:59:39Z
- atn.params.heatpumpwithbooststore.000
+ atn.params.heatpumpwithbooststore.001
Active
Json
rec6sw1bj1xU6alKt
@@ -8357,31 +9057,30 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recE1J9oSFyTE5lkp
recTmaH9Ix1tx009O
rec4VyYOa9NyxUjui
- recBYlRmPwCbVbTMn
- recNujglYpalkIIRN
- recAw8J1ipB7Ef1SZ
rec4S3L3NZiPihbLi
recf9ZTshqRu81HZo
rec57bh9xoIxLUHjY
recX0A9nSriRUvl9n
recA15Ak50x6bNMx1
recEyU9EKDtM3bD18
- 000
+ 001
1
recNkT1cGWR3vqFMM
atn.params.heatpumpwithbooststore
- 000
+ 001
1
- Active
+ Pending
+ Remove GNodeInstanceId from atn.params
- recGRKTWPhlGhVZqf
recl5OGEwbCR9w3O7
- Active
- gwatn
+ Pending
+ Params for HeatpumpWIthBoostStore Atn strategy
+ recb9fI4kRkTYXDzA
satn
+
recrnRklRws6Txbqr
@@ -8403,15 +9102,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Active
true
- rec86XZBf9WnCg5bX
- rec2a1O4X0TlMmhsW
- recLjbg3qWweCJCqx
rec9wSDE2snnCJmLi
Active
recb9fI4kRkTYXDzA
rec24qjC90m0f4Kvl
- newatn
gwproto
+
recsHXkpUxoOF9vYp
@@ -8433,13 +9129,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
price.quantity.unitless
000
1
- Pending
+ Active
recDST3lwGBFXqsz1
rec5dH5f6YcOKD0RU
- Pending
+ Active
gwatn
gwmm
+
rectayh08KEGGGcZc
@@ -8462,9 +9159,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Active
- recWbhB62TTgTQUtI
recJqKGuHpco4ynvW
- recKCYKKIRjtnFzdh
Active
Clarifies whether cert id is an Algorand Standard Asset or SmartSig
recopFBsq4TmG87Op
@@ -8475,9 +9170,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
"Version":"000"
}
recMYPnr592PEzOi7
- gwatn
gridworks
- gnf
+
recvGFiTtzXNrhLBm
@@ -8505,6 +9199,44 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Bid ack
rec24qjC90m0f4Kvl
recdsSDIz6EmZCvr9
+
+
+
+ recvJ9OVpqVVP895H
+ 2023-05-10T14:21:14Z
+ flo.params.000
+ Active
+ Json
+ rec5tlsMd4hrJm4Yi
+ recqEqS1dMXLaWYRD
+ reczyYbX7MCDw4qpM
+ recPixDGsGJ5nEHUv
+ recCXUZRdtGc2hQIx
+ recMcmv8GCUtIZ3Tx
+ rec9AehNwuheAEZCw
+ rec08KVslwkqJBLtV
+ recsBD9IGwQ7NAy0K
+ recHRWGtm51BPqgFb
+ 000
+
+
+
+ 1
+ Derived classes are expected to have TypeNames enforced as literals that start with flo.params. E.g. flo.params.brickstorageheater. This container is used for sending messages that include flo.params (i.e, flo.params.report
+ recGMHAv9IvCjusuS
+ flo.params
+ 000
+ 1
+ Active
+
+ reccIKvkAunTQR3uO
+ Active
+ Base class for Forward Looking Optimizer params
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ https://gridworks-atn.readthedocs.io/en/latest/flo.html#flo-params
+ gwatn
+ true
recvWBuo1Ws1SIL4b
@@ -8539,6 +9271,86 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recvbnpa4cX2nNp9p
gnf
gwatn
+
+
+
+ recw5evm1WetKAzZG
+ 2023-05-01T17:33:35Z
+ atn.params.brickstorageheater.000
+ Active
+ Json
+ recB7NDDe5xXWHh9M
+ recOSbtwvb9Jepzxm
+ reci3R8YqMvMYlLuI
+ recO44dCWgk26aPoL
+ recvo0jJIrIDDr23i
+ recAoJrWkdqNbZwLx
+ recIClynqMSTgczNz
+ recUcTdqja2lseqny
+ recRS18rB7QWfITKv
+ rec9TfxvkRChizDvB
+ recUisNTiM4JQSM8s
+ recwO34MxjMi4xVbh
+ recBoiuVaUD2AUett
+ recOB8YIQSx4CkN54
+ recc3KsHCvd6Pp9rs
+ recDcyZwTzNJhJTSW
+ rechO4iVyXL7dtIKk
+ recsWscZyAT8lUvQG
+ recpAPAOQxog3tu7c
+ reckE8i5FbwL5N8Vr
+ recGuqNNHJZ2Zrcu8
+ recRcY8WNqknxX5sV
+ rec4S3L3NZiPihbLi
+ recf9ZTshqRu81HZo
+ recA15Ak50x6bNMx1
+ recEyU9EKDtM3bD18
+ 000
+
+
+
+ 1
+ Parameters for a model of a ceramic brick thermal storage room unit, using a two-dimensional Dijstra graph parameterized by 'fullness of the thermal battery' and time.
+ rech3pl8AhjCA01Q1
+ atn.params.brickstorageheater
+ 000
+ 1
+ Active
+
+ recvUI21ZPLimt9Tt
+ Active
+ Params for a BrickStorageHeater Atn Strategy
+ recb9fI4kRkTYXDzA
+ https://gridworks-atn.readthedocs.io/en/latest/brick-storage-heater.html
+ gwatn
+
+
+
+ recwXD4ryogKVwsnE
+ 2023-05-01T21:53:17Z
+ simplesim.driver.data.bsh.000
+ Active
+ Json
+ recbAjM31sjr5mRF3
+ recTfGFS2AGUc58Ig
+ reckfEeZNa1zs6pP1
+ rec93EBTpAUbcsD5E
+ 000
+
+
+
+ 1
+ recWWeMXxAoiOeWwx
+ simplesim.driver.data.bsh
+ 000
+ 1
+ Active
+
+ recF0p8e8Vmazeyd9
+ Active
+ recb9fI4kRkTYXDzA
+ gwatn
+
recwp0F6Gdrg8qLwb
@@ -8559,17 +9371,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
super.starter
000
1
- Pending
+ Active
- recx1ZcM9hO3GKRkp
- recSxY4F5Ewetp9tW
reckr1EbtWVGkY1KM
- Pending
+ Active
Used by world to seed a docker container with data needed to spawn and superviser GNodeInstances
recb9fI4kRkTYXDzA
- gworld
- gwatn
gridworks
+
recwr8WwMjrVGNL7L
@@ -8596,6 +9405,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reczkxumP7vIqoFkM
Active
scada
+
recxNIfCRauFrb57o
@@ -8617,28 +9427,16 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
heartbeat.a
100
1
- Pending
+ Active
Update: MyHex and YourLatestHex must have format HexChar
- recAKcZ5BDHN6JKil
- recASxd0yY7a1nWR4
- recnBbGAlK4U8sngT
- rec1qAnTlin7a194M
- recianedmKDqWVh0O
- recyENjaG4Mi1n27B
recsqbuLwrgitVmoY
- recQDvrJAF4lWWp1l
- Pending
+ Active
Used to check that an actor can both send and receive messages
recWwoTHJMScsOvnF
https://gridworks.readthedocs.io/en/latest/g-node-instance.html
- gnf
- gwatn
- gwtime
- gwmm
- gworld
- gnr
gridworks
+
recxdlQ6gCN8mD39r
@@ -8679,6 +9477,38 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
true
scada
gwproto
+
+
+
+ recy7fqBm5Cl94dnF
+ 2023-06-28T14:33:35Z
+ atn.outside.temp.regr.coeffs.000
+ Active
+ Json
+ recHnLyayIHQ166SI
+ recodlPgpP4zsi9bk
+ 000
+
+
+
+ 1
+ Coefficients for a linear regression of avg power leaving a building as a function of weather:
+
+PowerOut = Alpha + Beta * OutsideTempF
+
+ These are an example of Slowly Varying State variables maintained for a thermal storage heating Terminal Asset by
+ its AtomicTNode and Scada.
+ recuzRX6RAVYBuYO4
+ atn.outside.temp.regr.coeffs
+ 000
+ 1
+ Pending
+
+ recCgP2Dw5SfDjpp2
+ Pending
+ https://gridworks-atn.readthedocs.io/en/latest/data-categories.html#slowly-varying-state-variables
+ gwatn
+
recyD0ycgUiT7TiH2
@@ -8717,6 +9547,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
Deprecated
+
recyETDKMGTbGb0zf
@@ -8748,6 +9579,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Data Channel
recb9fI4kRkTYXDzA
gwproto
+
reczVqlxJInFWonml
@@ -8773,25 +9605,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
supervisor.container.gt
000
1
- Pending
+ Active
- recbuSNZg3DwAGxys
- recfLzamGrtSF52cT
recJbB2aEPqgo0e6D
- Pending
+ Active
Used to send and receive updates about SupervisorContainers
rec1S1Qh6ReE9UJxT
rec24qjC90m0f4Kvl
recb9fI4kRkTYXDzA
https://gridworks.readthedocs.io/en/latest/supervisor.html
- gworld
- gwatn
gridworks
+
reczzIn3wGYrEKtbr
2022-11-10T13:22:42Z
- flo.params.heatpumpwithbooststore.000
+ flo.params.heatpumpwithbooststore.001
Active
Json
reckPchT9nFs24QdF
@@ -8845,235 +9674,255 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec8xg10A3XVqZhG0
rec1HqF8uSZx4V5Qg
rec1OE8jCG5qkI4oK
+ recxJmpDJWx6LnEzW
+ rec12ghZsHZYMDdQG
rec4S3L3NZiPihbLi
recf9ZTshqRu81HZo
rec57bh9xoIxLUHjY
recX0A9nSriRUvl9n
recA15Ak50x6bNMx1
recEyU9EKDtM3bD18
- 000
+ 001
1
+ Flo params for the (private) HeatPumpWithBoostStore AtomicTNode strategy.
reci4VO3iee2LGfcG
flo.params.heatpumpwithbooststore
- 000
+ 001
1
- Active
+ Pending
- recGpv7lXS5nQj5jR
recvFLJdLpTh7dGh1
- Active
- gwatn
+ Pending
+ rec24qjC90m0f4Kvl
+ recb9fI4kRkTYXDzA
+ https://gridworks.readthedocs.io/en/latest/enums.html#gridworks.enums.StrategyName
satn
+
rec03iozTi9uddDyU
2022-11-10T14:18:50Z
+ K
true
- -1.1
true
- reczzIn3wGYrEKtbr
Number
- K
- 33
+ false
+ false
-1.1
+ reczzIn3wGYrEKtbr
Rate at which temperature falls in the pipes, when divided by gpm
+ 33
+ -1.1
+ Number
+
+
+ rec08KVslwkqJBLtV
+ 2023-05-10T14:38:18Z
+ StartHourUtc
+ true
+ true
+ Integer
false
false
- Number
+ 0
+ recvJ9OVpqVVP895H
+ 7
+ 0
+ Integer
rec0AFxprybFFfPgz
2022-08-11T15:26:36Z
+ ScadaAliasList
true
- true
true
- reciPWPv22Y3pt5oD
+ true
String
- ScadaAliasList
recb9fI4kRkTYXDzA
- ["dwtest.isone.ct.newhaven.orange1.ta.scada"]
LeftRightDot
false
false
+ ["dwtest.isone.ct.newhaven.orange1.ta.scada"]
"a.b-h"
+ reciPWPv22Y3pt5oD
String
LeftRightDot
rec0BWB4bW4ISm6cZ
2022-11-09T23:00:25Z
+ EmitterMaxSafeSwtF
true
- 170
true
- recrZz3gmzl97POA1
Integer
- EmitterMaxSafeSwtF
- 8
- 170
false
false
+ 170
+ recrZz3gmzl97POA1
+ 14
+ 170
Integer
rec0CcV18jeIt4AII
2022-09-22T18:51:47Z
+ OldChildAliasList
true
- true
true
- rec5bEVzI1k5qcXYg
+ true
String
- OldChildAliasList
- 2
recb9fI4kRkTYXDzA
- ["d1.isone.ver.keene.holly"]
LeftRightDot
false
false
+ ["d1.isone.ver.keene.holly"]
"a.b-h"
+ rec5bEVzI1k5qcXYg
+ 2
String
LeftRightDot
rec0DytUWYZc8xqSl
2022-11-10T13:23:47Z
+ DistPumpFeedbackModel
true
- ConstantDeltaT
- reczzIn3wGYrEKtbr
- EmitterPumpFeedbackModel
- 21
rec57bh9xoIxLUHjY
- "00000000"
- emitter.pump.feedback.model
+ sh.dist.pump.feedback.model
true
false
- emitter.pump.feedback.model.000
+ "00000000"
+ reczzIn3wGYrEKtbr
+ sh.dist.pump.feedback.model.000
ConstantDeltaT
+ 21
+ ConstantDeltaT
UpperPython
String
- EmitterPumpFeedbackModel000
- EmitterPumpFeedbackModel000
+ ShDistPumpFeedbackModel000
+ ShDistPumpFeedbackModel000
rec0EFbgjuaALp5xv
2022-06-24T20:28:37Z
+ AboutNodeAliasList
true
- true
true
- rec93KBYcwiqJ6OQy
+ true
String
- AboutNodeAliasList
- 1
- AboutNodeAliasList
recb9fI4kRkTYXDzA
- ["a.elt1"]
- List of aliases of the SpaceHeat Nodes getting measured
LeftRightDot
false
false
+ ["a.elt1"]
"a.b-h"
+ rec93KBYcwiqJ6OQy
+ List of aliases of the SpaceHeat Nodes getting measured
+ 1
+ AboutNodeAliasList
String
LeftRightDot
rec0PurqCSDSSL9gV
2022-11-04T18:36:22Z
+ OldTaDeedIdx
true
true
- recPy6SuizSerb3JG
Integer
- OldTaDeedIdx
- 1
- 10
false
false
+ 10
+ recPy6SuizSerb3JG
+ 1
Integer
rec0SCL5wm4k2QtCO
2022-07-03T22:29:19Z
+ ValueList
true
- true
true
- rec8c4KjhwNmfrRYP
+ true
Integer
- ValueList
- 2
- List of Values
- [0]
- The values of the readings.
false
false
+ [0]
+ rec8c4KjhwNmfrRYP
+ The values of the readings.
+ 2
+ List of Values
Integer
rec0W9aExBJ7Kueom
2022-08-11T15:26:21Z
+ AtomicTNodeAliasList
true
- true
true
- reciPWPv22Y3pt5oD
+ true
String
- AtomicTNodeAliasList
recb9fI4kRkTYXDzA
- ["dwtest.isone.ct.newhaven.orange1"]
LeftRightDot
false
false
+ ["dwtest.isone.ct.newhaven.orange1"]
"a.b-h"
+ reciPWPv22Y3pt5oD
String
LeftRightDot
rec0WVcC4M6yKdKuR
2023-02-14T20:39:17Z
+ Alias
true
true
- recEhzcpob8H7VuEF
String
- Alias
- 1
recb9fI4kRkTYXDzA
- "a.elt1"
LeftRightDot
false
false
+ "a.elt1"
"a.b-h"
+ recEhzcpob8H7VuEF
+ 1
String
LeftRightDot
rec0juF70Cw37hFpe
2023-02-14T20:39:29Z
+ DisplayName
true
- recEhzcpob8H7VuEF
String
- DisplayName
- 4
- "First boost element"
false
false
+ "First boost element"
+ recEhzcpob8H7VuEF
+ 4
String
rec0oIFJ2LAVcoLeV
2023-01-28T00:17:58Z
+ TelemetryNameList
true
true
- recULIwPg69M69185
- TelemetryNameList
- 5
rec2HyLffy6QK9QId
- ["22641963"]
telemetry.name
true
false
+ ["22641963"]
+ recULIwPg69M69185
spaceheat.telemetry.name.000
Unknown
+ 5
UpperPython
String
SpaceheatTelemetryName000
@@ -9082,396 +9931,459 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec0pPcBLkF054gpN
2022-11-09T23:30:34Z
+ Cop1TempF
true
- -20
true
- recrZz3gmzl97POA1
Integer
- Cop1TempF
- 24
- -20
false
false
+ -20
+ recrZz3gmzl97POA1
+ 30
+ -20
Integer
rec0yzwyCWxtaJQJF
2022-05-11T18:50:00Z
+ ScadaReadTimeUnixMs
true
true
- rec944QikN18Rdopu
Integer
- ScadaReadTimeUnixMs
recqSXVzLo8RtEjlH
- 1656513094288
ReasonableUnixTimeMs
false
false
+ 1656513094288
1656245000
+ rec944QikN18Rdopu
Integer
ReasonableUnixTimeMs
+
+ rec12ghZsHZYMDdQG
+ 2023-05-10T14:32:26Z
+ FloParamsUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ reczzIn3wGYrEKtbr
+ 52
+ String
+ UuidCanonicalTextual
+
rec1CtEN5Aheg8zzR
2023-01-16T08:02:01Z
+ BoostPowerWatts
true
true
- rec9kYNek59Vqps4S
Integer
- BoostPowerKwTimes1000
- 2
- 12000
false
false
+ 12000
+ rec9kYNek59Vqps4S
+ 2
Integer
rec1HqF8uSZx4V5Qg
2022-11-10T14:29:06Z
+ ZeroPotentialEnergyWaterTempF
true
- 100
true
- reczzIn3wGYrEKtbr
Integer
- ZeroPotentialEnergyWaterTempF
- 20
- 100
false
false
+ 100
+ reczzIn3wGYrEKtbr
+ 20
+ 100
Integer
rec1OE8jCG5qkI4oK
2022-11-10T15:16:07Z
+ HouseWorstCaseTempF
true
- -7
true
- reczzIn3wGYrEKtbr
Integer
- HouseWorstCaseTempF
- 31
- -7
false
false
+ -7
+ reczzIn3wGYrEKtbr
+ 31
+ -7
Integer
rec1SyaI5uoDhNW1f
2022-08-11T15:28:28Z
+ EarGNodeAlias
true
true
- reciPWPv22Y3pt5oD
String
- EarGNodeAlias
recb9fI4kRkTYXDzA
- dwtest.ear1
LeftRightDot
false
false
+ dwtest.ear1
"a.b-h"
+ reciPWPv22Y3pt5oD
String
LeftRightDot
rec1TiEjRVAsU1G6T
2022-06-17T12:46:48Z
- true
- rec3Noy3m1X4Vdly9
TelemetryName
- 5
+ true
rec2HyLffy6QK9QId
- "c89d0ba1"
telemetry.name
true
false
+ "c89d0ba1"
+ rec3Noy3m1X4Vdly9
spaceheat.telemetry.name.000
Unknown
+ 5
UpperPython
String
SpaceheatTelemetryName000
SpaceheatTelemetryName000
+
+ rec1UsBj2W4QOsHy3
+ 2023-06-25T20:49:28Z
+ StorageSteps
+ true
+ true
+ Integer
+ false
+ false
+ 100
+ rechp89wabr5kkqti
+ 3
+ 100
+ Integer
+
rec1X9YAxHaCnkpkS
2022-11-09T23:00:24Z
+ SystemMaxHeatOutputSwtF
true
- 160
true
- recrZz3gmzl97POA1
Integer
- SystemMaxHeatOutputSwtF
- 5
+ false
+ false
160
+ recrZz3gmzl97POA1
+ 11
+ 160
+ Integer
+
+
+ rec1cSvPeCnzzPlFy
+ 2023-06-25T21:26:17Z
+ StartHourUtc
+ true
+ true
+ Integer
false
false
+ 0
+ rec2EA0TG0Xexi6wg
+ 7
+ 0
Integer
rec1hFSN0SKmeE8CV
2022-11-17T06:04:05Z
+ MarketMakerAlias
true
true
- recLufl9jSdsMGsFR
String
- MarketMakerAlias
- 1
recb9fI4kRkTYXDzA
- 'd1.isone.ver.keene'
LeftRightDot
false
false
+ 'd1.isone.ver.keene'
"a.b-h"
+ recLufl9jSdsMGsFR
+ 1
String
LeftRightDot
rec1juFm5ISKu1HWQ
2023-04-05T12:18:17Z
+ ExpectedMaxGpmTimes100
true
- recGuvhjDYO65d5rP
Integer
- ExpectedMaxGpmTimes100
- 7
- Expected Max Flow in Gallons per Minute, times 100
false
false
+ recGuvhjDYO65d5rP
+ 7
+ Expected Max Flow in Gallons per Minute, times 100
Integer
rec1k8ewouaBtPAoB
2022-11-12T08:16:50Z
+ MicroLat
true
true
- recbGrdqqYGiwVYVK
Integer
- MicroLat
- 1
- 45666353
false
false
+ 45666353
+ recbGrdqqYGiwVYVK
+ 1
Integer
rec1kx74Elyh0gRye
2022-11-04T15:35:12Z
+ ValidatorAddr
true
- https://gridworks.readthedocs.io/en/latest/ta-validator.html
true
- recPf7eAhpge7kvO7
String
- ValidatorAddr
- 2
recopFBsq4TmG87Op
- '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
- The Algoand address for the TaValidator who validated the location,
- metering and type of the Transactive Device.
AlgoAddressStringFormat
false
false
+ '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
+ recPf7eAhpge7kvO7
+ The Algoand address for the TaValidator who validated the location,
+ metering and type of the Transactive Device.
+ 2
String
AlgoAddressStringFormat
+ https://gridworks.readthedocs.io/en/latest/ta-validator.html
rec1lT7lfuqohFuY2
2022-05-12T01:45:00Z
+ PowerWList
true
- true
true
- recTZzT6nQkrQ4sMq
+ true
Integer
- PowerWList
false
false
+ recTZzT6nQkrQ4sMq
Integer
rec1nNl4mM8w486VP
2023-01-13T18:39:44Z
+ SendTimeUnixMs
true
true
- recE3bIWWFpMPqyS1
Integer
- SendTimeUnixMs
- 5
- Time this message is made and sent on my clock
recqSXVzLo8RtEjlH
- 1673635765317
ReasonableUnixTimeMs
false
false
+ 1673635765317
1656245000
+ recE3bIWWFpMPqyS1
+ 5
+ Time this message is made and sent on my clock
Integer
ReasonableUnixTimeMs
rec1nhmaOdYNQmXTy
2022-07-10T12:49:40Z
- true
- true
- rec2m06PsjtFd0cfu
MakeModel
- 1
+ true
recLQWqTvGwSz2GcN
- "00000000"
make.model
+ true
true
false
- spaceheat.make.model.000
+ "00000000"
+ rec2m06PsjtFd0cfu
+ spaceheat.make.model.001
UnknownMake__UnknownModel
+ 1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
rec1rqOoUC58tSWgF
2022-07-25T21:44:50Z
- recyD0ycgUiT7TiH2
MyAtomicTNodeGNode
false
false
+ recyD0ycgUiT7TiH2
rec1sA97XqAvz5PmW
2022-11-14T23:44:57Z
+ DaemonPort
true
true
- recbGrdqqYGiwVYVK
Integer
- DaemonPort
- 3
- 8002
false
false
+ 8002
+ recbGrdqqYGiwVYVK
+ 3
Integer
rec1tjyG2fxEVpUYW
2022-06-06T18:45:39Z
+ DisplayName
true
- recPbLemXyDnvKcIc
String
- DisplayName
- 2
- "relay for first elt in tank"
false
false
+ "relay for first elt in tank"
+ recPbLemXyDnvKcIc
+ 2
String
rec24rwap57yNPkVI
2022-11-10T15:17:10Z
+ HouseWorstCaseTempF
true
- -7
true
- recrZz3gmzl97POA1
Integer
- HouseWorstCaseTempF
- 33
- -7
false
false
+ -7
+ recrZz3gmzl97POA1
+ 34
+ -7
Integer
rec2E2PuhJhkdGWTk
2023-01-06T03:12:30Z
+ TerminalAssetAlias
true
true
- recUtSmERYdWUVAPm
String
- TerminalAssetAlias
- 0
recb9fI4kRkTYXDzA
- "d1.isone.ver.keene.holly.ta"
- The GNodeAlias of the TerminalAsset owned by the TaOwner.
LeftRightDot
false
false
+ "d1.isone.ver.keene.holly.ta"
"a.b-h"
+ recUtSmERYdWUVAPm
+ The GNodeAlias of the TerminalAsset owned by the TaOwner.
+ 0
String
LeftRightDot
rec2ERXNwEH6jyyHv
2022-06-15T23:03:41Z
+ ReadTimeUnixMsList
true
- true
true
- recncxVAzn76fL8xN
+ true
Integer
- ReadTimeUnixMsList
recqSXVzLo8RtEjlH
- [1656443705023]
ReasonableUnixTimeMs
false
false
+ [1656443705023]
1656245000
+ recncxVAzn76fL8xN
Integer
ReasonableUnixTimeMs
rec2EuDcLlLMuM7C5
2022-09-19T20:24:11Z
+ ChildAliasList
true
- true
true
- recJH4tbXOqVJkMVW
+ true
String
- ChildAliasList
- 5
recb9fI4kRkTYXDzA
- ['d1.iso.me.orange', 'd1.iso.me.almond']
LeftRightDot
false
false
+ ['d1.iso.me.orange', 'd1.iso.me.almond']
"a.b-h"
+ recJH4tbXOqVJkMVW
+ 5
String
LeftRightDot
+
+ rec2FA57487tkIrdH
+ 2023-06-25T21:33:37Z
+ RequiredSourceWaterTempF
+ true
+ true
+ Integer
+ false
+ false
+ 120
+ rec2EA0TG0Xexi6wg
+ 13
+ 120
+ Integer
+
rec2IBoFUqHWK1J8L
2022-08-11T17:32:14Z
+ FromGNodeAlias
true
true
- recrnRklRws6Txbqr
String
- FromGNodeAlias
- 0
recb9fI4kRkTYXDzA
- "dwtest.isone.ct.newhaven.orange1.ta.scada"
LeftRightDot
false
false
+ "dwtest.isone.ct.newhaven.orange1.ta.scada"
"a.b-h"
+ recrnRklRws6Txbqr
+ 0
String
LeftRightDot
rec2JW8GAoEQQX6ev
2022-07-25T21:47:17Z
- recyD0ycgUiT7TiH2
BoolenActuatorCacList
false
false
+ recyD0ycgUiT7TiH2
rec2Mwqc5DnE715Ck
2023-04-02T14:10:11Z
+ TelemetryNameList
true
true
- recqhQADHovWX1hOl
- TelemetryNameList
- 3
- TelenetryNames read by this power meter
rec2HyLffy6QK9QId
- ["af39eec9"]
telemetry.name
true
false
+ ["af39eec9"]
+ recqhQADHovWX1hOl
spaceheat.telemetry.name.000
Unknown
+ 3
UpperPython
+ TelenetryNames read by this power meter
String
SpaceheatTelemetryName000
SpaceheatTelemetryName000
@@ -9479,89 +10391,104 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec2NckVsy3wDPK6Q
2022-07-05T12:56:22Z
+ FromGNodeAlias
true
true
- recVIr500A203gkcH
String
- FromGNodeAlias
recb9fI4kRkTYXDzA
- "dwtest.isone.ct.newhaven.orange1.ta.scada"
LeftRightDot
false
false
+ "dwtest.isone.ct.newhaven.orange1.ta.scada"
"a.b-h"
+ recVIr500A203gkcH
String
LeftRightDot
+
+ rec2Q5gra7JT1hP5z
+ 2023-05-10T14:24:36Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ recfDQscmquO0odpo
+ 8
+ "MILLINOCKET_ME"
+ String
+
rec2WTDVr3IZq1B7j
2022-07-13T00:21:59Z
+ MeterCtIdx
true
- recpZ6JqSrTi4xaOu
Integer
- MeterCtIdx
- 3
reciNckyKjqNQDByG
- 0
NonNegativeInteger
false
false
+ 0
+ recpZ6JqSrTi4xaOu
+ 3
Integer
NonNegativeInteger
rec2YrBsmiG8OdWkv
2022-11-10T14:18:12Z
+ SystemMaxHeatOutputKwAvg
true
- 11.68
true
- reczzIn3wGYrEKtbr
Number
- SystemMaxHeatOutputKwAvg
- 32
- 11.68
false
false
+ 11.68
+ reczzIn3wGYrEKtbr
+ 32
+ 11.68
Number
rec2l6jE1FMj92czA
2022-07-03T22:30:52Z
+ AboutNodeAlias
true
- https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
true
- receGKnJ8CfemQLdQ
String
- AboutNodeAlias
- 0
- AboutNodeAlias
recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
"a.elt1"
+ "a.b-h"
+ receGKnJ8CfemQLdQ
The SpaceheatNode representing the physical object that the sensor reading is
collecting data about. For example, a multipurpose temp sensor that reads
12 temperatures would have data for 12 different AboutNodeAliases,
including say `a.tank1.temp1` for a temp sensor at the top of a water tank.
- LeftRightDot
- false
- false
- "a.b-h"
+ 0
+ AboutNodeAlias
String
LeftRightDot
+ https://gridworks-protocol.readthedocs.io/en/latest/spaceheat-node.html
rec2pvNC90x1j8fhm
2023-01-08T10:21:22Z
- true
- rectayh08KEGGGcZc
Type
- 0
+ true
recCQyaQ1Oq0MlT20
- '086b5165'
algo.cert.type
true
false
+ '086b5165'
+ rectayh08KEGGGcZc
algo.cert.type.000
ASA
+ 0
UpperPython
String
AlgoCertType000
@@ -9570,51 +10497,68 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec2tXUsfrvhm3P6s
2022-11-06T20:03:54Z
+ OwnerAddr
true
- rec8uTC7GK5qgXzg9
String
- OwnerAddr
- 9
- Algorand address of the deed owner
recopFBsq4TmG87Op
- '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
AlgoAddressStringFormat
false
false
+ '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
+ rec8uTC7GK5qgXzg9
+ 9
+ Algorand address of the deed owner
String
AlgoAddressStringFormat
+
+ rec30du75CvosnjIj
+ 2023-05-10T14:20:07Z
+ RegPriceUid
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "0499a20e-7b81-47af-a2b4-8f4df0cd1284"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recfDQscmquO0odpo
+ 22
+ String
+ UuidCanonicalTextual
+
rec34OIYCFo5w9hkm
2023-03-02T10:36:18Z
+ FromGNodeInstanceId
true
true
- recDq5Oo6baJLVS5s
String
- FromGNodeInstanceId
- 1
- My GNodeInstanceId
rec24qjC90m0f4Kvl
- "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
UuidCanonicalTextual
false
false
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
"d4be12d5-33ba-4f1f-b9e5"
+ recDq5Oo6baJLVS5s
+ 1
+ My GNodeInstanceId
String
UuidCanonicalTextual
rec367deUgDqEaq89
2022-06-20T13:18:30Z
+ TelemetryNameList
true
true
- recauOuVBqhRdNWcN
- TelemetryNameList
rec2HyLffy6QK9QId
- ["5a71d4b3", "c89d0ba1"]
telemetry.name
true
false
+ ["5a71d4b3", "c89d0ba1"]
+ recauOuVBqhRdNWcN
spaceheat.telemetry.name.000
Unknown
UpperPython
@@ -9631,17 +10575,17 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3Ip25a5UdscQKD
2022-10-02T23:33:36Z
- true
- recDp8U1jLA9zeEx2
Status
- 2
+ true
recqx4EqT3OFtnxTG
- '3661506b'
g.node.status
true
false
+ '3661506b'
+ recDp8U1jLA9zeEx2
g.node.status.100
Unknown
+ 2
UpperPython
String
GNodeStatus100
@@ -9650,37 +10594,37 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3JoWyUlqUfiTLp
2023-03-13T18:13:35Z
- true
- reccsu6ZeZHKoDqDy
ActorClass
- 2
+ true
recQeMNisJZjsYXTl
- "638bf97b"
actor.class
true
false
- sh.actor.class.001
+ "638bf97b"
+ reccsu6ZeZHKoDqDy
+ sh.actor.class.000
NoActor
+ 2
UpperPython
String
- SpaceheatActorClass001
- SpaceheatActorClass001
+ SpaceheatActorClass000
+ SpaceheatActorClass000
rec3MAw2y2MewO5VK
2022-11-10T13:23:38Z
- true
- VersantStorageHeatTariff
- reczzIn3wGYrEKtbr
BoostTariff
- 12
+ true
rec4S3L3NZiPihbLi
- "2127aba6"
distribution.tariff
true
false
+ "2127aba6"
+ reczzIn3wGYrEKtbr
distribution.tariff.000
Unknown
+ 12
+ VersantA1StorageHeatTariff
UpperPython
String
DistributionTariff000
@@ -9689,18 +10633,18 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3NEaYaETLIXR9Z
2023-01-24T17:49:27Z
- true
- true
- recqhQADHovWX1hOl
Interface
- 5
+ true
rec7Ck8y72m0NytYa
- "a6a4ac9f"
local.comm.interface
+ true
true
false
+ "a6a4ac9f"
+ recqhQADHovWX1hOl
local.comm.interface.000
Unknown
+ 5
Upper
String
LocalCommInterface000
@@ -9709,254 +10653,253 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3XrurBTlbCXBfL
2022-09-19T20:25:10Z
+ TaGNodeAlias
true
true
- recazQb2vEXgbroHd
String
- TaGNodeAlias
recb9fI4kRkTYXDzA
- 'd1.iso.me.orange.ta'
LeftRightDot
false
false
+ 'd1.iso.me.orange.ta'
"a.b-h"
+ recazQb2vEXgbroHd
String
LeftRightDot
rec3akDIjr7e9Pb0u
2022-11-17T06:14:49Z
+ BidderAlias
true
true
- recacY2b5R2bByiAQ
String
- BidderAlias
- 1
recb9fI4kRkTYXDzA
LeftRightDot
false
false
"a.b-h"
+ recacY2b5R2bByiAQ
+ 1
String
LeftRightDot
rec3ez7rNTNCnqsst
2022-11-04T13:44:02Z
+ TaOwnerAddr
true
true
- recAWKkS0hcyws7O6
String
- TaOwnerAddr
- 1
- The Algorand address of the owner for the TerminalAsset
recopFBsq4TmG87Op
- "KXGT6JIRJQR4GCSS647KL2OSSKBZ3FSYJDIXJEGAF7TZLN4JF4DGDDX4BI"
AlgoAddressStringFormat
false
false
+ "KXGT6JIRJQR4GCSS647KL2OSSKBZ3FSYJDIXJEGAF7TZLN4JF4DGDDX4BI"
+ recAWKkS0hcyws7O6
+ 1
+ The Algorand address of the owner for the TerminalAsset
String
AlgoAddressStringFormat
rec4BpH0P9FNwZJqs
2022-09-22T18:50:53Z
+ GNodeAlias
true
true
- rec5bEVzI1k5qcXYg
String
- GNodeAlias
- 0
recb9fI4kRkTYXDzA
- 'd1.isone.ver.keene'
LeftRightDot
false
false
+ 'd1.isone.ver.keene'
"a.b-h"
+ rec5bEVzI1k5qcXYg
+ 0
String
LeftRightDot
rec4VyYOa9NyxUjui
2022-11-18T17:55:37Z
+ GNodeAlias
true
true
- recrZz3gmzl97POA1
String
- GNodeAlias
- 37
recb9fI4kRkTYXDzA
- 'd1.isone.ver.keene.holly'
LeftRightDot
false
false
+ 'd1.isone.ver.keene.holly'
"a.b-h"
+ recrZz3gmzl97POA1
+ 0
String
LeftRightDot
rec4XKd6lO34y5XKU
2022-11-21T05:26:08Z
+ ToGNodeAlias
true
true
- recX2g8OLICXZHuHr
String
- ToGNodeAlias
- 2
recb9fI4kRkTYXDzA
- "d1.time"
LeftRightDot
false
false
+ "d1.time"
"a.b-h"
+ recX2g8OLICXZHuHr
+ 2
String
LeftRightDot
rec4adVbIULyfOhu4
2022-06-23T18:40:39Z
+ ReportOnChange
true
true
- recDEr7ob2KLqM4gU
Boolean
- ReportOnChange
- 2
- True
false
false
+ True
+ recDEr7ob2KLqM4gU
+ 2
Boolean
rec4j6ntpGttspb5O
2022-11-02T23:16:57Z
+ TopGNodeAlias
true
true
- rec8ILTteHhn4MpGd
String
- TopGNodeAlias
- 0
recb9fI4kRkTYXDzA
- 'd1'
LeftRightDot
false
false
+ 'd1'
"a.b-h"
+ rec8ILTteHhn4MpGd
+ 0
String
LeftRightDot
rec4tCsBpIaZUGllT
2023-01-15T12:55:21Z
+ MarketSlotName
true
true
- recECSz5o4Z7NFjhG
String
- MarketSlotName
- 2
recdsSDIz6EmZCvr9
- "rt60gate5.d1.isone.ver.keene.1667880000"
MarketSlotNameLrdFormat
false
false
+ "rt60gate5.d1.isone.ver.keene.1667880000"
+ recECSz5o4Z7NFjhG
+ 2
String
MarketSlotNameLrdFormat
rec57uhIFk7eVwvKQ
2022-11-23T14:02:10Z
+ TerminalAssetAlias
true
true
- recPxYqZlRvCFlD8p
String
- TerminalAssetAlias
- 0
recb9fI4kRkTYXDzA
- 'd1.isone.ver.keene.holly.ta'
LeftRightDot
false
false
+ 'd1.isone.ver.keene.holly.ta'
"a.b-h"
+ recPxYqZlRvCFlD8p
+ 0
String
LeftRightDot
rec59ZiBmdpSMTFx6
2023-03-13T18:13:32Z
+ Alias
true
true
- reccsu6ZeZHKoDqDy
String
- Alias
- 1
recb9fI4kRkTYXDzA
- "a.elt1"
LeftRightDot
false
false
+ "a.elt1"
"a.b-h"
+ reccsu6ZeZHKoDqDy
+ 1
String
LeftRightDot
rec5AtelLyWoElhSp
2023-01-16T08:02:28Z
+ StoreKwh
true
true
- rec9kYNek59Vqps4S
Integer
- StoreKwh
- 4
- 40000
false
false
+ 40000
+ rec9kYNek59Vqps4S
+ 4
Integer
rec5N3oYOvCWemw2p
2022-11-10T13:23:48Z
- true
- NaiveVariableSwt
- reczzIn3wGYrEKtbr
MixingValveFeedbackModel
- 22
+ true
recX0A9nSriRUvl9n
- "0397c1df"
- mixing.valve.feedback.model
+ sh.mixing.valve.feedback.model
true
false
- mixing.valve.feedback.model.000
+ "0397c1df"
+ reczzIn3wGYrEKtbr
+ sh.mixing.valve.feedback.model.000
ConstantSwt
+ 22
+ NaiveVariableSwt
UpperPython
String
- MixingValveFeedbackModel000
- MixingValveFeedbackModel000
+ ShMixingValveFeedbackModel000
+ ShMixingValveFeedbackModel000
rec5OmOMeHTBF0VGa
2023-02-20T14:12:47Z
+ MessageId
true
true
- recObejFqCYx5kpak
String
- MessageId
- 6
rec24qjC90m0f4Kvl
UuidCanonicalTextual
false
false
"d4be12d5-33ba-4f1f-b9e5"
+ recObejFqCYx5kpak
+ 6
String
UuidCanonicalTextual
rec5TsqaPhBNGB6On
2023-02-14T14:42:38Z
- true
- recEGOX7VX0bQ3Lvf
- recDEr7ob2KLqM4gU
OutputConfig
- 1
- Output config for the same channel
+ true
+ telemetry.reporting.config.000
+ false
+ true
{'AboutNodeName': 'a.tank1.elts',
'ReportOnChange': True,
'SamplePeriodS': 60,
@@ -9967,62 +10910,87 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
'Version': '000',
'TelemetryNameGtEnumSymbol': 'af39eec9',
'UnitGtEnumSymbol': 'f459a9c3'}
+ recEGOX7VX0bQ3Lvf
+ recDEr7ob2KLqM4gU
This is the data as the Scada proactor expects to consume it from the power meter driver proactor.
- telemetry.reporting.config.000
- false
- true
telemetry.reporting.config
+ 1
+ Output config for the same channel
telemetry.reporting.config.000
rec5Yab4cmmMu4DWm
2022-10-02T23:33:45Z
+ GNodeRegistryAddr
true
true
- recDp8U1jLA9zeEx2
String
- GNodeRegistryAddr
- 4
recopFBsq4TmG87Op
- 'MONSDN5MXG4VMIOHJNCJJBVASG7HEZQSCEIKJAPEPVI5ZJUMQGXQKSOAYU'
AlgoAddressStringFormat
false
false
+ 'MONSDN5MXG4VMIOHJNCJJBVASG7HEZQSCEIKJAPEPVI5ZJUMQGXQKSOAYU'
+ recDp8U1jLA9zeEx2
+ 4
String
AlgoAddressStringFormat
+
+ rec5hCBMJ1u2liO0o
+ 2023-05-10T14:28:37Z
+ false
+ false
+
+
+ rec5tlsMd4hrJm4Yi
+ 2023-05-10T14:34:19Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ recvJ9OVpqVVP895H
+ 0
+ String
+ LeftRightDot
+
rec5xtm1Bu9kG4GaK
2023-01-16T17:35:07Z
+ SignedProof
true
true
- rec3kcgktiHCBYpA4
String
- SignedProof
- 2
recvbnpa4cX2nNp9p
- 'gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc='
AlgoMsgPackEncoded
false
false
+ 'gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc='
+ rec3kcgktiHCBYpA4
+ 3
String
AlgoMsgPackEncoded
rec5yCVNnWVXBDdMc
2022-11-08T04:13:22Z
- true
- AvgMW
- recH9GUDdSB7SiwNG
QuantityUnit
- 6
+ true
recounhEj97w5SfDm
- "c272f3b3"
market.quantity.unit
true
false
+ "c272f3b3"
+ recH9GUDdSB7SiwNG
market.quantity.unit.000
AvgMW
+ 6
+ AvgMW
UpperPython
String
MarketQuantityUnit000
@@ -10031,16 +10999,16 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec68T9cqrrclsIpW
2022-11-17T06:15:00Z
+ PqPairs
true
true
- recacY2b5R2bByiAQ
- recsHXkpUxoOF9vYp
- PqPairs
- 2
price.quantity.unitless.000
false
true
+ recacY2b5R2bByiAQ
+ recsHXkpUxoOF9vYp
price.quantity.unitless
+ 2
price.quantity.unitless.000
@@ -10049,254 +11017,314 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
false
+
+ rec6J08ESPo5dbR8t
+ 2023-06-28T18:49:50Z
+ StorePassiveLossRatio
+ true
+ true
+ Number
+ false
+ false
+ 0.005
+ rec2EA0TG0Xexi6wg
+ 19
+ 0.005
+ Number
+
rec6MQ1HJUBz9pC5d
2022-11-06T20:03:56Z
+ TradingRightsId
true
- rec8uTC7GK5qgXzg9
Integer
- TradingRightsId
+ false
+ false
+ 1
+ rec8uTC7GK5qgXzg9
+ The Id of the TradingRights Algorand Standard Asset.
11
Algorand Id of ASA TradingRights
recKcuGOfjTIPqtXk
- 1
- The Id of the TradingRights Algorand Standard Asset.
- false
- false
PositiveInteger
Integer
rec6bDjiEVzfKTxUI
2023-02-14T20:39:34Z
+ ReportingSamplePeriodS
true
- recEhzcpob8H7VuEF
Integer
- ReportingSamplePeriodS
- 6
- 300
false
false
+ 300
+ recEhzcpob8H7VuEF
+ 6
Integer
rec6erTuD9iej4cpC
2022-11-02T23:21:22Z
+ FromGNodeInstanceId
true
true
- rec8ILTteHhn4MpGd
String
- FromGNodeInstanceId
- 3
rec24qjC90m0f4Kvl
- '1a952a89-e471-46ac-b563-f33f260ec819'
UuidCanonicalTextual
false
false
+ '1a952a89-e471-46ac-b563-f33f260ec819'
"d4be12d5-33ba-4f1f-b9e5"
+ rec8ILTteHhn4MpGd
+ 3
String
UuidCanonicalTextual
rec6fCUex0HlMSbTR
2022-07-03T22:31:08Z
- true
- https://gridworks-protocol.readthedocs.io/en/latest/telemetry-name.html
- receGKnJ8CfemQLdQ
TelemetryName
- 2
- TelemetryName
+ true
rec2HyLffy6QK9QId
+ telemetry.name
+ true
+ false
"af39eec9"
+ receGKnJ8CfemQLdQ
The TelemetryName of the readings. This is used to interpet the meaning of the
reading values. For example, WaterTempCTimes1000 means the reading is measuring
the temperature of water, in Celsius multiplied by 1000. So a value of 37000 would be
a reading of 37 deg C.
- telemetry.name
- true
- false
spaceheat.telemetry.name.000
Unknown
+ 2
UpperPython
+ TelemetryName
String
SpaceheatTelemetryName000
SpaceheatTelemetryName000
+ https://gridworks-protocol.readthedocs.io/en/latest/telemetry-name.html
rec6geR7twzmoj4vD
2022-11-10T13:23:48Z
+ CautiousMixingValveTempDeltaF
true
- 5
true
- reczzIn3wGYrEKtbr
Integer
- CautiousMixingValveTempDeltaF
- 23
- 5
false
false
+ 5
+ reczzIn3wGYrEKtbr
+ 23
+ 5
Integer
rec6n5D0n75iRarhL
2022-11-04T18:01:02Z
+ SignedTadeedOptinTxn
true
true
- recPy6SuizSerb3JG
String
- SignedTadeedOptinTxn
- 4
recvbnpa4cX2nNp9p
- 'gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc='
AlgoMsgPackEncoded
false
false
+ 'gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc='
+ recPy6SuizSerb3JG
+ 4
String
AlgoMsgPackEncoded
rec6nWq42TdJuV1oR
2023-02-14T13:14:26Z
+ Description
true
true
- rec9dL2CYkm5s4OXX
String
- Description
- 2
- ''
false
false
+ ''
+ rec9dL2CYkm5s4OXX
+ 2
String
rec6sw1bj1xU6alKt
2022-11-09T23:00:09Z
+ AnnualHvacKwhTh
true
- 28125
true
- recrZz3gmzl97POA1
Integer
- AnnualHvacKwhTh
- 34
- 28125
false
false
+ 28125
+ recrZz3gmzl97POA1
+ 35
+ 28125
Integer
rec6tXwpa0rqEikXW
2022-11-21T05:24:58Z
+ FromGNodeInstanceId
true
true
- recf5K0BP9qLabpdS
String
- FromGNodeInstanceId
- 1
rec24qjC90m0f4Kvl
- "2858afb7-4ffd-4a10-b3b5-c52ad1f61697"
UuidCanonicalTextual
false
false
+ "2858afb7-4ffd-4a10-b3b5-c52ad1f61697"
"d4be12d5-33ba-4f1f-b9e5"
+ recf5K0BP9qLabpdS
+ 1
String
UuidCanonicalTextual
+
+ rec72ld1OI4hNGzPB
+ 2023-05-10T15:41:29Z
+ AmbientPowerInKw
+ true
+ true
+ Number
+ false
+ false
+ 1.25
+ recfDQscmquO0odpo
+ 29
+ 1.25
+ Number
+
+
+ rec786yhFCPsLdPgd
+ 2023-05-01T17:53:08Z
+ StoreKwh
+ true
+ true
+ Integer
+ false
+ false
+ 50
+ recm5UcVaAPAtrrFS
+ 3
+ Integer
+
rec7Kmzb0rNhgYfq6
2022-11-08T15:38:31Z
+ AboutTerminalAssetAlias
true
true
- recbAMyCyUX2bLKfz
String
- AboutTerminalAssetAlias
- 7
recb9fI4kRkTYXDzA
- "d1.isone.ver.keene.holly.ta"
LeftRightDot
false
false
+ "d1.isone.ver.keene.holly.ta"
"a.b-h"
+ recbAMyCyUX2bLKfz
+ 7
String
LeftRightDot
+
+ rec7YRRBTA86B1MVU
+ 2023-04-30T19:15:22Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ rec4yUxGiLZpqWQqb
+ 1
+ "MILLINOCKET_ME"
+ Home City
+ String
+
rec7lUlbNs9m5sYDf
2022-07-13T00:22:10Z
+ MeteredShNodeAlias
true
- recpZ6JqSrTi4xaOu
String
- MeteredShNodeAlias
- 4
recb9fI4kRkTYXDzA
- "a.elt1"
LeftRightDot
false
false
+ "a.elt1"
"a.b-h"
+ recpZ6JqSrTi4xaOu
+ 4
String
LeftRightDot
rec82deD90t24PRHB
2023-03-09T19:31:23Z
+ ComponentAttributeClassId
true
true
- true
- recxdlQ6gCN8mD39r
String
- ComponentAttributeClassId
- 1
rec24qjC90m0f4Kvl
- 'c1856e62-d8c0-4352-b79e-6ae05a5294c2'
UuidCanonicalTextual
+ true
false
false
+ 'c1856e62-d8c0-4352-b79e-6ae05a5294c2'
"d4be12d5-33ba-4f1f-b9e5"
+ recxdlQ6gCN8mD39r
+ 1
String
UuidCanonicalTextual
rec83NurYrYX8rTtT
2022-11-03T14:39:18Z
+ NewTaDeedIdx
true
true
- recvWBuo1Ws1SIL4b
Integer
- NewTaDeedIdx
- 0
- 14
false
false
+ 14
+ recvWBuo1Ws1SIL4b
+ 0
Integer
rec83s8fct15feQXU
2022-06-04T19:22:05Z
+ DisplayName
true
- rec3Noy3m1X4Vdly9
String
- DisplayName
- 6
- "Simulated GridWorks high precision water temp sensor"
false
false
+ "Simulated GridWorks high precision water temp sensor"
+ rec3Noy3m1X4Vdly9
+ 6
String
rec85nrhXQw9tRODn
2022-11-10T13:23:37Z
- true
- RealtimeLocalLmp
- reczzIn3wGYrEKtbr
HeatpumpEnergySupplyType
- 11
+ true
recf9ZTshqRu81HZo
- "e9dc99a6"
energy.supply.type
true
false
+ "e9dc99a6"
+ reczzIn3wGYrEKtbr
energy.supply.type.000
Unknown
+ 11
+ RealtimeLocalLmp
UpperPython
String
EnergySupplyType000
@@ -10305,124 +11333,193 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec88fKL08R9C0d0I
2023-01-16T17:19:32Z
+ FromGNodeInstanceId
true
true
- recBEBBA0ctnOYQnC
String
- FromGNodeInstanceId
- 1
rec24qjC90m0f4Kvl
- '60e5c73a-77e1-4c01-8b78-02c92d20f18a'
UuidCanonicalTextual
false
false
+ '60e5c73a-77e1-4c01-8b78-02c92d20f18a'
"d4be12d5-33ba-4f1f-b9e5"
+ recBEBBA0ctnOYQnC
+ 1
String
UuidCanonicalTextual
+
+ rec8M66OJ7TvRaPP0
+ 2023-05-10T14:34:03Z
+ false
+ false
+
+ itrH5pB2a6NdIiiLf/rec8M66OJ7TvRaPP0
+
+ rec8UGujigt7hxKDU
+ 2023-05-10T14:24:34Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ recfDQscmquO0odpo
+ 7
+ "US/Eastern"
+ String
+
rec8XxSaRb8m7Wd5D
2022-06-09T21:32:31Z
+ ReportOnChange
true
true
- recQ1SzB1rQPnbRUR
Boolean
- ReportOnChange
- 3
- True
false
false
+ True
+ recQ1SzB1rQPnbRUR
+ 3
Boolean
rec8i1VAK2sgrnBWW
2022-06-29T11:05:08Z
+ HwUid
true
- recwr8WwMjrVGNL7L
String
- HwUid
- 3
- "1001ab"
false
false
+ "1001ab"
+ recwr8WwMjrVGNL7L
+ 3
String
rec8qVA40s9X5Pcma
2022-12-04T14:20:45Z
+ GniList
true
true
- recwp0F6Gdrg8qLwb
- recV0KuDFayH4qGIl
- GniList
- 1
- List of GNodeInstances (Gnis) run in the container
- []
g.node.instance.gt.000
false
true
GNodeInstance
+ []
+ recwp0F6Gdrg8qLwb
+ recV0KuDFayH4qGIl
g.node.instance.gt
+ 1
+ List of GNodeInstances (Gnis) run in the container
g.node.instance.gt.000
rec8t56gTGBi3AXBr
2023-01-15T12:55:17Z
+ BidderAlias
true
true
- recECSz5o4Z7NFjhG
String
- BidderAlias
- 0
recb9fI4kRkTYXDzA
- "d1.isone.ver.keene.holly.ta"
LeftRightDot
false
false
+ "d1.isone.ver.keene.holly.ta"
"a.b-h"
+ recECSz5o4Z7NFjhG
+ 0
String
LeftRightDot
rec8xg10A3XVqZhG0
2022-11-10T14:26:46Z
+ StartingStoreIdx
true
- 50
true
- reczzIn3wGYrEKtbr
Integer
- StartingStoreIdx
- 50
- 50
false
false
+ 50
+ reczzIn3wGYrEKtbr
+ 50
+ 50
Integer
rec8yK9gvhY44u86S
2022-09-19T18:33:07Z
+ MicroLon
true
true
- recazQb2vEXgbroHd
Integer
- MicroLon
+ false
+ false
-68691705
+ recazQb2vEXgbroHd
+ Integer
+
+
+ rec8yYiDwp5tkxoeR
+ 2023-05-10T14:24:39Z
+ StorageSteps
+ true
+ true
+ Integer
+ false
+ false
+ 100
+ recfDQscmquO0odpo
+ 11
+ 100
+ Integer
+
+
+ rec8ybKjyg4p5PQBZ
+ 2023-05-10T14:20:04Z
+ DistPriceUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "b91ef8e7-50d7-4587-bf13-a3af7ecdb83a"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recfDQscmquO0odpo
+ 21
+ String
+ UuidCanonicalTextual
+
+
+ rec93EBTpAUbcsD5E
+ 2023-05-01T21:53:59Z
+ MaxStoreKwh
+ true
+ true
+ Integer
false
false
+ 12
+ recwXD4ryogKVwsnE
+ 4
Integer
rec96i0QHA47Ra3SD
2022-07-03T17:29:17Z
+ ShNodeAlias
true
true
String
- ShNodeAlias
recb9fI4kRkTYXDzA
- "a.elt1.relay"
LeftRightDot
false
false
+ "a.elt1.relay"
"a.b-h"
String
LeftRightDot
@@ -10430,123 +11527,170 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec99DQbyArZzSwTC
2023-03-09T19:31:25Z
+ DisplayName
true
- recxdlQ6gCN8mD39r
String
- DisplayName
+ false
+ false
+ "Main power meter for Little orange house garage space heat"
+ recxdlQ6gCN8mD39r
2
Display Name for the Power Meter
- "Main power meter for Little orange house garage space heat"
+ String
+
+
+ rec9AehNwuheAEZCw
+ 2023-05-10T14:38:15Z
+ StartDayUtc
+ true
+ true
+ Integer
false
false
- String
+ 1
+ recvJ9OVpqVVP895H
+ 6
+ 1
+ Integer
rec9E6HTIAJLoh9wW
2022-06-03T21:41:59Z
- true
- true
- reca2LF7P05qQmFJW
MakeModel
- 1
+ true
recLQWqTvGwSz2GcN
- "9cc57878"
make.model
+ true
true
false
- spaceheat.make.model.000
- UnknownMake__UnknownModel
+ "9cc57878"
+ reca2LF7P05qQmFJW
+ spaceheat.make.model.001
+ UnknownMake__UnknownModel
+ 1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
rec9ELFVpaqjO7myp
2022-09-22T19:38:53Z
+ ValidatorAddr
true
true
- recXCK8GTrT3hnfKX
String
- ValidatorAddr
- 2
recopFBsq4TmG87Op
- '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
- The public Algorand address of the Validator of the TaDaemon's TerminalAsset.
AlgoAddressStringFormat
false
false
+ '7QQT4GN3ZPAQEFCNWF5BMF7NULVK3CWICZVT4GM3BQRISD52YEDLWJ4MII'
+ recXCK8GTrT3hnfKX
+ The public Algorand address of the Validator of the TaDaemon's TerminalAsset.
+ 2
String
AlgoAddressStringFormat
+
+ rec9LV9kNuSH5H6fq
+ 2023-05-10T14:34:39Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ recfDQscmquO0odpo
+ 31
+ String
+ LeftRightDot
+
rec9OvxSYyzTJ3J46
2023-03-13T18:13:39Z
+ DisplayName
true
- reccsu6ZeZHKoDqDy
String
- DisplayName
- 4
- "First boost element"
false
false
+ "First boost element"
+ reccsu6ZeZHKoDqDy
+ 4
String
rec9PJA13l3jM7pJm
2023-01-19T15:38:46Z
+ TaAlias
true
true
- recF9KonH58AltK0K
String
- TaAlias
- 0
- TerminalAsset Alias
recb9fI4kRkTYXDzA
- 'd1.iso.me.ghm.orange.ta'
- GNodeAlias of the TerminalAsset that will be controlled by the new SCADA GNode. The SCADA GNodeAlias will have '.scada' appended to this.
LeftRightDot
false
false
+ 'd1.iso.me.ghm.orange.ta'
"a.b-h"
+ recF9KonH58AltK0K
+ GNodeAlias of the TerminalAsset that will be controlled by the new SCADA GNode. The SCADA GNodeAlias will have '.scada' appended to this.
+ 0
+ TerminalAsset Alias
String
LeftRightDot
+
+ rec9TfxvkRChizDvB
+ 2023-05-01T17:37:50Z
+ RoomTempF
+ true
+ true
+ Integer
+ false
+ false
+ 70
+ recw5evm1WetKAzZG
+ 16
+ 70
+ Integer
+
rec9XARl8tvdTDGbm
2022-11-08T08:16:57Z
+ FromGNodeAlias
true
true
- recd5K0XiAzHsj2Pw
String
- FromGNodeAlias
- 0
recb9fI4kRkTYXDzA
- 'd1.isone.ver.keene'
LeftRightDot
false
false
+ 'd1.isone.ver.keene'
"a.b-h"
+ recd5K0XiAzHsj2Pw
+ 0
String
LeftRightDot
rec9XvWitA9d8vD2l
2022-11-10T14:20:22Z
+ RealtimeElectricityPrice
true
- [10.35]
- true
true
- reczzIn3wGYrEKtbr
+ true
Number
- RealtimeElectricityPrice
- 38
- [10.35]
false
false
+ [10.35]
+ reczzIn3wGYrEKtbr
+ 38
+ [10.35]
Number
- itrl5NjSxG6LGJS6d/rec9XvWitA9d8vD2l
rec9fsScoo91bMhGw
2023-01-28T16:43:58Z
@@ -10560,6 +11704,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
7
String
+
+ rec9g3ackYYzyweKE
+ 2023-05-10T15:41:31Z
+ HouseWorstCaseTempF
+ true
+ true
+ Integer
+ false
+ false
+ -7
+ recfDQscmquO0odpo
+ 30
+ -7
+ Integer
+
rec9m6WYnkhS8o9uJ
2023-03-02T10:36:25Z
@@ -10579,6 +11738,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
ReasonableUnixTimeMs
+
+ recA6xaBWKtDeVbZs
+ 2023-05-01T17:52:33Z
+ FromGNodeInstanceId
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "d4057686-c199-4274-b595-f7e39ce863e2"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recm5UcVaAPAtrrFS
+ 1
+ String
+ UuidCanonicalTextual
+
recAAAHCxBerQLxks
2022-06-23T18:38:36Z
@@ -10649,6 +11826,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recANnuMlvL9PGtYv
+ 2023-06-25T20:49:21Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ rechp89wabr5kkqti
+ 1
+ String
+
recAPFghl03E7vx46
2023-02-20T14:11:31Z
@@ -10665,6 +11856,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recAaVjjsT4dYXHxM
+ 2023-06-25T21:33:34Z
+ RatedPowerKw
+ true
+ true
+ Number
+ false
+ false
+ 9.5
+ rec2EA0TG0Xexi6wg
+ 12
+ 9.5
+ Number
+
recAdxq0F1HX95zBg
2022-11-09T23:00:58Z
@@ -10676,23 +11882,58 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
100
recrZz3gmzl97POA1
- 30
+ 3
100
Integer
+
+ recAoJrWkdqNbZwLx
+ 2023-05-01T17:36:43Z
+ Tariff
+ true
+ rec4S3L3NZiPihbLi
+ distribution.tariff
+ true
+ false
+ "2127aba6"
+ recw5evm1WetKAzZG
+ distribution.tariff.000
+ Unknown
+ 7
+ VersantA1StorageHeatTariff
+ UpperPython
+ String
+ DistributionTariff000
+ DistributionTariff000
+
+
+ recAu0OzbjWTSSUJq
+ 2023-06-27T18:03:49Z
+ AmbientPowerInKw
+ true
+ true
+ Number
+ false
+ false
+ 1.2
+ rechp89wabr5kkqti
+ 18
+ 1.2
+ Number
+
recAw8J1ipB7Ef1SZ
2023-01-16T19:16:33Z
- AtnParams
+ Params
true
- atn.params.heatpumpwithbooststore.000
+ atn.params.000
false
true
rec3kcgktiHCBYpA4
- recrZz3gmzl97POA1
- atn.params.heatpumpwithbooststore
- 3
- atn.params.heatpumpwithbooststore.000
+ rec4yUxGiLZpqWQqb
+ atn.params
+ 4
+ atn.params.000
recAwWmnjxxgkF6fn
@@ -10749,6 +11990,25 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
HexChar
+
+ recB7NDDe5xXWHh9M
+ 2023-05-01T17:31:24Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ recw5evm1WetKAzZG
+ 0
+ GNode Alias
+ String
+ LeftRightDot
+
recBClfoIYbmVTcvi
2022-11-14T20:05:45Z
@@ -10774,28 +12034,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
0.001
recrZz3gmzl97POA1
- 17
+ 23
0.001
Number
-
- recBYlRmPwCbVbTMn
- 2022-11-19T16:43:43Z
- GNodeInstanceId
- true
- true
- String
- rec24qjC90m0f4Kvl
- UuidCanonicalTextual
- false
- false
- 'c8bb41eb-dad3-4e1d-8069-482f1a464225'
- "d4be12d5-33ba-4f1f-b9e5"
- recrZz3gmzl97POA1
- 38
- String
- UuidCanonicalTextual
-
recBbPnDHgnSutafc
2022-11-08T05:03:26Z
@@ -10830,6 +12072,41 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
AlgoAddressStringFormat
recj13iYXBkX5UZr3
+
+ recBoiuVaUD2AUett
+ 2023-05-01T17:39:11Z
+ TempUnit
+ true
+ recEyU9EKDtM3bD18
+ recognized.temperature.unit
+ true
+ false
+ "6f16ee63"
+ recw5evm1WetKAzZG
+ recognized.temperature.unit.000
+ C
+ 19
+ F
+ UpperPython
+ String
+ RecognizedTemperatureUnit000
+ RecognizedTemperatureUnit000
+
+
+ recBsPcptVebBzkn2
+ 2023-06-27T20:28:33Z
+ StorageSteps
+ true
+ true
+ Integer
+ false
+ false
+ 100
+ rec2EA0TG0Xexi6wg
+ 9
+ 100
+ Integer
+
recBtrSRyxjOXp8aA
2022-07-05T12:50:17Z
@@ -10897,10 +12174,25 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
70
recrZz3gmzl97POA1
- 18
+ 24
70
Integer
+
+ recC9UVPsqE9cHYQS
+ 2023-06-28T18:48:39Z
+ StorePassiveLossRatio
+ true
+ true
+ Number
+ false
+ false
+ 0.005
+ rechp89wabr5kkqti
+ 21
+ 0.005
+ Number
+
recCMCD6fLQzuN9RA
2022-09-30T19:16:20Z
@@ -10919,24 +12211,27 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
AlgoAddressStringFormat
- recCXJmyHxqTJaaFs
- 2022-11-10T14:25:10Z
- StartMonthUtc
+ recCMMvdApuru0zxY
+ 2023-05-10T14:34:49Z
+ FloParamsUid
true
true
- Integer
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
false
false
- 1
- reczzIn3wGYrEKtbr
- 46
- 1
- Integer
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recfDQscmquO0odpo
+ 32
+ String
+ UuidCanonicalTextual
- recCZdtLIakEf3fWh
- 2023-01-16T08:01:29Z
- FromGNodeAlias
+ recCQfmUkI2by85NK
+ 2023-05-01T22:08:46Z
+ DriverDataTypeName
true
true
String
@@ -10944,16 +12239,106 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
LeftRightDot
false
false
- 'd1.isone.ver.keene.holly'
+ 'simplesim.driver.data.bsh'
"a.b-h"
- rec9kYNek59Vqps4S
- 0
+ reckQg9yTsSw2dxbh
+ 2
String
LeftRightDot
- recCaA8vu505G0NGF
- 2022-09-20T12:16:45Z
+ recCRcF7T7qTSMD37
+ 2023-06-25T20:49:41Z
+ CurrencyUnit
+ true
+ recA15Ak50x6bNMx1
+ recognized.currency.unit
+ true
+ false
+ "e57c5143"
+ rechp89wabr5kkqti
+ recognized.currency.unit.000
+ Unknown
+ 6
+ USD
+ Upper
+ String
+ RecognizedCurrencyUnit000
+ RecognizedCurrencyUnit000
+
+
+ recCTlz2ZI9XsPdtX
+ 2023-05-01T22:09:37Z
+ DriverData
+ true
+ simplesim.driver.data.000
+ false
+ true
+ {
+ "FromGNodeAlias": "d1.isone.ver.keene.holly",
+ "PowerWatts": 3000,
+ "StoreKwh": 5,
+ "MaxStoreKwh": 12,
+ "TypeName": "simplesim.driver.data.bsh",
+ "Version": "000",
+ }
+ reckQg9yTsSw2dxbh
+ rec8IDXjSvdhHGds4
+ simplesim.driver.data
+ 3
+ simplesim.driver.data.000
+
+
+ recCXJmyHxqTJaaFs
+ 2022-11-10T14:25:10Z
+ StartMonthUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ reczzIn3wGYrEKtbr
+ 46
+ 1
+ Integer
+
+
+ recCXUZRdtGc2hQIx
+ 2023-05-10T14:38:11Z
+ StartYearUtc
+ true
+ true
+ Integer
+ false
+ false
+ 2020
+ recvJ9OVpqVVP895H
+ 4
+ 2020
+ Integer
+
+
+ recCZdtLIakEf3fWh
+ 2023-01-16T08:01:29Z
+ FromGNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ rec9kYNek59Vqps4S
+ 0
+ String
+ LeftRightDot
+
+
+ recCaA8vu505G0NGF
+ 2022-09-20T12:16:45Z
IncludeAllDescendants
true
true
@@ -11113,6 +12498,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
[-5.1]
Number
+
+ recDXgR1mkWGl8FlL
+ 2023-06-25T20:50:08Z
+ RoomTempF
+ true
+ true
+ Integer
+ false
+ false
+ 68
+ rechp89wabr5kkqti
+ 20
+ 68
+ Integer
+
recDaxDt8J5MZRx8y
2022-11-17T06:03:58Z
@@ -11128,6 +12528,41 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
market.type.gt.000
+
+ recDcyZwTzNJhJTSW
+ 2023-05-01T17:42:14Z
+ C
+ true
+ true
+ Number
+ false
+ false
+ 200
+ recw5evm1WetKAzZG
+ 13
+ 200
+ Number
+
+
+ recDgwmeLksJ4L46f
+ 2023-06-28T21:45:31Z
+ Tariff
+ true
+ rec4S3L3NZiPihbLi
+ distribution.tariff
+ true
+ false
+ "2127aba6"
+ rec2EA0TG0Xexi6wg
+ distribution.tariff.000
+ Unknown
+ 28
+ VersantA1StorageHeatTariff
+ UpperPython
+ String
+ DistributionTariff000
+ DistributionTariff000
+
recDmQ95OLj1UhZsU
2023-01-28T16:44:04Z
@@ -11141,6 +12576,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
6
String
+
+ recDvDUWKt6hxy1l9
+ 2023-05-10T14:40:39Z
+ ReportGeneratedTimeUnixS
+ true
+ true
+ Integer
+ rec13dujLuXXSf5L3
+ ReasonableUnixTimeS
+ false
+ false
+ 1577836800
+ 32503683600
+ recBqSlQdF17CgMPY
+ 4
+ Integer
+ ReasonableUnixTimeS
+
recDzW9fuX9MvVvla
2022-10-03T04:46:52Z
@@ -11169,7 +12622,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
48
recrZz3gmzl97POA1
- 31
+ 4
Integer
@@ -11273,6 +12726,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoMsgPackEncoded
+
+ recEMwQrGJ53FQep1
+ 2023-05-10T14:26:21Z
+ RoomTempF
+ true
+ true
+ Integer
+ false
+ false
+ 70
+ recfDQscmquO0odpo
+ 4
+ 70
+ Integer
+
recEPPqtrPd0FeUOQ
2022-11-08T03:39:06Z
@@ -11292,6 +12760,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
MarketPriceUnit000
MarketPriceUnit000
+
+ recESvZItoy9uRIyI
+ 2023-05-01T17:53:12Z
+ MaxStoreKwh
+ true
+ true
+ Integer
+ false
+ false
+ 80
+ recm5UcVaAPAtrrFS
+ 4
+ Integer
+
recEXU8tEG6X0jUnU
2022-06-06T18:45:50Z
@@ -11343,6 +12825,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
-20
Integer
+
+ recEkW3h7HrQ6uigy
+ 2023-05-10T14:19:44Z
+ PowerRequiredByHouseFromSystemAvgKwList
+ true
+ true
+ true
+ Number
+ false
+ false
+ [3.42]
+ recfDQscmquO0odpo
+ 13
+ [3.42]
+ Number
+
recElgddLa2jgifep
2022-11-04T15:05:54Z
@@ -11374,6 +12872,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
Integer
+
+ recEmOauAesrLmBV2
+ 2023-05-10T14:24:31Z
+ TempUnit
+ true
+ recEyU9EKDtM3bD18
+ recognized.temperature.unit
+ true
+ false
+ "6f16ee63"
+ recfDQscmquO0odpo
+ recognized.temperature.unit.000
+ C
+ 6
+ F
+ UpperPython
+ String
+ RecognizedTemperatureUnit000
+ RecognizedTemperatureUnit000
+
recEnND4VVh74Ayni
2022-07-05T12:50:08Z
@@ -11422,7 +12940,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
13.5
recrZz3gmzl97POA1
- 2
+ 8
13.5
Number
@@ -11445,6 +12963,27 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
SpaceheatUnit000
SpaceheatUnit000
+
+ recEzoM8c1xB0qzmp
+ 2023-06-28T21:45:35Z
+ StandardOfferPriceDollarsPerMwh
+ true
+ true
+ Integer
+ false
+ false
+ 110
+ rec2EA0TG0Xexi6wg
+ 30
+ 110
+ Integer
+
+
+ recF3pwEs2yeSr5xM
+ 2023-06-25T21:26:06Z
+ false
+ false
+
recF4YcltowEZgCBx
2022-07-22T12:14:41Z
@@ -11472,6 +13011,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
SpaceheatUnit000
SpaceheatUnit000
+ itrH5pB2a6NdIiiLf/recF5JRJR6AVkfQsK
recF8QiEbhrOARMRK
2022-11-06T20:03:47Z
@@ -11531,6 +13071,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
recyD0ycgUiT7TiH2
+
+ recFFrCFMIAqvoz8H
+ 2023-05-01T17:44:57Z
+ AtnParamsTypeName
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "atn.params.brickstorageheater"
+ "a.b-h"
+ rec3fLb6b0gIeuCTO
+ 2
+ String
+ LeftRightDot
+
recFH2jCEHoYihgGG
2022-11-12T08:16:16Z
@@ -11740,6 +13298,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoMsgPackEncoded
+
+ recG7vJbQ7FW4DDT4
+ 2023-06-28T18:50:55Z
+ AmbientTempStoreF
+ true
+ true
+ Integer
+ false
+ false
+ 65
+ rechp89wabr5kkqti
+ 22
+ 65
+ Integer
+
recGCsIHBzXWFK7fH
2022-11-10T14:22:46Z
@@ -11855,6 +13428,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recGljnJKcjLcwmVu
+ 2023-06-25T20:56:57Z
+ RequiredSourceWaterTempF
+ true
+ true
+ Integer
+ false
+ false
+ 120
+ rechp89wabr5kkqti
+ 14
+ 120
+ Integer
+
recGnm88Ygos6In9e
2022-11-10T14:26:21Z
@@ -11888,6 +13476,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recGuqNNHJZ2Zrcu8
+ 2023-05-10T15:10:40Z
+ HouseWorstCaseTempF
+ true
+ true
+ Integer
+ false
+ false
+ -7
+ recw5evm1WetKAzZG
+ 21
+ -7
+ Integer
+
recGzFhE65zhdlVJK
2022-09-19T18:31:41Z
@@ -11915,7 +13518,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
1.25
recrZz3gmzl97POA1
- 19
+ 25
1.25
Number
@@ -11953,15 +13556,60 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
- recHYSlx2bkFlTrmH
- 2022-08-11T17:28:05Z
- AboutNodeAliasList
+ recHRWGtm51BPqgFb
+ 2023-05-10T14:41:00Z
+ Params
+ true
+ flo.params.000
+ false
+ true
+ recBqSlQdF17CgMPY
+ recvJ9OVpqVVP895H
+ flo.params
+ 7
+ flo.params.000
+
+
+ recHUqMGWS2zqNV6H
+ 2023-05-10T14:19:51Z
+ RealtimeElectricityPrice
true
true
true
- String
- recb9fI4kRkTYXDzA
- LeftRightDot
+ Number
+ false
+ false
+ [10.35]
+ recfDQscmquO0odpo
+ 15
+ [10.35]
+ Number
+
+
+ recHWv6Qz6hTlMPqx
+ 2023-06-25T21:26:22Z
+ StartMinuteUtc
+ true
+ true
+ Integer
+ false
+ false
+ 0
+ rec2EA0TG0Xexi6wg
+ 8
+ 0
+ Integer
+
+
+ recHYSlx2bkFlTrmH
+ 2022-08-11T17:28:05Z
+ AboutNodeAliasList
+ true
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
false
false
["a.elt1.relay", "a.tank.temp0"]
@@ -12002,6 +13650,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
4
Boolean
+
+ recHnLyayIHQ166SI
+ 2023-06-28T14:34:15Z
+ Alpha
+ true
+ true
+ Integer
+ false
+ false
+ 200
+ recy7fqBm5Cl94dnF
+ 0
+ 200
+ Alpha (units: W)
+ Integer
+
recHoBx1WtYMvXJC1
2022-11-10T13:23:40Z
@@ -12055,7 +13719,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
158
recrZz3gmzl97POA1
- 35
+ 36
158
Integer
@@ -12097,6 +13761,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
AlgoCertType000
AlgoCertType000
+
+ recIClynqMSTgczNz
+ 2023-05-01T17:37:04Z
+ EnergyType
+ true
+ recf9ZTshqRu81HZo
+ energy.supply.type
+ true
+ false
+ "e9dc99a6"
+ recw5evm1WetKAzZG
+ energy.supply.type.000
+ Unknown
+ 8
+ RealtimeLocalLmp
+ UpperPython
+ String
+ EnergySupplyType000
+ EnergySupplyType000
+
recIKbu4rYF1nXhPD
2022-11-08T04:12:57Z
@@ -12161,7 +13845,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
PositiveInteger
Integer
- itrl5NjSxG6LGJS6d/recIhSSpqIviBUW64
+
+ recIi1kb6LxzOzv0b
+ 2023-06-25T21:25:47Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ rec2EA0TG0Xexi6wg
+ 0
+ String
+ LeftRightDot
+
recIkJy1G5tzWXqbs
2022-11-09T23:00:57Z
@@ -12173,7 +13874,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
100
recrZz3gmzl97POA1
- 20
+ 26
100
Integer
@@ -12284,6 +13985,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
String
+
+ recJL7h0Cdb45oTNh
+ 2023-05-10T14:19:35Z
+ SliceDurationMinutes
+ true
+ true
+ true
+ Integer
+ false
+ false
+ [60]
+ recfDQscmquO0odpo
+ 12
+ [60]
+ Integer
+
recJLwpN7DqR3rSu3
2022-11-10T14:20:26Z
@@ -12355,6 +14072,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recJcYgKuh54ltqk5
+ 2023-05-10T14:40:33Z
+ FloParamsTypeName
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "flo.params.brickstorageheater"
+ "a.b-h"
+ recBqSlQdF17CgMPY
+ 2
+ String
+ LeftRightDot
+
recJdGNNBjXxo81cJ
2022-09-19T18:25:58Z
@@ -12555,7 +14290,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
113
recrZz3gmzl97POA1
- 15
+ 21
113
Integer
@@ -12730,6 +14465,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec944QikN18Rdopu
Integer
+
+ recKxC93PtWwHMzJH
+ 2023-06-25T21:25:55Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ rec2EA0TG0Xexi6wg
+ 3
+ "US/Eastern"
+ String
+
recL0U9e64jcs9Ftk
2022-07-10T14:13:32Z
@@ -12820,6 +14570,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+ itrH5pB2a6NdIiiLf/recLO20AZmUda0yof
recLe5LwcwfZdUoyG
2022-11-10T14:20:13Z
@@ -12848,13 +14599,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"d5cb9217"
recdXzxjKArjU2z9Z
- spaceheat.make.model.000
+ spaceheat.make.model.001
UnknownMake__UnknownModel
1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
recLl3tp0CYubBgaU
@@ -12875,6 +14626,23 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recLnHXHBgC0FTXR0
+ 2023-04-29T21:08:24Z
+ AtnParamsTypeName
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "a.b-h"
+ rec3kcgktiHCBYpA4
+ 2
+ String
+ LeftRightDot
+
recLnMCNd00yOpeVw
2022-07-10T12:50:15Z
@@ -12936,7 +14704,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"US/Eastern"
recrZz3gmzl97POA1
- 28
+ 2
"US/Eastern"
String
@@ -12995,6 +14763,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recMcmv8GCUtIZ3Tx
+ 2023-05-10T14:38:13Z
+ StartMonthUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ recvJ9OVpqVVP895H
+ 5
+ 1
+ Integer
+
recMdMhh2RYFbx0qt
2022-07-10T14:13:45Z
@@ -13156,6 +14939,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recNMgiBoWjcpx9qS
+ 2023-05-10T14:39:49Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ recBqSlQdF17CgMPY
+ 0
+ String
+ LeftRightDot
+
recNP8HpFppqe53m3
2022-10-02T23:33:54Z
@@ -13246,16 +15047,69 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recNujglYpalkIIRN
2022-11-11T00:46:45Z
- AtnParams
+ Params
true
- atn.params.heatpumpwithbooststore.000
+ atn.params.000
false
true
+ {
+ "GNodeAlias": "d1.isone.ver.keene.holly",
+ "HomeCity": "MILLINOCKET_ME",
+ "TimezoneString": "US/Eastern",
+ "CurrencyUnitGtEnumSymbol": "e57c5143",
+ "TariffGtEnumSymbol": "2127aba6",
+ "EnergyTypeGtEnumSymbol": "e9dc99a6",
+ "StandardOfferPriceDollarsPerMwh": 110,
+ "DistributionTariffDollarsPerMwh": 113,
+ "MaxBrickTempC": 190,
+ "RatedMaxPowerKw": 13.5,
+ "C": 200,
+ "ROff": 0.09,
+ "ROn": 0.15,
+ "RoomTempF": 70,
+ "Alpha": 158,
+ "BetaOt": 158,
+ "TempUnitGtEnumSymbol": "6f16ee63",
+ "TypeName": "atn.params.brickstorageheater",
+ "Version": "000",
+ }
rec3fLb6b0gIeuCTO
- recrZz3gmzl97POA1
- atn.params.heatpumpwithbooststore
- 4
- atn.params.heatpumpwithbooststore.000
+ rec4yUxGiLZpqWQqb
+ atn.params
+ 5
+ atn.params.000
+
+
+ recNy04v6VC70hH8c
+ 2023-05-10T14:40:43Z
+ IrlTimeUnixS
+ true
+ Integer
+ rec13dujLuXXSf5L3
+ ReasonableUnixTimeS
+ false
+ false
+ 1668127823
+ 32503683600
+ recBqSlQdF17CgMPY
+ 5
+ Integer
+ ReasonableUnixTimeS
+
+
+ recO44dCWgk26aPoL
+ 2023-05-01T17:35:42Z
+ MaxBrickTempC
+ true
+ true
+ Integer
+ false
+ false
+ 190
+ recw5evm1WetKAzZG
+ 11
+ 190
+ Integer
recO5REMzzyrc2uHT
@@ -13283,6 +15137,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
Integer
+
+ recOB8YIQSx4CkN54
+ 2023-05-01T17:39:42Z
+ BetaOt
+ true
+ true
+ Integer
+ false
+ false
+ 158
+ recw5evm1WetKAzZG
+ 18
+ 158
+ Integer
+
recOBfgFL5HGn9j1B
2023-01-13T18:40:23Z
@@ -13332,6 +15201,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recOSbtwvb9Jepzxm
+ 2023-05-01T17:31:26Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ recw5evm1WetKAzZG
+ 1
+ "MILLINOCKET_ME"
+ Home City
+ String
+
recOWeL6PoLldCrop
2022-07-03T22:10:56Z
@@ -13347,6 +15232,41 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
gt.sh.simple.telemetry.status
gt.sh.simple.telemetry.status.100
+
+ recOaBXisU25ozsU1
+ 2023-06-28T21:45:18Z
+ EnergyType
+ true
+ recf9ZTshqRu81HZo
+ energy.supply.type
+ true
+ false
+ "e9dc99a6"
+ rec2EA0TG0Xexi6wg
+ energy.supply.type.000
+ Unknown
+ 29
+ RealtimeLocalLmp
+ UpperPython
+ String
+ EnergySupplyType000
+ EnergySupplyType000
+
+
+ recOd8utfibXflWak
+ 2023-06-25T20:49:59Z
+ FlatDistributionTariffDollarsPerMwh
+ true
+ true
+ Integer
+ false
+ false
+ 113
+ rechp89wabr5kkqti
+ 10
+ 113
+ Integer
+
recOdulFCYJbIktv4
2022-11-04T18:36:27Z
@@ -13407,6 +15327,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
false
+
+ recOlYQO9t0ZKGfmx
+ 2023-06-25T21:31:23Z
+ OutsideTempF
+ true
+ true
+ true
+ Number
+ false
+ false
+ [-5.1]
+ rec2EA0TG0Xexi6wg
+ 23
+ [-5.1]
+ Number
+
recOpsZkD5RkikKq4
2022-08-11T17:28:11Z
@@ -13517,19 +15453,48 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
ReasonableUnixTimeMs
- recPYQXqDtcsSMm7n
- 2022-11-08T17:24:38Z
- BidIdx
+ recPHwkUPJ576xwf4
+ 2023-06-28T16:05:48Z
+ StorePassiveLossRatio
true
true
- Integer
+ Number
false
false
- 23
+ 0.005
+ 19
+ 0.005
+ Number
+
+
+ recPYQXqDtcsSMm7n
+ 2022-11-08T17:24:38Z
+ BidIdx
+ true
+ true
+ Integer
+ false
+ false
+ 23
recvGFiTtzXNrhLBm
0
Integer
+
+ recPixDGsGJ5nEHUv
+ 2023-05-10T14:37:32Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ recvJ9OVpqVVP895H
+ 2
+ "MILLINOCKET_ME"
+ String
+
recPrU0RlBfIouTuN
2022-09-22T18:51:34Z
@@ -13560,6 +15525,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
Integer
+
+ recPuuEJJrwfAgwcn
+ 2023-06-25T20:49:37Z
+ SliceDurationMinutes
+ true
+ true
+ Integer
+ false
+ false
+ 60
+ rechp89wabr5kkqti
+ 5
+ 60
+ Integer
+
recPw5jcOzArg9D84
2022-11-21T05:26:04Z
@@ -13589,14 +15569,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
4
recrZz3gmzl97POA1
- 36
+ 37
4
Number
recQBfaODIoTeMbbQ
2022-11-07T19:00:01Z
- HeatpumpPowerKwTimes1000
+ HeatpumpPowerWatts
true
true
Integer
@@ -13667,6 +15647,40 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recQRsIq3xTiLWopK
+ 2023-06-25T20:49:25Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ rechp89wabr5kkqti
+ 2
+ String
+
+
+ recQVmUtZgyRJS0Fw
+ 2023-06-25T20:49:49Z
+ EnergyType
+ true
+ recf9ZTshqRu81HZo
+ energy.supply.type
+ true
+ false
+ "e9dc99a6"
+ rechp89wabr5kkqti
+ energy.supply.type.000
+ Unknown
+ 8
+ RealtimeLocalLmp
+ UpperPython
+ String
+ EnergySupplyType000
+ EnergySupplyType000
+
recQduwtmVeYjXuQV
2023-01-16T08:02:15Z
@@ -13728,6 +15742,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recR3pGEgjTTT914k
+ 2023-06-27T20:32:16Z
+ RoomTempF
+ true
+ true
+ Integer
+ false
+ false
+ 70
+ rec2EA0TG0Xexi6wg
+ 16
+ 70
+ Integer
+
recR5j1j3DAzKovaR
2022-11-04T18:00:50Z
@@ -13762,7 +15791,6 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
MarketQuantityUnit000
MarketQuantityUnit000
- itrl5NjSxG6LGJS6d/recREgyk5HQKEtSMJ
recRMYT3frXP98k2q
2022-11-04T13:44:57Z
@@ -13782,6 +15810,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recRS18rB7QWfITKv
+ 2023-05-01T17:37:37Z
+ DistributionTariffDollarsPerMwh
+ true
+ true
+ Integer
+ false
+ false
+ 113
+ recw5evm1WetKAzZG
+ 10
+ 113
+ Integer
+
recRTTglTWqlyAaQW
2022-06-04T19:22:03Z
@@ -13794,13 +15837,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"acd93fb3"
rec3Noy3m1X4Vdly9
- spaceheat.make.model.000
+ spaceheat.make.model.001
UnknownMake__UnknownModel
1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
recRU6cvY6FKUwxbv
@@ -13855,6 +15898,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
String
+
+ recRcY8WNqknxX5sV
+ 2023-05-10T15:11:04Z
+ AnnualHvacKwhTh
+ true
+ true
+ Integer
+ false
+ false
+ 28125
+ recw5evm1WetKAzZG
+ 17
+ 28125
+ Integer
+
recRjhyzbBd693UU7
2022-07-10T12:50:59Z
@@ -13917,6 +15975,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
MarketPriceUnit000
MarketPriceUnit000
+
+ recS3mPyncJofH01H
+ 2023-05-10T14:26:13Z
+ RatedMaxPowerKw
+ true
+ true
+ Number
+ false
+ false
+ 13.5
+ recfDQscmquO0odpo
+ 1
+ 13.5
+ Number
+
recS9QjJmxGy17MnI
2022-11-06T20:03:48Z
@@ -13948,10 +16021,25 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
5
recrZz3gmzl97POA1
- 23
+ 29
5
Integer
+
+ recSCjwZxVDm5pFH3
+ 2023-06-25T21:26:15Z
+ StartDayUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ rec2EA0TG0Xexi6wg
+ 6
+ 1
+ Integer
+
recSH9Gcj0yME4EIk
2023-01-15T12:55:23Z
@@ -14027,6 +16115,40 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
recyD0ycgUiT7TiH2
+
+ recSZuXgqgnSQCBOa
+ 2023-05-01T17:53:14Z
+ AboutTerminalAssetAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly.ta"
+ "a.b-h"
+ recm5UcVaAPAtrrFS
+ 5
+ String
+ LeftRightDot
+
+
+ recSeEWijLqaBvnqw
+ 2023-06-25T21:30:25Z
+ SliceDurationMinutes
+ true
+ true
+ true
+ Integer
+ false
+ false
+ [60]
+ rec2EA0TG0Xexi6wg
+ 20
+ [60]
+ Integer
+
recSjtsFt8YhLc4wA
2022-07-10T12:50:18Z
@@ -14046,6 +16168,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recSmAhe1VTBToaSK
+ 2023-06-25T21:31:42Z
+ RealtimeElectricityPrice
+ true
+ true
+ true
+ Number
+ false
+ false
+ [10.35]
+ rec2EA0TG0Xexi6wg
+ 21
+ [10.35]
+ Number
+
recSsJxTMJFhAidWC
2022-09-30T19:09:12Z
@@ -14081,6 +16219,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+ itrH5pB2a6NdIiiLf/recSy6tRXV5XRsb7i
recSyaqv9CQCvmg7I
2022-10-02T23:33:33Z
@@ -14185,6 +16324,36 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
PositiveInteger
+
+ recTLZwyC5fS4xZs4
+ 2023-06-25T21:33:20Z
+ StoreSizeGallons
+ true
+ true
+ Integer
+ false
+ false
+ 240
+ rec2EA0TG0Xexi6wg
+ 10
+ 240
+ Integer
+
+
+ recTMm4lhEWh9m2It
+ 2023-06-25T20:49:32Z
+ FloSlices
+ true
+ true
+ Integer
+ false
+ false
+ 48
+ rechp89wabr5kkqti
+ 4
+ 48
+ Integer
+
recTRNtq7f7hryTGh
2022-09-19T18:22:06Z
@@ -14200,6 +16369,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
Integer
+
+ recTSBOT0mlRq0zN0
+ 2023-06-25T20:54:37Z
+ RoomTemp
+ false
+ false
+
recTV2IpdZjy1gFiQ
2022-11-17T02:19:53Z
@@ -14269,6 +16445,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Key data about the docker container
supervisor.container.gt.000
+
+ recTfGFS2AGUc58Ig
+ 2023-05-01T21:53:51Z
+ PowerWatts
+ true
+ true
+ Integer
+ false
+ false
+ 3000
+ recwXD4ryogKVwsnE
+ 2
+ Integer
+
recThSsC8YgHG8vd0
2022-07-10T12:50:20Z
@@ -14308,7 +16498,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
60
recrZz3gmzl97POA1
- 32
+ 5
Integer
@@ -14327,6 +16517,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
MarketSlotNameLrdFormat
+
+ recTtF957kyOejDRh
+ 2023-05-01T17:52:36Z
+ PowerWatts
+ true
+ true
+ Integer
+ false
+ false
+ 933
+ recm5UcVaAPAtrrFS
+ 2
+ Integer
+
recU5B4V3aPnvMPZf
2022-11-21T05:24:55Z
@@ -14445,6 +16649,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Normally Open
Boolean
+
+ recUcTdqja2lseqny
+ 2023-05-01T17:37:18Z
+ StandardOfferPriceDollarsPerMwh
+ true
+ true
+ Integer
+ false
+ false
+ 110
+ recw5evm1WetKAzZG
+ 9
+ 110
+ Integer
+
recUgM344FS0QIgRe
2022-11-10T13:23:34Z
@@ -14479,6 +16698,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recUisNTiM4JQSM8s
+ 2023-05-01T17:38:04Z
+ ROff
+ true
+ true
+ Number
+ false
+ false
+ 0.08
+ recw5evm1WetKAzZG
+ 14
+ 0.08
+ Number
+
recUyndqnwyKAWe93
2022-07-05T12:45:01Z
@@ -14554,6 +16788,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
AlgoAddressStringFormat
https://gridworks.readthedocs.io/en/latest/ta-validator.html
+
+ recVS4wdbtDR3UsJO
+ 2023-06-27T20:30:28Z
+ StartingStoreIdx
+ true
+ true
+ Integer
+ false
+ false
+ 50
+ rec2EA0TG0Xexi6wg
+ 32
+ 50
+ Integer
+
recVUltfFpgKkEKR0
2022-09-22T18:55:00Z
@@ -14712,12 +16961,28 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
RecognizedTemperatureUnit000
- recW0NRRevzaIKzIT
- 2022-11-10T14:17:59Z
- StorageSteps
+ recVyMdsBkXQRulvG
+ 2023-05-10T14:19:56Z
+ RegulationPrice
true
true
- Integer
+ true
+ Number
+ false
+ false
+ [25.3]
+ recfDQscmquO0odpo
+ 19
+ [25.3]
+ Number
+
+
+ recW0NRRevzaIKzIT
+ 2022-11-10T14:17:59Z
+ StorageSteps
+ true
+ true
+ Integer
false
false
100
@@ -14853,6 +17118,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
Integer
+
+ recWfVfIe5SaVyrD2
+ 2023-05-01T22:02:30Z
+ FromGNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ rec8IDXjSvdhHGds4
+ 0
+ String
+ LeftRightDot
+
recWpU6k2DSQfofVc
2022-11-09T23:00:49Z
@@ -14866,13 +17149,28 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
distribution.tariff.000
Unknown
- 12
- VersantStorageHeatTariff
+ 18
+ VersantA1StorageHeatTariff
UpperPython
String
DistributionTariff000
DistributionTariff000
+
+ recWqq69qS32BdECG
+ 2023-06-25T21:25:51Z
+ HomeCity
+ true
+ true
+ String
+ false
+ false
+ "MILLINOCKET_ME"
+ rec2EA0TG0Xexi6wg
+ 2
+ "MILLINOCKET_ME"
+ String
+
recWtBipbdRHF9uJs
2022-09-22T18:51:44Z
@@ -14905,12 +17203,42 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recWw9MgX8ZXkyRii
+ 2023-06-27T21:02:54Z
+ AmbientPowerInKw
+ true
+ true
+ Number
+ false
+ false
+ 1.2
+ rec2EA0TG0Xexi6wg
+ 17
+ 1.2
+ Number
+
recX7FTlZBNwckfGT
2023-01-13T18:59:15Z
false
false
+
+ recXHPMn2CQMzlXo9
+ 2023-06-25T21:26:03Z
+ StartYearUtc
+ true
+ true
+ Integer
+ false
+ false
+ 2020
+ rec2EA0TG0Xexi6wg
+ 4
+ 2020
+ Integer
+
recXVUzIp49WFOFdH
2022-11-10T13:23:44Z
@@ -14954,24 +17282,6 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Host on LAN when power meter is modbus over Ethernet
String
-
- recXfOCZByFlChQxR
- 2023-01-16T08:01:34Z
- FromGNodeInstanceId
- true
- true
- String
- rec24qjC90m0f4Kvl
- UuidCanonicalTextual
- false
- false
- '60e5c73a-77e1-4c01-8b78-02c92d20f18a'
- "d4be12d5-33ba-4f1f-b9e5"
- rec9kYNek59Vqps4S
- 1
- String
- UuidCanonicalTextual
-
recXgOcojFyG3Ftr6
2022-09-30T19:09:15Z
@@ -15001,13 +17311,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"638bf97b"
recEhzcpob8H7VuEF
- sh.actor.class.001
+ sh.actor.class.000
NoActor
2
UpperPython
String
- SpaceheatActorClass001
- SpaceheatActorClass001
+ SpaceheatActorClass000
+ SpaceheatActorClass000
recXr4oGZuc4Rse9N
@@ -15158,6 +17468,37 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Integer
+
+ recYYjWL9c3xnsGSk
+ 2023-06-27T21:03:04Z
+ HouseWorstCaseTempF
+ true
+ true
+ Number
+ false
+ false
+ -7
+ rec2EA0TG0Xexi6wg
+ 18
+ -7
+ Number
+
+
+ recYiAHa33V7Jj2dv
+ 2023-06-25T21:31:01Z
+ PowerLostFromHouseKwList
+ true
+ true
+ true
+ Number
+ false
+ false
+ [3.42]
+ rec2EA0TG0Xexi6wg
+ 19
+ [3.42]
+ Number
+
recYtyZl3uBr6N9Ey
2022-07-10T14:13:40Z
@@ -15169,13 +17510,43 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"638bf97b"
recUj3ZPKMsXanG88
- sh.actor.class.001
+ sh.actor.class.000
NoActor
2
UpperPython
String
- SpaceheatActorClass001
- SpaceheatActorClass001
+ SpaceheatActorClass000
+ SpaceheatActorClass000
+
+
+ recZ0rfW1Kha3I1H4
+ 2023-05-10T14:20:27Z
+ StartMinuteUtc
+ true
+ true
+ Integer
+ false
+ false
+ 0
+ recfDQscmquO0odpo
+ 27
+ 0
+ Integer
+
+
+ recZ4cjPPBxvCcE1F
+ 2023-06-25T20:57:17Z
+ CirculatorPumpGpm
+ true
+ true
+ Number
+ false
+ false
+ 5.5
+ rechp89wabr5kkqti
+ 15
+ 5.5
+ Number
recZ6Qnf2ivCfWkSG
@@ -15190,6 +17561,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recm2rM5o9GxgCqbL
Boolean
+
+ recZ9x2VJeJHEQIDa
+ 2023-06-28T14:34:11Z
+ 0
+ false
+ false
+ 0
+
recZCWfsmo9zR1EgF
2022-07-12T18:23:04Z
@@ -15234,13 +17613,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"09185ae3"
recULIwPg69M69185
- spaceheat.make.model.000
+ spaceheat.make.model.001
UnknownMake__UnknownModel
1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
recZOVb1cq9Dq3Oi5
@@ -15334,7 +17713,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
4
recrZz3gmzl97POA1
- 7
+ 13
4
Number
@@ -15349,14 +17728,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
12
recrZz3gmzl97POA1
- 9
+ 15
12
Number
recZwSFwN4qnwJdmE
2022-11-07T18:59:56Z
- BoostPowerKwTimes1000
+ BoostPowerWatts
true
true
Integer
@@ -15367,6 +17746,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Integer
+
+ reca2V0hCWFV463bf
+ 2023-05-10T14:19:53Z
+ DistributionPrice
+ true
+ true
+ true
+ Number
+ false
+ false
+ [40.0]
+ recfDQscmquO0odpo
+ 17
+ [40.0]
+ Number
+
reca6fj3KeJFrWBbK
2022-11-09T23:00:18Z
@@ -15378,11 +17773,47 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
240
recrZz3gmzl97POA1
- 0
+ 6
240
Integer
- itrl5NjSxG6LGJS6d/reca6fj3KeJFrWBbK
+
+ recaMsFqtaJuXv5AD
+ 2023-06-25T20:49:13Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ rechp89wabr5kkqti
+ 0
+ String
+ LeftRightDot
+
+ itrH5pB2a6NdIiiLf/recaMsFqtaJuXv5AD
+
+ recaSQiyOGuk96R75
+ 2023-06-25T21:25:49Z
+ FloParamsUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ rec2EA0TG0Xexi6wg
+ 1
+ String
+ UuidCanonicalTextual
+
recaYqACGpgpO40W8
2023-01-16T17:19:44Z
@@ -15534,6 +17965,44 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Price Quantity Pairs
price.quantity.unitless.000
+
+ recbAjM31sjr5mRF3
+ 2023-05-01T21:53:47Z
+ FromGNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ recwXD4ryogKVwsnE
+ 0
+ String
+ LeftRightDot
+
+
+ recbIZmTs1RacVBoR
+ 2023-05-10T14:24:28Z
+ CurrencyUnit
+ true
+ recA15Ak50x6bNMx1
+ recognized.currency.unit
+ true
+ false
+ "e57c5143"
+ recfDQscmquO0odpo
+ recognized.currency.unit.000
+ Unknown
+ 5
+ USD
+ Upper
+ String
+ RecognizedCurrencyUnit000
+ RecognizedCurrencyUnit000
+
recbP43UORyJcMOyK
2022-10-02T23:33:30Z
@@ -15697,6 +18166,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recbjZkDY0xosm28b
+ 2023-05-10T14:20:12Z
+ StartYearUtc
+ true
+ true
+ Integer
+ false
+ false
+ 2020
+ recfDQscmquO0odpo
+ 23
+ 2020
+ Integer
+
recbm3rb6c3wtCzWR
2023-03-02T20:55:56Z
@@ -15761,6 +18245,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
false
+
+ recc3KsHCvd6Pp9rs
+ 2023-05-01T17:40:20Z
+ ROn
+ true
+ true
+ Number
+ false
+ false
+ 0.15
+ recw5evm1WetKAzZG
+ 15
+ 0.15
+ Number
+
recc5A1JaRXNBZe9g
2023-01-15T12:15:03Z
@@ -15789,7 +18288,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
energy.supply.type.000
Unknown
- 11
+ 17
RealtimeLocalLmp
UpperPython
String
@@ -15942,14 +18441,34 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
'00000000'
recV0KuDFayH4qGIl
- strategy.name.000
+ strategy.name.001
NoActor
2
UpperPython
Used to determine the code running in a GNode actor application
String
- StrategyName000
- StrategyName000
+ StrategyName001
+ StrategyName001
+
+
+ reccuXB02dnW4Wl6y
+ 2023-06-27T18:55:43Z
+ CurrencyUnit
+ true
+ recA15Ak50x6bNMx1
+ recognized.currency.unit
+ true
+ false
+ "e57c5143"
+ rec2EA0TG0Xexi6wg
+ recognized.currency.unit.000
+ Unknown
+ 27
+ USD
+ Upper
+ String
+ RecognizedCurrencyUnit000
+ RecognizedCurrencyUnit000
recczPPN1cOAeZJz7
@@ -16177,9 +18696,42 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
LeftRightDot
- receX5lrBDRQOfwtV
- 2023-03-13T18:13:55Z
- NameplatePowerW
+ receLZhjMOO95MTfS
+ 2023-05-10T14:26:11Z
+ MaxBrickTempC
+ true
+ true
+ Integer
+ false
+ false
+ 190
+ recfDQscmquO0odpo
+ 0
+ 190
+ Integer
+
+
+ receQEqkX185ZTnZn
+ 2023-06-25T21:32:02Z
+ RtElecPriceUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "bd2ec5c5-40b9-4b61-ad1b-4613370246d6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ rec2EA0TG0Xexi6wg
+ 24
+ String
+ UuidCanonicalTextual
+
+
+ receX5lrBDRQOfwtV
+ 2023-03-13T18:13:55Z
+ NameplatePowerW
true
Integer
false
@@ -16202,7 +18754,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1668127823
32503683600
rec3fLb6b0gIeuCTO
- 3
+ 4
Integer
ReasonableUnixTimeS
@@ -16317,7 +18869,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"MILLINOCKET_ME"
recrZz3gmzl97POA1
- 29
+ 1
"MILLINOCKET_ME"
String
@@ -16453,6 +19005,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
"US/Eastern"
String
+
+ recfeWhbkmYYdayn3
+ 2023-05-01T17:52:31Z
+ FromGNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ recm5UcVaAPAtrrFS
+ 0
+ String
+ LeftRightDot
+
recfeynTSBzTXnyUK
2022-11-09T23:00:51Z
@@ -16464,7 +19034,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
110
recrZz3gmzl97POA1
- 14
+ 20
110
Integer
@@ -16504,6 +19074,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ recfyyQ1OXYTVJeGV
+ 2023-05-10T14:20:22Z
+ StartDayUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ recfDQscmquO0odpo
+ 25
+ 1
+ Integer
+
recfzsWHMU0fhZE47
2023-01-15T12:55:29Z
@@ -16524,6 +19109,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
MarketPriceUnit000
MarketPriceUnit000
+
+ recg6mf4mCKi2Fwa8
+ 2023-05-10T14:43:43Z
+ FloParamsTypeVersion
+ true
+ true
+ String
+ false
+ false
+ "000"
+ recBqSlQdF17CgMPY
+ 3
+ String
+
recg8JNR1e1aZk41L
2022-06-15T22:52:46Z
@@ -16567,6 +19166,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
PositiveInteger
+
+ recgPfLVLuHQ0esKS
+ 2023-06-28T16:53:47Z
+ AmbientTempStoreF
+ true
+ true
+ Integer
+ false
+ false
+ 65
+ rec2EA0TG0Xexi6wg
+ 19
+ 65
+ Integer
+
recgU2lvslyTiaIao
2023-03-09T19:31:21Z
@@ -16631,7 +19245,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
65
recrZz3gmzl97POA1
- 16
+ 22
65
Integer
@@ -16746,6 +19360,23 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
Integer
+ itrH5pB2a6NdIiiLf/rechFmb5stcc7uIXs
+
+ rechO4iVyXL7dtIKk
+ 2023-05-01T17:34:52Z
+ SliceDurationMinutes
+ true
+ true
+ Integer
+ false
+ false
+ 60
+ recw5evm1WetKAzZG
+ The length of
+ 5
+ 60
+ Integer
+
rechYoiSzlYAU1ZWD
2022-06-20T13:16:57Z
@@ -16785,6 +19416,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
recyD0ycgUiT7TiH2
+
+ rechmXzZK0wqTOIni
+ 2023-06-25T21:31:50Z
+ DistributionPrice
+ true
+ true
+ true
+ Number
+ false
+ false
+ [40.0]
+ rec2EA0TG0Xexi6wg
+ 22
+ [40.0]
+ Number
+
rechs1D8dytBH2C5s
2023-01-13T18:58:50Z
@@ -16931,6 +19578,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ reci3R8YqMvMYlLuI
+ 2023-05-01T17:31:28Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ recw5evm1WetKAzZG
+ 2
+ "US/Eastern"
+ Timezone String
+ String
+
reci7Ga0o0Ubtlk5g
2022-06-06T18:45:58Z
@@ -16945,7 +19608,6 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
4
String
- itrl5NjSxG6LGJS6d/reci7Ga0o0Ubtlk5g
reci7qQs2JCeyRbV7
2023-03-25T18:46:49Z
@@ -17201,6 +19863,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Bit
Integer
+
+ recjTlFd94m2QsbZy
+ 2023-06-27T18:45:18Z
+ ReturnWaterDeltaTempF
+ true
+ true
+ Integer
+ false
+ false
+ 20
+ rec2EA0TG0Xexi6wg
+ 15
+ 20
+ Integer
+
recjXMbjBpdJFTXBi
2022-07-05T12:57:11Z
@@ -17324,6 +20001,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
false
+
+ reckE8i5FbwL5N8Vr
+ 2023-05-10T15:10:20Z
+ AmbientPowerInKw
+ true
+ true
+ Number
+ false
+ false
+ 1.25
+ recw5evm1WetKAzZG
+ 20
+ 1.25
+ Number
+
reckEe9774XgeDvIL
2022-09-22T02:53:54Z
@@ -17355,6 +20047,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
240
Integer
+
+ reckRZnUovNEITIs2
+ 2023-05-10T14:30:24Z
+ false
+ false
+
reckRoTaa3PYdQ7Bi
2022-11-30T19:45:04Z
@@ -17383,7 +20081,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
135
recrZz3gmzl97POA1
- 4
+ 10
135
Integer
@@ -17403,6 +20101,36 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
Bit
+
+ reckc7GfMfrl08GTz
+ 2023-05-10T14:19:48Z
+ OutsideTempF
+ true
+ true
+ true
+ Number
+ false
+ false
+ [-5.1]
+ recfDQscmquO0odpo
+ 16
+ [-5.1]
+ Number
+
+
+ reckfEeZNa1zs6pP1
+ 2023-05-01T21:53:55Z
+ StoreKwh
+ true
+ true
+ Integer
+ false
+ false
+ 5
+ recwXD4ryogKVwsnE
+ 3
+ Integer
+
reckgfkjeNGk0Rqx0
2023-04-09T21:09:24Z
@@ -17516,6 +20244,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
Integer
+
+ reclVOYJSKp7L4SON
+ 2023-06-25T20:49:55Z
+ StandardOfferPriceDollarsPerMwh
+ true
+ true
+ Integer
+ false
+ false
+ 110
+ rechp89wabr5kkqti
+ 9
+ 110
+ Integer
+
reclWEqctUrS5WXwG
2022-09-14T16:28:40Z
@@ -17602,6 +20345,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ reclneIsw2C57Nn40
+ 2023-06-27T18:05:25Z
+ ReturnWaterDeltaTempF
+ true
+ true
+ Integer
+ false
+ false
+ 20
+ rechp89wabr5kkqti
+ 16
+ 20
+ Integer
+
reclsQog4UhrdIbyr
2022-11-09T23:29:29Z
@@ -17615,7 +20373,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
recognized.currency.unit.000
Unknown
- 26
+ 32
USD
Upper
String
@@ -17652,6 +20410,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
String
+
+ recm85TehRT6oXtTP
+ 2023-06-25T20:49:45Z
+ Tariff
+ true
+ rec4S3L3NZiPihbLi
+ distribution.tariff
+ true
+ false
+ "2127aba6"
+ rechp89wabr5kkqti
+ distribution.tariff.000
+ Unknown
+ 7
+ VersantA1StorageHeatTariff
+ UpperPython
+ String
+ DistributionTariff000
+ DistributionTariff000
+
recmJAntc8jP45C1K
2023-02-20T14:09:46Z
@@ -17701,6 +20479,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
135
Integer
+
+ recmQaQas8xe2JRvv
+ 2023-06-25T20:56:54Z
+ ElementMaxPowerKw
+ true
+ true
+ Number
+ false
+ false
+ 9.5
+ rechp89wabr5kkqti
+ 13
+ 9.5
+ Number
+
recmSQdvXU121Kb5s
2022-07-25T22:45:35Z
@@ -17769,6 +20562,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recmgWy6guY7V2or8
+ 2023-06-25T20:50:13Z
+ HouseWorstCaseTempF
+ true
+ true
+ Integer
+ false
+ false
+ -7
+ rechp89wabr5kkqti
+ 19
+ -7
+ Integer
+
recmmOlM4okW6SVMc
2023-01-20T00:00:51Z
@@ -17821,7 +20629,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
recognized.temperature.unit.000
C
- 27
+ 33
F
UpperPython
String
@@ -17873,6 +20681,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
5
String
+
+ recnTZqJLAXkC0udQ
+ 2023-05-10T14:20:24Z
+ StartHourUtc
+ true
+ true
+ Integer
+ false
+ false
+ 0
+ recfDQscmquO0odpo
+ 26
+ 0
+ Integer
+
recnTfzYOvNX100On
2022-07-25T21:47:03Z
@@ -17923,7 +20746,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
distribution.tariff.000
Unknown
10
- VersantStorageHeatTariff
+ VersantA1StorageHeatTariff
UpperPython
String
DistributionTariff000
@@ -17959,14 +20782,14 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
70
recrZz3gmzl97POA1
- 25
+ 31
70
Integer
recnpE4pnmald9iTU
2023-01-16T18:56:50Z
- HeatpumpPowerKwTimes1000
+ HeatpumpPowerWatts
true
true
Integer
@@ -18013,11 +20836,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
egauge.io.000
- reco2D59kEGzC9zN3
- 2022-06-04T19:18:34Z
- CommsMethod
+ recnvahTKBIHt4BTW
+ 2023-06-28T21:45:38Z
+ FlatDistributionTariffDollarsPerMwh
+ true
true
- String
+ Integer
+ false
+ false
+ 113
+ rec2EA0TG0Xexi6wg
+ 31
+ 113
+ Integer
+
+
+ reco2D59kEGzC9zN3
+ 2022-06-04T19:18:34Z
+ CommsMethod
+ true
+ String
false
false
"I2C"
@@ -18061,6 +20899,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recoEOdUEOJ4NE1i8
+ 2023-05-01T22:07:30Z
+ FromGNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ reckQg9yTsSw2dxbh
+ 0
+ String
+ LeftRightDot
+
recoEvfq9uUKvxpmn
2022-11-09T23:00:19Z
@@ -18072,7 +20928,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
5.5
recrZz3gmzl97POA1
- 3
+ 9
5.5
Number
@@ -18095,6 +20951,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+ itrH5pB2a6NdIiiLf/recoF6VnyUxuQ4baG
recoPn9xJOxqb6ifT
2022-06-15T22:56:28Z
@@ -18124,6 +20981,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
AlgoAddressStringFormat
+
+ recodlPgpP4zsi9bk
+ 2023-06-28T14:34:47Z
+ Beta
+ true
+ true
+ Number
+ false
+ false
+ -1.5
+ recy7fqBm5Cl94dnF
+ 1
+ -1.5
+ Beta (units: W / deg F)
+ Number
+
recoduUdKygrSq0T5
2023-01-13T18:39:08Z
@@ -18190,6 +21063,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
recyD0ycgUiT7TiH2
+
+ recolYEYLubIlMTeX
+ 2023-05-10T14:40:38Z
+ false
+ false
+
recoyYXXZBRG1ipPM
2022-09-22T18:54:46Z
@@ -18218,6 +21097,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
70
Integer
+
+ recpAPAOQxog3tu7c
+ 2023-05-01T17:34:50Z
+ FloSlices
+ true
+ true
+ Integer
+ false
+ false
+ 48
+ recw5evm1WetKAzZG
+ The number of nodes for each storage level in the Dijstra graph.
+ 4
+ 48
+ Integer
+
recpCkNXWjHazXV05
2023-04-03T20:32:12Z
@@ -18283,13 +21178,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"53129448"
recqhQADHovWX1hOl
- spaceheat.make.model.000
+ spaceheat.make.model.001
UnknownMake__UnknownModel
1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
recpWqCT1ckZYKduk
@@ -18391,6 +21286,36 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Integer
+
+ recq321QPv8igpWPT
+ 2023-05-10T14:26:19Z
+ ROn
+ true
+ true
+ Number
+ false
+ false
+ 0.15
+ recfDQscmquO0odpo
+ 3
+ 0.15
+ Number
+
+
+ recq5rPWC2xxTWzj7
+ 2023-06-25T21:33:32Z
+ MaxStoreTempF
+ true
+ true
+ Integer
+ false
+ false
+ 210
+ rec2EA0TG0Xexi6wg
+ 11
+ 210
+ Integer
+
recqBM04MFQCAkFfy
2023-01-28T16:43:41Z
@@ -18420,6 +21345,43 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Integer
+
+ recqDBnMUrFKhR7xh
+ 2023-04-30T19:15:08Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ 'd1.isone.ver.keene.holly'
+ "a.b-h"
+ rec4yUxGiLZpqWQqb
+ 0
+ GNode Alias
+ String
+ LeftRightDot
+
+
+ recqEqS1dMXLaWYRD
+ 2023-05-10T14:34:31Z
+ FloParamsUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recvJ9OVpqVVP895H
+ 1
+ String
+ UuidCanonicalTextual
+
recqGEAWc6ioKwYCv
2022-06-16T12:06:21Z
@@ -18533,7 +21495,6 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Integer
- itrl5NjSxG6LGJS6d/recqbPC3JOFtb5oXx
recqk08O9ID51tC31
2023-01-28T16:43:01Z
@@ -18583,8 +21544,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
distribution.tariff.000
Unknown
- 10
- VersantStorageHeatTariff
+ 16
+ VersantA1StorageHeatTariff
UpperPython
String
DistributionTariff000
@@ -18688,6 +21649,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
String
+
+ recrUmUhuBYrY146C
+ 2023-05-10T14:26:17Z
+ ROff
+ true
+ true
+ Number
+ false
+ false
+ 0.08
+ recfDQscmquO0odpo
+ 2
+ 0.08
+ Number
+
recrX6PgQEW9ggu8q
2022-06-04T19:17:42Z
@@ -18700,13 +21676,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
"d0b0e375"
recmVKHF3ugtUOYrz
- spaceheat.make.model.000
+ spaceheat.make.model.001
UnknownMake__UnknownModel
1
Upper
String
- SpaceheatMakeModel000
- SpaceheatMakeModel000
+ SpaceheatMakeModel001
+ SpaceheatMakeModel001
recrcCzcDvZBxpI2C
@@ -18740,6 +21716,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Display Name
String
+
+ recrlszZe4JuLa5ZU
+ 2023-05-10T14:20:41Z
+ StartingStoreIdx
+ true
+ true
+ Integer
+ false
+ false
+ 50
+ recfDQscmquO0odpo
+ 28
+ 50
+ Integer
+
recrrGZ3RvMBzGjrP
2022-11-09T23:00:49Z
@@ -18753,7 +21744,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recrZz3gmzl97POA1
energy.supply.type.000
Unknown
- 13
+ 19
RealtimeLocalLmp
UpperPython
String
@@ -18790,10 +21781,25 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
20
recrZz3gmzl97POA1
- 6
+ 12
20
Integer
+
+ recsBD9IGwQ7NAy0K
+ 2023-05-10T14:38:20Z
+ StartMinuteUtc
+ true
+ true
+ Integer
+ false
+ false
+ 0
+ recvJ9OVpqVVP895H
+ 8
+ 0
+ Integer
+
recsEvybSpl9WN6Ny
2022-09-19T20:22:40Z
@@ -18830,6 +21836,23 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recsWscZyAT8lUvQG
+ 2023-05-01T17:34:47Z
+ StorageSteps
+ true
+ true
+ Integer
+ false
+ false
+ 100
+ recw5evm1WetKAzZG
+ The number of nodes in each TimeSlice for the Dijkstra graph.
+ 3
+ 100
+ Storage Steps
+ Integer
+
recsXoFOxudbW1SiS
2022-11-14T15:46:41Z
@@ -18951,6 +21974,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
ReasonableUnixTimeMs
+
+ rect2ta2gIzYqWAyr
+ 2023-05-10T14:39:55Z
+ GNodeInstanceId
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "97eba574-bd20-45b5-bf82-9ba2f492d8f6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recBqSlQdF17CgMPY
+ 1
+ String
+ UuidCanonicalTextual
+
rectEKipbDI8n6DBF
2023-01-16T17:18:25Z
@@ -19084,6 +22125,24 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rech8RtBLsLVe51DN
Integer
+
+ recuCxturGwYam9W0
+ 2023-05-10T14:19:59Z
+ RtElecPriceUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "bd2ec5c5-40b9-4b61-ad1b-4613370246d6"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recfDQscmquO0odpo
+ 18
+ String
+ UuidCanonicalTextual
+
recuEy4lhhe7MqUUN
2022-11-04T13:43:52Z
@@ -19114,7 +22173,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
false
190
recrZz3gmzl97POA1
- 1
+ 7
190
Integer
@@ -19138,6 +22197,39 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
ReasonableUnixTimeMs
+
+ recuK1w199LQQCRjs
+ 2023-05-10T14:20:19Z
+ StartMonthUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ recfDQscmquO0odpo
+ 24
+ 1
+ Integer
+
+
+ recuKvC5D4tUOKCIH
+ 2023-05-10T14:20:02Z
+ WeatherUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "3bbcb552-52e3-4b86-84e0-084959f9fc0f"
+ "d4be12d5-33ba-4f1f-b9e5"
+ recfDQscmquO0odpo
+ 20
+ String
+ UuidCanonicalTextual
+
recuSkupIk5cS8BGw
2023-03-25T23:00:36Z
@@ -19194,6 +22286,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
5
Integer
+
+ recufHL4WVjMqEiI8
+ 2023-06-25T20:54:58Z
+ StoreSizeGallons
+ true
+ true
+ Integer
+ false
+ false
+ 240
+ rechp89wabr5kkqti
+ 11
+ 240
+ Integer
+
recunD4ijwQh302Oo
2022-11-29T13:57:42Z
@@ -19310,12 +22417,45 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
LeftRightDot
https://gridworks.readthedocs.io/en/latest/atomic-t-node.html
+
+ recvKQH8VYCXnFhS9
+ 2023-05-10T14:26:15Z
+ C
+ true
+ true
+ Number
+ false
+ false
+ 200
+ recfDQscmquO0odpo
+ 14
+ 200
+ Number
+
recvYOPJ5xN3hequZ
2022-09-19T18:26:44Z
false
false
+
+ recvYmJjkD1Dzzbqk
+ 2023-06-25T21:32:32Z
+ DistPriceUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "b91ef8e7-50d7-4587-bf13-a3af7ecdb83a"
+ "d4be12d5-33ba-4f1f-b9e5"
+ rec2EA0TG0Xexi6wg
+ 25
+ String
+ UuidCanonicalTextual
+
recvaw2vy5mebzESQ
2023-01-08T10:21:14Z
@@ -19333,14 +22473,29 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
- recvq0MygOUulKFdl
- 2022-11-17T01:55:36Z
- GNodeAlias
+ recvo0jJIrIDDr23i
+ 2023-05-01T17:36:11Z
+ RatedMaxPowerKw
true
true
- String
- recb9fI4kRkTYXDzA
- LeftRightDot
+ Number
+ false
+ false
+ 13.5
+ recw5evm1WetKAzZG
+ 12
+ 13.5
+ Number
+
+
+ recvq0MygOUulKFdl
+ 2022-11-17T01:55:36Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
false
false
"d1.isone.ver.keene"
@@ -19384,6 +22539,22 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Integer
ShortInteger
+
+ recw8d5Trh6AeoLYJ
+ 2023-06-25T20:56:50Z
+ MaxStoreTempF
+ true
+ true
+ Integer
+ false
+ false
+ 210
+ rechp89wabr5kkqti
+ 12
+ 210
+ Integer
+
+ itrH5pB2a6NdIiiLf/recw8d5Trh6AeoLYJ
recwBj4KUuccY6gSN
2023-03-13T18:13:53Z
@@ -19414,6 +22585,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
market.type.gt.000
+
+ recwO34MxjMi4xVbh
+ 2023-05-01T17:38:53Z
+ CurrencyUnit
+ true
+ recA15Ak50x6bNMx1
+ recognized.currency.unit
+ true
+ false
+ "e57c5143"
+ recw5evm1WetKAzZG
+ recognized.currency.unit.000
+ Unknown
+ 6
+ USD
+ Upper
+ String
+ RecognizedCurrencyUnit000
+ RecognizedCurrencyUnit000
+
recwP7nYNSdWeR3vj
2022-07-25T22:45:11Z
@@ -19436,7 +22627,7 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1577836800
32503683600
rec3fLb6b0gIeuCTO
- 2
+ 3
Integer
ReasonableUnixTimeS
@@ -19455,6 +22646,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
160
Integer
+
+ recwhLk9ftqihZPiS
+ 2023-06-25T21:02:44Z
+ false
+ false
+
recwkvcQFhhOMDyO4
2023-01-28T00:17:46Z
@@ -19468,6 +22665,52 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
7
String
+
+ recwlNYE7g30gSHqZ
+ 2023-04-30T19:15:34Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ rec4yUxGiLZpqWQqb
+ 2
+ "US/Eastern"
+ Timezone String
+ String
+
+
+ recwqncn6q1JvTx8C
+ 2023-05-10T14:19:32Z
+ IsRegulating
+ true
+ true
+ Boolean
+ false
+ false
+ False
+ recfDQscmquO0odpo
+ 10
+ False
+ Boolean
+
+
+ recwxuYDEnWFeLJKI
+ 2023-06-25T21:33:40Z
+ CirculatorPumpGpm
+ true
+ true
+ Number
+ false
+ false
+ 4.5
+ rec2EA0TG0Xexi6wg
+ 14
+ 4.5
+ Number
+
recx4xJLSgpMi1EVN
2022-11-06T20:03:58Z
@@ -19487,12 +22730,45 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
UuidCanonicalTextual
+
+ recx6o26hYbiat65H
+ 2023-06-25T21:26:12Z
+ StartMonthUtc
+ true
+ true
+ Integer
+ false
+ false
+ 1
+ rec2EA0TG0Xexi6wg
+ 5
+ 1
+ Integer
+
recxFMsRV9Rt4zgqr
2023-01-27T19:41:27Z
false
false
+
+ recxJmpDJWx6LnEzW
+ 2023-05-10T14:32:00Z
+ GNodeAlias
+ true
+ true
+ String
+ recb9fI4kRkTYXDzA
+ LeftRightDot
+ false
+ false
+ "d1.isone.ver.keene.holly"
+ "a.b-h"
+ reczzIn3wGYrEKtbr
+ 51
+ String
+ LeftRightDot
+
recxO0tKJ0Wp8B3pW
2023-01-16T17:19:18Z
@@ -19581,23 +22857,23 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recy6wm0IgQI90zHG
2022-11-09T23:00:59Z
- EmitterPumpFeedbackModel
+ DistPumpFeedbackModel
true
rec57bh9xoIxLUHjY
- emitter.pump.feedback.model
+ sh.dist.pump.feedback.model
true
false
"00000000"
recrZz3gmzl97POA1
- emitter.pump.feedback.model.000
+ sh.dist.pump.feedback.model.000
ConstantDeltaT
- 21
+ 27
ConstantDeltaT
UpperPython
pump.model
String
- EmitterPumpFeedbackModel000
- EmitterPumpFeedbackModel000
+ ShDistPumpFeedbackModel000
+ ShDistPumpFeedbackModel000
recyJ0doKEDyZtmpE
@@ -19627,6 +22903,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec944QikN18Rdopu
Integer
+
+ recyaa7Sje4vX7qsj
+ 2023-06-25T20:50:04Z
+ AnnualHvacKwhTh
+ true
+ true
+ Integer
+ false
+ false
+ 25000
+ rechp89wabr5kkqti
+ 17
+ 25000
+ Integer
+
recydLuwKpW0ptMyj
2022-06-24T20:28:45Z
@@ -19656,20 +22947,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
MixingValveFeedbackModel
true
recX0A9nSriRUvl9n
- mixing.valve.feedback.model
+ sh.mixing.valve.feedback.model
true
false
"0397c1df"
recrZz3gmzl97POA1
- mixing.valve.feedback.model.000
+ sh.mixing.valve.feedback.model.000
ConstantSwt
- 22
+ 28
NaiveVariableSwt
UpperPython
mixing.valve.model
String
- MixingValveFeedbackModel000
- MixingValveFeedbackModel000
+ ShMixingValveFeedbackModel000
+ ShMixingValveFeedbackModel000
recyprhpuu5W0nemB
@@ -19699,6 +22990,12 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recauOuVBqhRdNWcN
Integer
+
+ recyuhzWSiYjj8t1x
+ 2023-05-01T17:45:08Z
+ false
+ false
+
recyvC2QcCmnStivi
2022-10-02T23:38:37Z
@@ -19814,6 +23111,42 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
String
LeftRightDot
+
+ reczco2IoqBeaLSg9
+ 2023-05-01T22:08:28Z
+ FromGNodeInstanceId
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ 'c0cd37c4-d4ae-46d7-baff-af705ea6871a'
+ "d4be12d5-33ba-4f1f-b9e5"
+ reckQg9yTsSw2dxbh
+ 1
+ String
+ UuidCanonicalTextual
+
+
+ reczdvUXsC5uzxqIB
+ 2023-06-25T21:32:16Z
+ WeatherUid
+ true
+ true
+ String
+ rec24qjC90m0f4Kvl
+ UuidCanonicalTextual
+ false
+ false
+ "3bbcb552-52e3-4b86-84e0-084959f9fc0f"
+ "d4be12d5-33ba-4f1f-b9e5"
+ rec2EA0TG0Xexi6wg
+ 26
+ String
+ UuidCanonicalTextual
+
reczfNmiB9hWAkSsY
2022-07-05T11:33:06Z
@@ -19859,6 +23192,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
String
+
+ reczyYbX7MCDw4qpM
+ 2023-05-10T14:37:35Z
+ TimezoneString
+ true
+ true
+ String
+ false
+ false
+ "US/Eastern"
+ recvJ9OVpqVVP895H
+ 3
+ "US/Eastern"
+ String
+
@@ -19868,18 +23216,18 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Egauge4030 consistency
recxdlQ6gCN8mD39r
- electric.meter.component.gt.000 Type Axiom 2
electric.meter.component.gt.000
+ electric.meter.component.gt.000 Type Axiom 2
rec1osS0C34lxMFkC
2022-10-02T23:42:28Z
If GpsPointId is not None, then there is a GpsPoint in the GNodeFactory with that GpsPointId
- true
- recDp8U1jLA9zeEx2
2
- true
+ recDp8U1jLA9zeEx2
true
+ true
+ true
Joint Axiom 2
true
@@ -19903,8 +23251,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec2tMERYL2Mdnty3
2022-10-02T23:42:37Z
Assume role is TerminalAsset and status is Active. Then the OwnershipDeedNftId must exist, and must be owned by the 2-sig [GnfAdmin, smart_daemon_addr, owner_addr] multi
- recDp8U1jLA9zeEx2
4
+ recDp8U1jLA9zeEx2
Type Axiom 4
true
@@ -19915,8 +23263,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
0
ScadaCert matches FromGNodeAlias
recBEBBA0ctnOYQnC
- join.dispatch.contract.000 Type Axiom 0
join.dispatch.contract.000
+ join.dispatch.contract.000 Type Axiom 0
rec3XryMcqFFAbgHY
@@ -19926,9 +23274,9 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- Active can only change to Suspended or PermanentlyDeactivated
- Suspended can only change to Active or PermanentlyDeactivated
- PermanentlyDeactivated cannot change.
- true
- recDp8U1jLA9zeEx2
3
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 3
true
@@ -19937,11 +23285,11 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec3dplhqy7h95uAR
2022-10-02T23:42:26Z
There is at most one root GNode.
- true
- recDp8U1jLA9zeEx2
1
- true
+ recDp8U1jLA9zeEx2
true
+ true
+ true
Joint Axiom 1
true
@@ -19957,32 +23305,32 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- If role is Ctn or MarketMaker, the parent must be a root, or have either role Ctn or MarketMaker.
- If the role is AtomicMeausurementNode or AtomicTNode, the parent must be either Ctn or MarketMaker.
- If the role is TerminalAsset, the parent must be either AtomicMeasurementNode or AtomicTNode
- recDp8U1jLA9zeEx2
5
- true
+ recDp8U1jLA9zeEx2
true
+ true
Creation Axiom 5
true
rec41IGqMHOcsZEXl
2022-09-22T04:46:38Z
- true
- https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
Decoded HalfSignedDeedCreationMtx must have type MultisigTransaction from the
2-sig MultiAccount [GnfAdminAddr, ValidatorAddr].
1
Is correct Multisig
recO8OdobcISYms0B
- initial.tadeed.algo.create.000 Type Axiom 1
+ https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
+ true
initial.tadeed.algo.create.000
+ initial.tadeed.algo.create.000 Type Axiom 1
rec4oleeZwPh0Ng0M
2022-09-22T01:27:45Z
Decoded OldDeedTransferMtx must have type transaction.MultisigTransaction
- recXCK8GTrT3hnfKX
1
+ recXCK8GTrT3hnfKX
Type Axiom 1
@@ -19993,8 +23341,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
PqPairs PriceMax matches MarketType
recECSz5o4Z7NFjhG
- atn.bid.001 Type Axiom 1
atn.bid.001
+ atn.bid.001 Type Axiom 1
rec52F9XVqpe5t6Cp
@@ -20005,8 +23353,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec5VDuzpUgfcEkJx
2022-09-22T14:04:02Z
The MultiSig must belong to the 2-sig Multi [Gnf Admin, payload.DeedValidatorAddr]
- rech8RtBLsLVe51DN
3
+ rech8RtBLsLVe51DN
Type Axiom 3
@@ -20014,10 +23362,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rec7CRy4NcfIww7pH
2022-09-27T15:48:08Z
If GpsPointId is not None, then there is a GpsPoint in the GNodeFactory with that GpsPointId
- true
3
- true
true
+ true
+ true
Joint Axiom 3
@@ -20025,8 +23373,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2022-09-27T14:43:19Z
Alias cannot be used, now or previously, by this or other BaseGNodes
1
- true
true
+ true
Creation Axiom 1
@@ -20035,8 +23383,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
If AsyncReportThreshold exists, so does NameplateMaxValue
recDEr7ob2KLqM4gU
- telemetry.reporting.config.000 Type Axiom 1
telemetry.reporting.config.000
+ telemetry.reporting.config.000 Type Axiom 1
rec9JAVtjVuxToq7k
@@ -20063,8 +23411,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recAV3jdy4xK2e6V4
2022-09-22T02:46:27Z
Decoded FirstDeedTransferMtx must have type MultisigTransaction
- rech8RtBLsLVe51DN
1
+ rech8RtBLsLVe51DN
Type Axiom 1
@@ -20075,16 +23423,16 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
InPowerMetering requirements
reccsu6ZeZHKoDqDy
- spaceheat.node.gt.101 Type Axiom 1
spaceheat.node.gt.101
+ spaceheat.node.gt.101 Type Axiom 1
recAZ1Zsq5mzNmXks
2022-10-02T23:42:31Z
The following attributes must exist: GNodeId, Alias, StatusValue, RoleValue, GNodeRegistryAddr
- recDp8U1jLA9zeEx2
1
+ recDp8U1jLA9zeEx2
Type Axiom 1
true
@@ -20092,10 +23440,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recBJRHgd3WPVUvQw
2022-10-02T23:42:14Z
Alias cannot be used, now or previously, by this or other BaseGNodes
- recDp8U1jLA9zeEx2
1
- true
+ recDp8U1jLA9zeEx2
true
+ true
Creation Axiom 1
true
@@ -20103,8 +23451,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recBWcnuqdt9wzynI
2022-11-03T19:00:14Z
Decoded SignedTaDeedCreationTxn must have type AssetConfigTransaction
- recvWBuo1Ws1SIL4b
1
+ recvWBuo1Ws1SIL4b
AssetConfigTransaction
Type Axiom 1
@@ -20112,7 +23460,6 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recCHkLILWYGN7rjn
2022-09-22T04:46:35Z
- https://gridworks.readthedocs.io/en/latest/ta-deed.html#asa-tadeed-specs
The transaction must create an Algorand Standard Asset
- Total is 1
- UnitName is TADEED
@@ -20124,13 +23471,13 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Creates Initial ASA TaDeed
recO8OdobcISYms0B
- initial.tadeed.algo.create.000 Type Axiom 2
+ https://gridworks.readthedocs.io/en/latest/ta-deed.html#asa-tadeed-specs
initial.tadeed.algo.create.000
+ initial.tadeed.algo.create.000 Type Axiom 2
recDXr4RoTH1jDsXd
2022-09-22T03:48:48Z
- https://gridworks.readthedocs.io/en/latest/ta-validator.html#tavalidator-certificate
- The transaction must be the transfer of an Algorand Standard Asset
-The sender must be the 2-sig Multi [GnfAdminAddr, TaValidatorAddr], which also created and owns the ASA
- It must be getting sent to the ValidatorAddr
@@ -20143,8 +23490,9 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
Transfers correct certificate
rec1SFXYQUXElpeJ9
- tavalidatorcert.algo.transfer.000 Type Axiom 2
+ https://gridworks.readthedocs.io/en/latest/ta-validator.html#tavalidator-certificate
tavalidatorcert.algo.transfer.000
+ tavalidatorcert.algo.transfer.000 Type Axiom 2
recDox3OhEiNyIdlK
@@ -20163,26 +23511,26 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recEDIu6H6gEbyn4v
2022-09-22T06:13:13Z
- recrD0Mo96XS8itFz
There must not already be a TaValidatorCert belonging to the 2-sig [GnfAdminAddr, ValidatorAddr] address.
5
Uniqueness
- tavalidatorcert.algo.create.000 Type Axiom 5
+ recrD0Mo96XS8itFz
reccFZLsGTVhuzGsn
tavalidatorcert.algo.create.000
+ tavalidatorcert.algo.create.000 Type Axiom 5
recEXGRVitjMKiPmR
2022-09-22T03:05:04Z
- reclWEqctUrS5WXwG
- https://gridworks.readthedocs.io/en/latest/ta-validator.html#tavalidator-certificate
For the asset getting created: Total is 1, Decimals is 0, UnitName is VLDTR, Manager is GnfAdminAddr,
AssetName is not blank.
3
Is ValidatorCert
- tavalidatorcert.algo.create.000 Type Axiom 3
+ reclWEqctUrS5WXwG
+ https://gridworks.readthedocs.io/en/latest/ta-validator.html#tavalidator-certificate
reccFZLsGTVhuzGsn
tavalidatorcert.algo.create.000
+ tavalidatorcert.algo.create.000 Type Axiom 3
recEnG4y5Q19QVq6H
@@ -20191,8 +23539,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
ListLengthConsistency
rec93KBYcwiqJ6OQy
- gt.sh.telemetry.from.multipurpose.sensor.100 Type Axiom 1
gt.sh.telemetry.from.multipurpose.sensor.100
+ gt.sh.telemetry.from.multipurpose.sensor.100 Type Axiom 1
recFW8IwNBix7ZGw5
@@ -20201,28 +23549,28 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Modbus consistency
recxdlQ6gCN8mD39r
- electric.meter.component.gt.000 Type Axiom 1
electric.meter.component.gt.000
+ electric.meter.component.gt.000 Type Axiom 1
recH512a7g6p8cLQM
2022-09-22T01:30:26Z
total must be 1, unit name must be TADEED, manager must be Gnf Admin or Gnf Graveyard
- recXCK8GTrT3hnfKX
3
+ recXCK8GTrT3hnfKX
Type Axiom 3
recHWe9Q4itm5lWv2
2023-01-11T20:31:19Z
- true
Decoded SignedInitialDaemonFundingTxn must be a SignedTransaction signed by TaOwnerAddr.
1
Is correct Multisig
recAWKkS0hcyws7O6
- initial.tadeed.algo.optin.002 Type Axiom 1
+ true
initial.tadeed.algo.optin.002
+ initial.tadeed.algo.optin.002 Type Axiom 1
recISoW81cXDnqgJt
@@ -20248,8 +23596,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- OwnerAddr must be a string of format AlgoAddressStringFormat
- DaemonAddr must be a string of format AlgoAddressStringFormat
- TradingRightsNftId must be an integer
- recDp8U1jLA9zeEx2
2
+ recDp8U1jLA9zeEx2
Type Axiom 2
true
@@ -20258,8 +23606,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2022-09-27T15:47:53Z
GNodeId must be a unique string of UUID format
2
- true
true
+ true
Creation Axiom 2
@@ -20268,30 +23616,30 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Assume OwnershipDeedNftId exists and role is TerminalAsset.
The Nft must be for a Valid TaDeed created by the 2-sig [GnfAdmin, ownership_deed_validator_addr]
multi whose asset_name is this GNodeAlias.
- recDp8U1jLA9zeEx2
3
+ recDp8U1jLA9zeEx2
Type Axiom 3
true
recKmoKIL8lpLdK2U
2022-09-22T03:48:56Z
- true
- https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
Decoded HalfSignedCertTransferMtx must have type MultisigTransaction from the
2-sig MultiAccount [GnfAdminAddr, ValidatorAddr], signed by the ValidatorAddr
1
Is correct Multisig
rec1SFXYQUXElpeJ9
- tavalidatorcert.algo.transfer.000 Type Axiom 1
+ https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
+ true
tavalidatorcert.algo.transfer.000
+ tavalidatorcert.algo.transfer.000 Type Axiom 1
recLImSRvyPbLliuE
2022-11-03T18:37:06Z
NewDeedIdx is an active TaDeed created and owned by GnfAdminAccount
- recvWBuo1Ws1SIL4b
2
+ recvWBuo1Ws1SIL4b
Valid TaDeed
Type Axiom 2
@@ -20299,15 +23647,15 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recLRRgeFOdFakOzR
2023-01-11T22:03:21Z
- true
- https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
Decoded FirstDeedTransferMtx must have type MultisigTransaction from the
2-sig MultiAccount [GnfAdminAddr, ValidatorAddr].
1
Is correct Multisig
recPf7eAhpge7kvO7
- initial.tadeed.algo.transfer.000 Type Axiom 1
+ https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
+ true
initial.tadeed.algo.transfer.000
+ initial.tadeed.algo.transfer.000 Type Axiom 1
recMYPnr592PEzOi7
@@ -20317,8 +23665,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Cert type consistency
rectayh08KEGGGcZc
- gw.cert.id.000 Type Axiom 1
gw.cert.id.000
+ gw.cert.id.000 Type Axiom 1
recN1T4RyJw2VMsOW
@@ -20332,10 +23680,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recNXTuKhV6lGeDjv
2022-10-03T01:59:48Z
On creation, PrevAlias is None
- recDp8U1jLA9zeEx2
4
- true
+ recDp8U1jLA9zeEx2
true
+ true
Creation Axiom 4
true
@@ -20348,8 +23696,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recOyMaXAxwASJw4J
2022-09-22T02:51:31Z
The Mtx must be signed by the DeedValidatorAddr
- rech8RtBLsLVe51DN
7
+ rech8RtBLsLVe51DN
Type Axiom 7
@@ -20357,8 +23705,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recP9v8cvgHgbDnpZ
2022-09-22T02:54:38Z
The asset must be created and owned by the 2-sig [Gnf Admin, payload.DeedValidator] multi account
- rech8RtBLsLVe51DN
4
+ rech8RtBLsLVe51DN
Type Axiom 4
@@ -20367,8 +23715,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2023-01-15T13:05:45Z
2
recECSz5o4Z7NFjhG
- atn.bid.001 Type Axiom 2
atn.bid.001
+ atn.bid.001 Type Axiom 2
recQUUMz6KxDUEjWi
@@ -20378,15 +23726,15 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
2
TaDeed consistency
recAWKkS0hcyws7O6
- initial.tadeed.algo.optin.002 Type Axiom 2
initial.tadeed.algo.optin.002
+ initial.tadeed.algo.optin.002 Type Axiom 2
recQn6ib10Nqp94i8
2022-11-03T18:59:36Z
TaDaemonAddr owns exactly 1 TaDeed. The creator of this old TaDeed is either the GnfAdminAccount or the ValidatorMulti 2-sig [GnfAdminAccount, ValidatorAddr]. The asset index of the old TaDeed is less than the asset index of the new TaDeed. Finally, if the creator of the old TaDeed is the GnfAdminAccount, then the TaDaemonAddr is opted into (but does not own) exactly one TaDeed created by the ValidatorMulti account and owned by the GnfAdminAccount.
- recvWBuo1Ws1SIL4b
3
+ recvWBuo1Ws1SIL4b
Old TaDeed check
Type Axiom 3
@@ -20398,21 +23746,21 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
ListLengthConsistency
receGKnJ8CfemQLdQ
- gt.sh.multipurpose.telemetry.status.100 Type Axiom 1
gt.sh.multipurpose.telemetry.status.100
+ gt.sh.multipurpose.telemetry.status.100 Type Axiom 1
recSkcGAjBCP4uFPX
2022-09-22T03:04:49Z
- true
- https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
Decoded HalfSignedCertCreationMtx must have type MultisigTransaction from the
2-sig MultiAccount [GnfAdminAddr, ValidatorAddr], signed by ValidatorAddr.
1
Is correct Multisig
reccFZLsGTVhuzGsn
- tavalidatorcert.algo.create.000 Type Axiom 1
+ https://gridworks.readthedocs.io/en/latest/g-node-factory.html#gnfadminaddr
+ true
tavalidatorcert.algo.create.000
+ tavalidatorcert.algo.create.000 Type Axiom 1
recTQN80nxhBGq1of
@@ -20422,8 +23770,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- Active can only change to Suspended or PermanentlyDeactivated
- Suspended can only change to Active or PermanentlyDeactivated
- PermanentlyDeactivated cannot change.
- true
2
+ true
true
Update Axiom 2
@@ -20439,9 +23787,9 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
- If role is Ctn or MarketMaker, the parent must be a root, or have either role Ctn or MarketMaker.
- If the role is AtomicMeausurementNode or AtomicTNode, the parent must be either Ctn or MarketMaker.
- If the role is TerminalAsset, the parent must be either AtomicMeasurementNode or AtomicTNode
- true
- recDp8U1jLA9zeEx2
4
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 4
true
@@ -20454,8 +23802,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
Scada is SignedProof signer
recbrp6V9qD6J1NHb
- scada.cert.transfer.000 Type Axiom 1
scada.cert.transfer.000
+ scada.cert.transfer.000 Type Axiom 1
recXMf6hlVg265ccL
@@ -20464,8 +23812,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
ListLengthConsistency
rec8c4KjhwNmfrRYP
- gt.sh.simple.telemetry.status.100 Type Axiom 1
gt.sh.simple.telemetry.status.100
+ gt.sh.simple.telemetry.status.100 Type Axiom 1
recY7qq8BPIydsNm8
@@ -20477,8 +23825,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recYBKWxHw8Q6obsQ
2022-09-22T01:57:54Z
The asset name must have valid GNodeAlias format, with the world_alias (first
- recXCK8GTrT3hnfKX
5
+ recXCK8GTrT3hnfKX
Type Axiom 5
@@ -20486,10 +23834,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recYBcjALeSkC3DmL
2022-10-03T01:58:39Z
On creation, Status is Pending
- recDp8U1jLA9zeEx2
3
- true
+ recDp8U1jLA9zeEx2
true
+ true
Creation Axiom 3
true
@@ -20510,10 +23858,10 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reca1Y8LeKit4sVLu
2022-09-27T15:48:05Z
There is at most one root GNode.
- true
2
- true
true
+ true
+ true
Joint Axiom 2
@@ -20528,15 +23876,15 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
Mtx signed by TaValidator
recO8OdobcISYms0B
- initial.tadeed.algo.create.000 Type Axiom 3
initial.tadeed.algo.create.000
+ initial.tadeed.algo.create.000 Type Axiom 3
recdfhrc7m3cOTO3V
2022-09-22T01:41:16Z
word of asset name matching the universe (e.g. dev universe -> world starts with `d
- recXCK8GTrT3hnfKX
6
+ recXCK8GTrT3hnfKX
Type Axiom 6
@@ -20549,9 +23897,9 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recehciOce1BjWYzY
2022-10-03T03:53:49Z
If alias has changed, then new prev_alias must equal original alias prior to the change. If alias has NOT changed then new prev_alias must equal original prev_alias.
- true
- recDp8U1jLA9zeEx2
6
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 6
true
@@ -20565,8 +23913,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recgkttJLsyUmqLlp
2022-09-22T02:46:32Z
The FirstDeedTransferMtx.txn must have type AssetTransferTxn
- rech8RtBLsLVe51DN
2
+ rech8RtBLsLVe51DN
Type Axiom 2
@@ -20574,8 +23922,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
recgr767PF8P1X06i
2022-09-22T05:33:48Z
The 2-sig [Gnf Admin, TaDaemonAddr, TaOwnerAddr] account has opted in to the Deed and has enough funding (TaDeed Consideration Algos, publicly set by the Gnf)
- rech8RtBLsLVe51DN
5
+ rech8RtBLsLVe51DN
Type Axiom 5
@@ -20586,16 +23934,16 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
3
TaValidator has opted in
rec1SFXYQUXElpeJ9
- tavalidatorcert.algo.transfer.000 Type Axiom 3
tavalidatorcert.algo.transfer.000
+ tavalidatorcert.algo.transfer.000 Type Axiom 3
rechF4eml8urlVmxU
2022-10-02T23:42:40Z
Alias cannot be used, now or previously, by this or other BaseGNodes
- true
- recDp8U1jLA9zeEx2
1
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 1
true
@@ -20604,8 +23952,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
rechGHjDdnbThfv1R
2022-11-03T18:59:50Z
SignedTaDeedCreationTxn must be signed by Gnf Admin, and the signature must match the txn.
- recvWBuo1Ws1SIL4b
4
+ recvWBuo1Ws1SIL4b
Correctly Signed
Type Axiom 4
@@ -20617,20 +23965,20 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
1
ListLengthConsistency
recdNEAMkZeOLS8Vo
- telemetry.snapshot.spaceheat.000 Type Axiom 1
telemetry.snapshot.spaceheat.000
+ telemetry.snapshot.spaceheat.000 Type Axiom 1
recj13iYXBkX5UZr3
2022-09-22T03:48:19Z
- recBje3quNXHrsP6j
MultiAccount [GnfAdminAddr, ValidatorAddr] must have enough Algos to meet
the GNodeFactory criterion.
4
TaValidator has sufficient Algos
- tavalidatorcert.algo.transfer.000 Type Axiom 4
+ recBje3quNXHrsP6j
rec1SFXYQUXElpeJ9
tavalidatorcert.algo.transfer.000
+ tavalidatorcert.algo.transfer.000 Type Axiom 4
recjrbpPTEVatFS5z
@@ -20653,8 +24001,8 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
reckfbX3EePBsFCIV
2022-09-22T02:04:28Z
The OldDeedTransferMtx.txn must have type transaction.AssetTransferTxn
- recXCK8GTrT3hnfKX
2
+ recXCK8GTrT3hnfKX
Type Axiom 2
@@ -20664,9 +24012,9 @@ CHANGE to TOPOLOGY Axiom (Joint Axiom 1)
Role update rules. TerminalAsset, InterconnectionComponent, and Other cannot change roles.
ConductorTopologyNode can turn into MarketMaker and vice versa.
AtomicMeteringNode can turn into AtomicTNode and vice versa
- true
- recDp8U1jLA9zeEx2
5
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 5
true
@@ -20681,8 +24029,8 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recmQsc2HRItZ3oL1
2022-09-27T15:48:31Z
Alias cannot be used, now or previously, by this or other BaseGNodes
- true
1
+ true
true
Update Axiom 1
@@ -20699,8 +24047,8 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2
TaDaemon funded by TaOwner
recPf7eAhpge7kvO7
- initial.tadeed.algo.transfer.000 Type Axiom 2
initial.tadeed.algo.transfer.000
+ initial.tadeed.algo.transfer.000 Type Axiom 2
recstTBCe9nhA6pgn
@@ -20723,10 +24071,10 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rectEwF6ZLLRopleW
2022-10-02T23:42:17Z
GNodeId must be a unique string of UUID format
- recDp8U1jLA9zeEx2
2
- true
+ recDp8U1jLA9zeEx2
true
+ true
Creation Axiom 2
true
@@ -20734,8 +24082,8 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rectREWSiFBVSQoOq
2022-09-22T05:33:39Z
The 2-sig [Gnf Admin, TaDaemonAddr, TaOwnerAddr] must not own any assets (specifically because this is the FIRST tadeed and should initialize the multi.
- rech8RtBLsLVe51DN
6
+ rech8RtBLsLVe51DN
Type Axiom 6
@@ -20753,19 +24101,19 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
- If role is Ctn or MarketMaker, the parent must be a root, or have either role Ctn or MarketMaker.
- If the role is AtomicMeausurementNode or AtomicTNode, the parent must be either Ctn or MarketMaker.
- If the role is TerminalAsset, the parent must be either AtomicMeasurementNode or AtomicTNode
- true
1
- true
true
+ true
+ true
Joint Axiom 1
recueNLsroZPIyXPm
2022-10-03T02:44:45Z
g_node_id is Immutable
- true
- recDp8U1jLA9zeEx2
2
+ recDp8U1jLA9zeEx2
+ true
true
base.g.node.gt.002 Update Axiom 2
true
@@ -20777,28 +24125,38 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2
TaAlias matches TaDeed
recF9KonH58AltK0K
- basegnode.scada.create.000 Type Axiom 2
basegnode.scada.create.000
+ basegnode.scada.create.000 Type Axiom 2
recwsWtIgu909pJm1
2022-09-22T01:27:09Z
The asset-index of the new deed must be greater than the asset-index of the old deed
- recXCK8GTrT3hnfKX
4
+ recXCK8GTrT3hnfKX
Type Axiom 4
+
+ recy2Ozo32rIJuZcl
+ 2023-04-29T21:18:59Z
+ AtnParams must have
+ 1
+ AtnParamsTypeName matches AtnParams
+ rec3kcgktiHCBYpA4
+ dispatch.contract.confirmed.000
+ dispatch.contract.confirmed.000 Type Axiom 1
+
recyO8wUTKZpFsCtt
2022-09-22T03:04:54Z
- reclWEqctUrS5WXwG
The transaction must have type AssetConfigTxn.
2
Is AssetConfigTxn
- tavalidatorcert.algo.create.000 Type Axiom 2
+ reclWEqctUrS5WXwG
reccFZLsGTVhuzGsn
tavalidatorcert.algo.create.000
+ tavalidatorcert.algo.create.000 Type Axiom 2
recytsVdwKmDj3uOJ
@@ -20818,15 +24176,15 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
1
TaOwner is SignedProof signer
recF9KonH58AltK0K
- basegnode.scada.create.000 Type Axiom 1
basegnode.scada.create.000
+ basegnode.scada.create.000 Type Axiom 1
rec13dujLuXXSf5L3
2022-06-20T13:19:41Z
- 32503683600
+ ReasonableUnixTimeS
Integer reflecting unix time seconds between 1970 and 3000
reccl6zfh9EN32iFD
recABBs8u89Tj3Iu2
@@ -20835,26 +24193,29 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
receaI7kIGQr97TD5
recC2OJXewZyxgy8T
recUWwce377A33dZw
+ recDvDUWKt6hxy1l9
+ recNy04v6VC70hH8c
+ 32503683600
recV0KuDFayH4qGIl
rec7peRuDqMNa0vlW
rec3fLb6b0gIeuCTO
recLufl9jSdsMGsFR
recNbXbJE9rcnLXAs
- ReasonableUnixTimeS
+ recBqSlQdF17CgMPY
rec1S1Qh6ReE9UJxT
2022-08-18T16:26:50Z
+ WorldInstanceNameFormat
AlphanumericString + '__' + Integer
recTVpMk0yoQ95CTi
recN8W5RcjCrg3Z3Y
reczVqlxJInFWonml
- WorldInstanceNameFormat
rec24qjC90m0f4Kvl
2022-05-12T01:55:33Z
- "d4be12d5-33ba-4f1f-b9e5"
+ UuidCanonicalTextual
A string of hex words separated by hyphens of length 8-4-4-4-12.
recn2CJw74mLLQ8tr
recD4VpikwJAaTf0c
@@ -20895,7 +24256,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rechDjfq6buysCo5K
recDK3v8t65JbIgGo
recWvVApidAuVFsAP
- recBYlRmPwCbVbTMn
rec6tXwpa0rqEikXW
recM33kM7FUIUQYie
recrKX7TavoFqODYc
@@ -20910,7 +24270,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recee7OczpcTACTcR
recnbtuaL96kZW7Sn
recHNfUgwXIvrBwWK
- recXfOCZByFlChQxR
rec88fKL08R9C0d0I
recSy6tRXV5XRsb7i
rechuNHy6Cnk00Ynu
@@ -20928,6 +24287,22 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rec82deD90t24PRHB
recLO20AZmUda0yof
recE7gfNAh0QZrQT6
+ recA6xaBWKtDeVbZs
+ reczco2IoqBeaLSg9
+ recuCxturGwYam9W0
+ recuKvC5D4tUOKCIH
+ rec8ybKjyg4p5PQBZ
+ rec30du75CvosnjIj
+ rec12ghZsHZYMDdQG
+ recqEqS1dMXLaWYRD
+ recCMMvdApuru0zxY
+ rect2ta2gIzYqWAyr
+ recaSQiyOGuk96R75
+ receQEqkX185ZTnZn
+ reczdvUXsC5uzxqIB
+ recvYmJjkD1Dzzbqk
+ "d4be12d5-33ba-4f1f-b9e5"
+ 652ba6b0-c3bf-4f06-8a80-6b9832d60a25
recc2Km1jUViJqVeK
rec8uTC7GK5qgXzg9
reczVqlxJInFWonml
@@ -20952,7 +24327,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recTZ13dEbwrKazkL
reckTci9LVdsEt2WQ
recECSz5o4Z7NFjhG
- rec9kYNek59Vqps4S
recBEBBA0ctnOYQnC
rec3kcgktiHCBYpA4
recNbXbJE9rcnLXAs
@@ -20977,17 +24351,22 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recxdlQ6gCN8mD39r
reccsu6ZeZHKoDqDy
recRzt4GyUgwjJy3l
- 652ba6b0-c3bf-4f06-8a80-6b9832d60a25
- UuidCanonicalTextual
+ recm5UcVaAPAtrrFS
+ reckQg9yTsSw2dxbh
+ reczzIn3wGYrEKtbr
+ recfDQscmquO0odpo
+ recvJ9OVpqVVP895H
+ recBqSlQdF17CgMPY
+ rec2EA0TG0Xexi6wg
recKcuGOfjTIPqtXk
2022-07-10T12:52:01Z
+ PositiveInteger
recTIuInqPiemsf9b
reclgcZrxIoZfiovl
recgIQb2yDNArvM73
OwnershipDeedNftId
- PositiveInteger
recIN7LQdlrUw9oNP
rec6MQ1HJUBz9pC5d
recvaw2vy5mebzESQ
@@ -21001,11 +24380,11 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recLyqFB0L7XFIp6C
2022-06-18T17:01:13Z
- 2
+ Bit
0 or 1
reckbdPijd806F8LT
reciVyeMslNHUJKN8
- Bit
+ 2
recnqelpRWYmV8MJR
recjPLNQVJ2uCOYfC
recsgnh5t5it39M5o
@@ -21015,13 +24394,13 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recSvRBEpOcZWQMmY
2022-11-02T23:17:45Z
- Lowercase alphanumeric strings separated by hypens, with most significant word to the left. I.e. `dw1.ne` is the child of `dw1`. Both the first and last word must start with a alphabet character.
LeftRightHyphen
+ Lowercase alphanumeric strings separated by hypens, with most significant word to the left. I.e. `dw1.ne` is the child of `dw1`. Both the first and last word must start with a alphabet character.
recWwoTHJMScsOvnF
2023-01-05T16:22:42Z
- "g"
+ HexChar
single-char string in '0123456789abcdefABCDEF'
recB038FARPSVfhZS
reclQHYGJz7sxMibH
@@ -21029,24 +24408,24 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recoduUdKygrSq0T5
recsbmamjY68wXvzD
recu06qV62QnggRW0
+ "g"
+ d
recxNIfCRauFrb57o
recFrR35Q6mQhx1KM
recE3bIWWFpMPqyS1
recDq5Oo6baJLVS5s
- d
- HexChar
recZS8rV9vLS5kFN1
2022-11-08T08:21:47Z
+ IsoFormat
recFAv8cdbxLhK5Wh
recd5K0XiAzHsj2Pw
- IsoFormat
recb9fI4kRkTYXDzA
2022-06-10T12:25:16Z
- "a.b-h"
+ LeftRightDot
Lowercase alphanumeric words separated by periods, most significant word (on the left) starting with an alphabet character.
recK1YHQ9c8LbBJ0q
recYD7KpGFv86yleu
@@ -21136,6 +24515,25 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
reci7qQs2JCeyRbV7
recpCkNXWjHazXV05
rece8mt4smna93obx
+ recLnHXHBgC0FTXR0
+ recqDBnMUrFKhR7xh
+ recB7NDDe5xXWHh9M
+ recFFrCFMIAqvoz8H
+ recfeWhbkmYYdayn3
+ recSZuXgqgnSQCBOa
+ recbAjM31sjr5mRF3
+ recoEOdUEOJ4NE1i8
+ recCQfmUkI2by85NK
+ recWfVfIe5SaVyrD2
+ recxJmpDJWx6LnEzW
+ rec5tlsMd4hrJm4Yi
+ rec9LV9kNuSH5H6fq
+ recNMgiBoWjcpx9qS
+ recJcYgKuh54ltqk5
+ recIi1kb6LxzOzv0b
+ recaMsFqtaJuXv5AD
+ "a.b-h"
+ dw1.isone.me.freedom.apple
recc2Km1jUViJqVeK
rec8uTC7GK5qgXzg9
reczVqlxJInFWonml
@@ -21192,19 +24590,31 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
reccsu6ZeZHKoDqDy
reciGkEyh61sro7R0
recyETDKMGTbGb0zf
- dw1.isone.me.freedom.apple
- LeftRightDot
+ rec4yUxGiLZpqWQqb
+ recm5UcVaAPAtrrFS
+ recw5evm1WetKAzZG
+ recwXD4ryogKVwsnE
+ rec8IDXjSvdhHGds4
+ reckQg9yTsSw2dxbh
+ reczzIn3wGYrEKtbr
+ recfDQscmquO0odpo
+ recvJ9OVpqVVP895H
+ recBqSlQdF17CgMPY
+ recrZz3gmzl97POA1
+ rec2EA0TG0Xexi6wg
+ rechp89wabr5kkqti
recc5MBUv09sg8D4i
2022-05-11T18:29:33Z
- 65536
- Integer X, 0<= X <= 65535
UnsignedShort
+ Integer X, 0<= X <= 65535
+ 65536
recdsSDIz6EmZCvr9
2022-11-08T04:38:45Z
+ MarketSlotNameLrdFormat
recT1nhwCuJiHkC52
recW7xrCzv88NSkzD
rechysRxaDzIfMVDw
@@ -21217,18 +24627,18 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recd5K0XiAzHsj2Pw
recECSz5o4Z7NFjhG
rechVGhiKUuIgoWYy
- MarketSlotNameLrdFormat
reciNckyKjqNQDByG
2022-07-13T00:24:04Z
- rec2WTDVr3IZq1B7j
NonNegativeInteger
+ rec2WTDVr3IZq1B7j
recWQfeI479YJ5lvR
recopFBsq4TmG87Op
2022-09-14T17:59:16Z
+ AlgoAddressStringFormat
String of length 32, characters are all base32 digits.
recrD0Mo96XS8itFz
recBje3quNXHrsP6j
@@ -21279,6 +24689,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recZQKyBftNOGc46Z
recQOONbTZMocKXeg
recfm7YlkXDX6XQEU
+ RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI
rec8uTC7GK5qgXzg9
rectayh08KEGGGcZc
recV0KuDFayH4qGIl
@@ -21299,13 +24710,11 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recazQb2vEXgbroHd
recECSz5o4Z7NFjhG
recF9KonH58AltK0K
- RNMHG32VTIHTC7W3LZOEPTDGREL5IQGK46HKD3KBLZHYQUCAKLMT4G5ALI
- AlgoAddressStringFormat
recqSXVzLo8RtEjlH
2022-05-11T18:29:33Z
- 1656245000
+ ReasonableUnixTimeMs
An integer reflecting unix time in ms between midnight Jan 1 2000 and midnight Jan 1 3000 UTC
rec0yzwyCWxtaJQJF
recicAZCWCo8hSu2t
@@ -21327,6 +24736,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rec9m6WYnkhS8o9uJ
reciMffYqbquDDMwr
recy22SSV0XnqMR9U
+ 1656245000
rec7peRuDqMNa0vlW
recE3bIWWFpMPqyS1
recTZ13dEbwrKazkL
@@ -21341,11 +24751,11 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recdNEAMkZeOLS8Vo
recDq5Oo6baJLVS5s
reciGkEyh61sro7R0
- ReasonableUnixTimeMs
recvbnpa4cX2nNp9p
2022-09-15T23:45:35Z
+ AlgoMsgPackEncoded
Error is not thrown with algosdk.encoding.future_msg_decode(candidate)
reclWEqctUrS5WXwG
recbR8wOIppFVic94
@@ -21367,6 +24777,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rec5xtm1Bu9kG4GaK
recEG7l0wT1KjHSFs
recYFjgEXfTizyRiv
+ gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc=
reccFZLsGTVhuzGsn
rec1SFXYQUXElpeJ9
recO8OdobcISYms0B
@@ -21383,144 +24794,96 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recF9KonH58AltK0K
recbrp6V9qD6J1NHb
recECSz5o4Z7NFjhG
- gqRtc2lng6ZzdWJzaWeSgaJwa8Qgi1hzb1WaDzF+215cR8xmiRfUQMrnjqHtQV5PiFBAUtmConBrxCD8IT4Zu8vBAhRNsXoWF+2i6q2KyBZrPhmbDCKJD7rBBqFzxEAEp8UcTEJSyTmgw96/mCnNHKfhkdYMCD5jxWejHRmPCrR8U9z/FBVsoCGbjDTTk2L1k7n/eVlumEk/M1KSe48Jo3RocgKhdgGjdHhuiaRhcGFyhaJhbq9Nb2xseSBNZXRlcm1haWSiYXXZKWh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9tb2xseWNvL3doby13ZS1hcmUvoW3EIItYc29Vmg8xftteXEfMZokX1EDK546h7UFeT4hQQFLZoXQBonVupVZMRFRSo2ZlZc0D6KJmdlGjZ2VuqnNhbmRuZXQtdjGiZ2jEIC/iF+bI4LU6UTgG4SIxyD10PS0/vNAEa93OC5SVRFn6omx2zQQ5pG5vdGXEK01vbGx5IEluYyBUZWxlbWV0cnkgU3VydmV5b3JzIGFuZCBQdXJ2ZXlvcnOjc25kxCDHZxhdCT2TxxxZlZ/H5mIku1s4ulDm3EmU6dYKXCWEB6R0eXBlpGFjZmc=
- AlgoMsgPackEncoded
recx8kL4InkksReIF
2022-05-11T18:29:33Z
- -32769
+ ShortInteger
short format requires (-32767 -1) <= number <= 32767
recw4w4kyKb5qsTUd
- ShortInteger
+ -32769
rec2J6tKssVJwVmFd
2022-11-21T14:51:34Z
+ gnr
recVyJz6EmMdwDjYy
- recHxMHk1Q13AGxQT
recD9RSdxZFlCh0nV
rec0Uk7vhJUpp68kq
recM8DeGDMOPo9ezd
recRLpRImAACQhmSj
recs8N9wVyonAKE8y
- recyENjaG4Mi1n27B
- recfdC5aUpHXgXtON
rec0CVyxlO3cPJGWD
- gnr
- recCEQgAR8tPu4mgu
- recUiiAdTTH4zmBfJ
recmacM072NkqkOW1
- recT6IKeUqmmI7L84
- recsRpVdgR7q3fCML
- recZKMG3hALXcWQuc
- recA0Q62wqmXkzSse
rec3E1mvlkD3mlc6K
2022-11-16T19:07:38Z
+ gwmm
+ Gridworks MarketMaker
recwv4Bsb1NA1uZxn
recSIwq3BdNSAxp2e
- recrWS8cReivzRx92
- rec1qAnTlin7a194M
rec8cREVO03dOhbWy
recMvuzDPwhs257Bs
rec5dH5f6YcOKD0RU
- recx5JlRHk2l9zzQK
- recOVsu1AQ1nyhMTN
recYts9GI3HDasco4
recleupDcbcVTVRQ9
recPkFr8lDBRTXq08
recbV3eBvST23mHgN
recvpIR8rXsHiuLTP
- Gridworks MarketMaker
- gwmm
- rect0T4CM09fP7g2t
- recTt38mXlQtJdywQ
- reck0WsxFdPOoe5ZM
- recGhJkY0Egp6jCRt
- recmNuAp0alwhubds
- rec9HtmIiTasYUNy0
- recISSyBDybwCsc9S
- recihvUJVR6oEfEap
- rec8YFBXCvMbO7Fnc
rec3nJaxOMLIKJoNY
2022-10-24T23:07:49Z
- recmXImdzdJvIhwRj
- recASxd0yY7a1nWR4
- recM6At5qFrk4dsir
- recuetPMCxsDyU0R4
- recB2fok3eH3LnZmw
+ gwatn
rec0yahRyau7Mzmzk
recDST3lwGBFXqsz1
recSNej4i6EwucKbV
rectD1KxAzqJILPfu
recanqppJwatq7fmU
- recGRKTWPhlGhVZqf
- recGpv7lXS5nQj5jR
- recfsDYNRW0af16Ol
recFreOp8J4dIjXkD
rec5K84S2MN0iMNlE
recLBYNcGvIrpb1nX
recKs7BOeqelLodrB
- recfLzamGrtSF52cT
- recGSPzbsyt0nPa5B
- recSxY4F5Ewetp9tW
- recCqC0KKS00693kw
recAO8C6pnLKe00p1
reckwTitpkjc24FAx
recbN7L6MH925xDby
recZZqjz8vL6Dj548
- recWbhB62TTgTQUtI
- recWaQL9LKI0BTilC
- recD3lLZaCPt9ehVW
- rec5LcnUo5uGaILj6
- recnvClBEU4WU5lOe
- recGg8u1kDk0dEwT0
- recgroRYrhO8lRT9B
- rec48h8N51cFfC0Y2
- recYXSUnBW9DHXJWw
recs6Jf8auLqC5z1T
- rec2ZUAEXRfDLAKh8
- recurndoUQt30tVFv
recIX7Ev6QVM4jtwT
recaBlt54tM7DPjwR
recjvYtEfvMLsZJtV
- gwatn
- recLjDrJSnNnwWD54
- recRncRvdA6tysnAt
- recDa8t2QVwfTLzpo
- reczplFItDku5AaRa
- recOCu54C8gBud4Rp
- rechPYPk940Fi7Uud
- recLromkpguogn9x9
- recUKBtypJxJFHldg
+ recQZBqdNBFdbHYdk
+ recDIPWhldlUQVNYr
+ recOoCg1T2rOplTJT
+ reccIKvkAunTQR3uO
+ recntdJAXDry45FT5
+ recvUI21ZPLimt9Tt
+ recF0p8e8Vmazeyd9
+ recDqWAGc9wH8TzcX
+ recCWJPidn8ABRVgU
+ recJRYtEf5HsSuZBM
+ rec8Ix2UVLnq7xycF
+ recdAy68epnKcXjLL
+ rec0I8YsmUHlc5F67
+ recHLWHk24N98yrP7
+ recGCj1HgHQww3p80
+ recRis6YmxjqUGg0c
+ recZsOKTlEbZPh3rD
+ recjmLBzSO8k29I9e
+ recCgP2Dw5SfDjpp2
reclDWkXtj41G28wW
rec1AjUKBV2cKU0zq
rec9izwc0IQmbp6gf
- rec8B7NqLQHwAZjcw
- recJX40Wt0rcWDFET
- recaWGhVScY6KXA44
- recf2bjSGV3D1Ml5i
- recGcb0eH9z0Np8jd
- recy37qKrW01vTt7S
- reckI8CRWIPcmOTrC
- rec3tGkwCYPLdVaio
- rec6kz3pyxVALoFsu
- recpwlwbrp4FbfXbU
- recyDSPjw1NYVGiOH
- recqMWuADrFZz8VgP
- recaR5EUku9iF2rKc
- recsHlBETSCTId6TE
- rec6qUrXNHuchMTRb
+ recg48Xi06BYdm33C
rec5aZ8ud9lQDmlBu
2022-10-24T23:07:49Z
+ gwproto
+ Protocol used by the SCADA repository
recwZgp7HvS1QX41E
recktn7mVOjp0WCql
recRsVv1nAv6EFkrJ
@@ -21554,8 +24917,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recuJQxG7uIZ98O1y
rec11OYyEPT4FV8al
recDbV0swsrf9r4Im
- Protocol used by the SCADA repository
- gwproto
recqt9zKlCbThWViA
recTsc0Fiab7VGVWX
recE24bIOzJ4vCtXl
@@ -21566,64 +24927,46 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recHY8DLO7gBfWjtC
2023-01-14T15:00:31Z
- recg5ScMmCJuinnKL
- recDIPWhldlUQVNYr
+ satn
+ Spaceheat Atn
recl5OGEwbCR9w3O7
- recOoCg1T2rOplTJT
- recJnQIpCbM1mDUV6
recvFLJdLpTh7dGh1
- Spaceheat Atn
- satn
- recKJi6uA9s9Sp8XM
- recg4YcVJnk1bG3PL
- recVpliEuu2jtKKUj
- recEIu8DZMwf0J7za
- recfpS2uOHAcfWGdN
- recV83OsyQx8GqHV8
+ recJnQIpCbM1mDUV6
+ rec2ZUAEXRfDLAKh8
+ recLromkpguogn9x9
+ recUKBtypJxJFHldg
recN6489A2iI0CRXz
2022-11-21T05:23:07Z
+ gworld
recTvm4cpEzdavk6J
recl5eLv36HJnILWJ
- recianedmKDqWVh0O
- recbuSNZg3DwAGxys
recI3qMEZNOVje6qG
- rec9y2OWDqjR6vSAp
- recnwesXAnDk54IJt
- reciXeCa9g1WrIc02
- recx1ZcM9hO3GKRkp
- gworld
- recxchS4k09ivH7vN
- recWkTXMymydxR5UX
- recV9jP0nFcRCDphV
- recLgjTEHK9NGb3nq
- recfChwtbhGYGwQAx
- rec3lKyK0qukOmAfT
- rec3aEohPrsl8Z6M3
- recf9z2cLhcr9up3s
+
+
+ recVsPBZNyq2U6Fmz
+ 2023-06-27T15:19:58Z
+ gwprice
+ GridWorks Price Service - that is, a service for providing forecasts for various electricity markets
+ recUJdyAtLmKAZB4S
+ recSXyujnroySodqB
recXaQaXNNDyxIlT7
2022-10-24T23:07:49Z
- reccq15mpDgpXGekn
+ gnf
recA4Y7Iy3elTbyCB
recY5s5LoUEwNBowT
recAJ6AYNLdBZ7XfK
reccfgO8fAUzT3J2W
- rect61DlS8mCPHnUL
recg3ZHFD17mRWVDL
- rec3V5oWa4cyRtWNc
recZiKOMXJ8UCneY9
recPRrjd1GyqOVHIZ
- recAKcZ5BDHN6JKil
rec9HUzZ3tgJOalLk
rec1Kr8gSWyIe4lG2
rectUrkJtiUPjNn5q
- recsRFfTXSym7gX54
- recxtr4LhX2Ixojmg
rec2QIaMX8gSssv7M
- recYSfcJBIVxFIWCZ
recQItJExa3ZiV3Jh
reciUjZq6Ym3P59mT
reccEMLYgCyyYLPr2
@@ -21631,22 +24974,19 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recZCRfLe9nDmrRAU
recCLW1iXAhVHGoUm
recmM5fq13YDWN7oc
- recKCYKKIRjtnFzdh
recl7u8ZInYMFV7EC
recrpoQF951bAlwS5
- gnf
- recX5VXrxWR81za5J
+ recaT1SF8nRebYo7G
+ recyzaIpCoUsKpVbL
+ recBZVJVqK4DOb2JX
+ rec50dqlnp2l3PH7B
+ rec49oZw87DHVaGGI
recr9TyWTi2Ct7iKH
- rec8Ahq8RdNkgPzQN
- recjOCdfp4V6Ugqfs
- rec7riMLKDhllLHJF
- recesY3Van2qeFjV0
- reczs2uW5OOP1dIaw
- recvmdMYmWLhBwujD
recdu3DxzzmNH2eNq
2022-12-23T02:32:53Z
+ scada
recxelQn6OCbkk5A5
recMWNrvkQjOIdOjQ
recCuch3XtEssNGuu
@@ -21665,35 +25005,23 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recRlWqdLmqPKyUME
recfHuF6SpeyhwE56
recstn9IrZMpRLKja
- rec9hyu5DGf4HWX7A
recg17XBd52YMSt1Q
recgeWd2XE4WEhaqC
- scada
recu25eXE4ralXooT
- recfXjHuQMUL0RQ7H
- rec1OdnzZiXinfwfj
- recWrjAGRucT1hiRq
recM4mFl7a9iTxdrm
recre1axpcL8VVuaQ
2022-11-08T18:53:05Z
- recnBbGAlK4U8sngT
- reccuFJPlMliv6yW8
- rec2Gvd8Nt7DvqTpf
+ gwtime
rec1nKwt8hPeDIqrE
recOEHxBFFDNPACx1
recVQ3e3vgtZiDbe0
- gwtime
- recpKd5HOmAf37QY5
- recZKMmBxWot2RY5F
- recaaXWI5JSINnLOx
- rec9bDgohSOum1o1F
- rec4dIrr33GsfXGEi
rect1hCTZjieEGxgr
2022-12-03T16:07:56Z
+ gridworks
rect3RqANsPtjXr8a
recc24iKFupSXBEgQ
recsqbuLwrgitVmoY
@@ -21701,13 +25029,8 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recFnEf8eIe2zVWOY
recJbB2aEPqgo0e6D
reckr1EbtWVGkY1KM
- rec50dqlnp2l3PH7B
- rec49oZw87DHVaGGI
recJqKGuHpco4ynvW
- recaT1SF8nRebYo7G
- recyzaIpCoUsKpVbL
- recBZVJVqK4DOb2JX
- gridworks
+ reccq15mpDgpXGekn
recFcFz3hJ9GJbVDh
recIyZCjcgxuH7wbv
recdOkYhGUBlj7FBT
@@ -21726,214 +25049,178 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recvaW2RuHMh5mwwR
2022-12-31T12:58:01Z
+ newatn
recB57YfEtBGpfH71
recZBrVC3qx5dJ9B0
rec2D8QrI2Tps74Ce
recWQ4qoe36jdvDDu
recuxGhKEXF5Edw2W
- recGk4c4hm4Ng97pB
recjg4AvSyxIiItff
rece0jNAI2D1qrYj7
recuqYXBpW9rcXrKC
rec9jyOwhibLuECVH
- rec86XZBf9WnCg5bX
- recSENoEtLHiKubGR
- newatn
rec0BOEFEF3Tvn5vW
2023-02-28T00:40:59Z
- recdu3DxzzmNH2eNq
- recbMWz8PxqJUI41L
scada multipurpose.sensor.component.gt.000
+ recdu3DxzzmNH2eNq
scada
+ recbMWz8PxqJUI41L
multipurpose.sensor.component.gt.000
Active
rec0CVyxlO3cPJGWD
2022-11-29T13:31:33Z
- rec2J6tKssVJwVmFd
- recNIlQetbTDVNam8
gnr g.nodes.broadcast.000
+ rec2J6tKssVJwVmFd
gnr
+ recNIlQetbTDVNam8
g.nodes.broadcast.000
Pending
- rec0Uk7vhJUpp68kq
- 2022-11-21T14:53:22Z
- rec2J6tKssVJwVmFd
- reca1A5UXpnpmZdiH
- gnr basegnode.other.create.000
- gnr
- basegnode.other.create.000
+ rec0I8YsmUHlc5F67
+ 2023-05-09T12:46:57Z
+ gwatn tavalidatorcert.algo.create.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ reccFZLsGTVhuzGsn
+ tavalidatorcert.algo.create.000
+ Active
+
+
+ rec0Uk7vhJUpp68kq
+ 2022-11-21T14:53:22Z
+ gnr basegnode.other.create.000
+ rec2J6tKssVJwVmFd
+ gnr
+ reca1A5UXpnpmZdiH
+ basegnode.other.create.000
Pending
rec0X5JpHPTyqYdrx
2023-02-20T18:57:22Z
- rec5aZ8ud9lQDmlBu
- recNbXbJE9rcnLXAs
gwproto gt.sh.status.110
+ rec5aZ8ud9lQDmlBu
gwproto
+ recNbXbJE9rcnLXAs
gt.sh.status.110
Active
rec0yahRyau7Mzmzk
2022-11-08T04:00:15Z
- rec3nJaxOMLIKJoNY
- rechXkF4uGNAulje7
gwatn price.quantity.000
+ rec3nJaxOMLIKJoNY
gwatn
+ rechXkF4uGNAulje7
price.quantity.000
- Pending
+ Active
rec11OYyEPT4FV8al
2023-04-03T20:40:32Z
- rec5aZ8ud9lQDmlBu
- recDEr7ob2KLqM4gU
gwproto telemetry.reporting.config.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recDEr7ob2KLqM4gU
telemetry.reporting.config.000
Active
rec1Kr8gSWyIe4lG2
2022-10-31T20:32:30Z
- recXaQaXNNDyxIlT7
- recT4SSkJ18pz5YoZ
gnf basegnodes.broadcast.000
+ recXaQaXNNDyxIlT7
gnf
+ recT4SSkJ18pz5YoZ
basegnodes.broadcast.000
Pending
rec1TqtyFK3VxPiEv
2023-04-03T20:40:09Z
- rec5aZ8ud9lQDmlBu
- recDjO3rdq76LMOoL
gwproto resistive.heater.component.gt.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recDjO3rdq76LMOoL
resistive.heater.component.gt.000
Active
rec1WZNSLK8X3RGoh
2022-12-27T16:09:33Z
- recdu3DxzzmNH2eNq
- rec3Noy3m1X4Vdly9
scada simple.temp.sensor.cac.gt.000
+ recdu3DxzzmNH2eNq
scada
+ rec3Noy3m1X4Vdly9
simple.temp.sensor.cac.gt.000
Active
rec1nKwt8hPeDIqrE
2022-11-21T05:22:31Z
- recre1axpcL8VVuaQ
- recX2g8OLICXZHuHr
gwtime resume.time.000
+ recre1axpcL8VVuaQ
gwtime
+ recX2g8OLICXZHuHr
resume.time.000
Pending
-
- rec1qAnTlin7a194M
- 2022-11-16T19:17:23Z
- rec3E1mvlkD3mlc6K
- recxNIfCRauFrb57o
- gwmm heartbeat.a.100
- gwmm
- heartbeat.a.100
- Pending
-
rec2D8QrI2Tps74Ce
2022-12-27T16:00:31Z
- recvaW2RuHMh5mwwR
newatn
+ recvaW2RuHMh5mwwR
newatn
-
- rec2Gvd8Nt7DvqTpf
- 2022-11-08T18:54:54Z
- recre1axpcL8VVuaQ
- recc2Km1jUViJqVeK
- gwtime ready.001
- gwtime
- ready.001
- Pending
-
rec2QIaMX8gSssv7M
2022-11-02T12:51:33Z
- recXaQaXNNDyxIlT7
- rec8ILTteHhn4MpGd
gnf basegnodes.get.000
+ recXaQaXNNDyxIlT7
gnf
+ rec8ILTteHhn4MpGd
basegnodes.get.000
Pending
rec2Sl2RMNjKXgu98
2023-02-20T19:18:10Z
- rec5aZ8ud9lQDmlBu
- recdNEAMkZeOLS8Vo
gwproto telemetry.snapshot.spaceheat.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recdNEAMkZeOLS8Vo
telemetry.snapshot.spaceheat.000
Active
rec2ZUAEXRfDLAKh8
2023-01-16T08:04:33Z
- rec3nJaxOMLIKJoNY
+ satn simplesim.driver.data.hpwb.000
+ recHY8DLO7gBfWjtC
+ satn
rec9kYNek59Vqps4S
- gwatn sim.scada.driver.report.000
- gwatn
- sim.scada.driver.report.000
- Pending
-
-
- rec2a1O4X0TlMmhsW
- 2022-12-28T13:16:54Z
- recrnRklRws6Txbqr
- snapshot.spaceheat.000
- snapshot.spaceheat.000
- Active
-
-
- rec3V5oWa4cyRtWNc
- 2022-10-31T20:32:12Z
- recXaQaXNNDyxIlT7
- reccFZLsGTVhuzGsn
- gnf tavalidatorcert.algo.create.000
- gnf
- tavalidatorcert.algo.create.000
+ simplesim.driver.data.hpwb.000
Active
- rec48h8N51cFfC0Y2
- 2023-01-13T19:04:08Z
- rec3nJaxOMLIKJoNY
- rechKgkXf88R5dkGD
- gwatn heartbeat.algo.audit.000
- gwatn
- heartbeat.algo.audit.000
- Pending
+ rec48bCFT2Hu6WLAT
+ 2023-05-02T17:57:50Z
+
rec49oZw87DHVaGGI
2023-01-01T01:01:15Z
- rect1hCTZjieEGxgr
+ gnf tavalidatorcert.algo.transfer.000
+ recXaQaXNNDyxIlT7
+ gnf
rec1SFXYQUXElpeJ9
- gridworks tavalidatorcert.algo.transfer.000
- gridworks
tavalidatorcert.algo.transfer.000
Active
@@ -21945,78 +25232,68 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
rec50dqlnp2l3PH7B
2023-01-01T01:00:40Z
- rect1hCTZjieEGxgr
+ gnf tavalidatorcert.algo.create.000
+ recXaQaXNNDyxIlT7
+ gnf
reccFZLsGTVhuzGsn
- gridworks tavalidatorcert.algo.create.000
- gridworks
tavalidatorcert.algo.create.000
Active
rec5K84S2MN0iMNlE
2022-11-14T15:42:52Z
- rec3nJaxOMLIKJoNY
- recPPTLAWZu08mD7s
gwatn terminalasset.certify.hack.000
- gwatn
- terminalasset.certify.hack.000
- Pending
-
-
- rec5LcnUo5uGaILj6
- 2023-01-12T15:40:03Z
rec3nJaxOMLIKJoNY
- reccFZLsGTVhuzGsn
- gwatn tavalidatorcert.algo.create.000
gwatn
- tavalidatorcert.algo.create.000
+ recPPTLAWZu08mD7s
+ terminalasset.certify.hack.000
Active
rec5dH5f6YcOKD0RU
2022-11-16T19:17:53Z
- rec3E1mvlkD3mlc6K
- recsHXkpUxoOF9vYp
gwmm price.quantity.unitless.000
+ rec3E1mvlkD3mlc6K
gwmm
+ recsHXkpUxoOF9vYp
price.quantity.unitless.000
- Pending
+ Active
rec5uG0IulOeg3qcr
2022-12-27T19:28:39Z
- recm57e2rjMmC2c6n
component.attribute.class.gt.000
+ recm57e2rjMmC2c6n
component.attribute.class.gt.000
Active
- rec86XZBf9WnCg5bX
- 2022-12-27T16:04:50Z
- recvaW2RuHMh5mwwR
- recrnRklRws6Txbqr
- newatn snapshot.spaceheat.000
- newatn
- snapshot.spaceheat.000
+ rec8Ix2UVLnq7xycF
+ 2023-05-09T12:45:46Z
+ gwatn initial.tadeed.algo.optin.002
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recAWKkS0hcyws7O6
+ initial.tadeed.algo.optin.002
Active
rec8cREVO03dOhbWy
2022-11-16T19:17:31Z
- rec3E1mvlkD3mlc6K
- recd5K0XiAzHsj2Pw
gwmm latest.price.000
+ rec3E1mvlkD3mlc6K
gwmm
+ recd5K0XiAzHsj2Pw
latest.price.000
- Pending
+ Active
rec9HUzZ3tgJOalLk
2022-10-31T20:32:30Z
- recXaQaXNNDyxIlT7
- recvWBuo1Ws1SIL4b
gnf new.tadeed.algo.optin.000
+ recXaQaXNNDyxIlT7
gnf
+ recvWBuo1Ws1SIL4b
new.tadeed.algo.optin.000
Active
@@ -22025,166 +25302,116 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2022-12-27T16:04:33Z
-
- rec9hyu5DGf4HWX7A
- 2023-03-09T18:47:33Z
- recdu3DxzzmNH2eNq
- recDq5Oo6baJLVS5s
- scada heartbeat.b.001
- scada
- heartbeat.b.001
- Active
-
rec9jyOwhibLuECVH
2022-12-27T15:58:16Z
- recvaW2RuHMh5mwwR
- recDjO3rdq76LMOoL
newatn resistive.heater.component.gt.000
+ recvaW2RuHMh5mwwR
newatn
+ recDjO3rdq76LMOoL
resistive.heater.component.gt.000
Active
rec9wSDE2snnCJmLi
2023-02-20T19:19:50Z
- rec5aZ8ud9lQDmlBu
- recrnRklRws6Txbqr
gwproto snapshot.spaceheat.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recrnRklRws6Txbqr
snapshot.spaceheat.000
Active
-
- rec9y2OWDqjR6vSAp
- 2022-12-03T16:06:38Z
- recN6489A2iI0CRXz
- recV0KuDFayH4qGIl
- gworld g.node.instance.gt.000
- gworld
- g.node.instance.gt.000
- Pending
-
recA4Y7Iy3elTbyCB
2022-10-31T20:31:13Z
- recXaQaXNNDyxIlT7
- reca1A5UXpnpmZdiH
gnf basegnode.other.create.000
+ recXaQaXNNDyxIlT7
gnf
+ reca1A5UXpnpmZdiH
basegnode.other.create.000
Pending
recAJ6AYNLdBZ7XfK
2022-10-31T20:31:19Z
- recXaQaXNNDyxIlT7
- rec5bEVzI1k5qcXYg
gnf discoverycert.algo.create.000
- gnf
- discoverycert.algo.create.000
- Pending
-
-
- recAKcZ5BDHN6JKil
- 2022-10-31T20:32:28Z
recXaQaXNNDyxIlT7
- recxNIfCRauFrb57o
- gnf heartbeat.a.100
gnf
- heartbeat.a.100
- Pending
+ rec5bEVzI1k5qcXYg
+ discoverycert.algo.create.000
+ Active
recAO8C6pnLKe00p1
2022-12-31T23:50:23Z
- rec3nJaxOMLIKJoNY
- recvWBuo1Ws1SIL4b
gwatn new.tadeed.algo.optin.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recvWBuo1Ws1SIL4b
new.tadeed.algo.optin.000
Active
-
- recASxd0yY7a1nWR4
- 2022-11-06T20:36:28Z
- rec3nJaxOMLIKJoNY
- recxNIfCRauFrb57o
- gwatn heartbeat.a.100
- gwatn
- heartbeat.a.100
- Pending
-
-
- recB2fok3eH3LnZmw
- 2022-11-08T03:23:53Z
- rec3nJaxOMLIKJoNY
- recc2Km1jUViJqVeK
- gwatn ready.001
- gwatn
- ready.001
- Pending
-
recB57YfEtBGpfH71
2022-12-27T15:56:38Z
- recvaW2RuHMh5mwwR
- reca2LF7P05qQmFJW
newatn relay.cac.gt.000
+ recvaW2RuHMh5mwwR
newatn
+ reca2LF7P05qQmFJW
relay.cac.gt.000
Active
recBZVJVqK4DOb2JX
2023-01-10T21:24:35Z
- rect1hCTZjieEGxgr
+ gnf initial.tadeed.algo.transfer.000
+ recXaQaXNNDyxIlT7
+ gnf
recPf7eAhpge7kvO7
- gridworks initial.tadeed.algo.transfer.000
- gridworks
initial.tadeed.algo.transfer.000
Active
recCLW1iXAhVHGoUm
2022-11-23T14:03:08Z
- recXaQaXNNDyxIlT7
- recPxYqZlRvCFlD8p
gnf sla.enter.000
+ recXaQaXNNDyxIlT7
gnf
+ recPxYqZlRvCFlD8p
sla.enter.000
- Pending
+ Active
- recCqC0KKS00693kw
- 2022-12-31T23:49:59Z
+ recCWJPidn8ABRVgU
+ 2023-05-02T17:58:12Z
+ gwatn simplesim.driver.data.000
rec3nJaxOMLIKJoNY
- recAWKkS0hcyws7O6
- gwatn initial.tadeed.algo.optin.002
gwatn
- initial.tadeed.algo.optin.002
+ rec8IDXjSvdhHGds4
+ simplesim.driver.data.000
Active
+
+ recCgP2Dw5SfDjpp2
+ 2023-06-28T14:36:03Z
+ gwatn atn.outside.temp.regr.coeffs.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recy7fqBm5Cl94dnF
+ atn.outside.temp.regr.coeffs.000
+ Pending
+
recCuch3XtEssNGuu
2022-12-27T15:58:07Z
- recdu3DxzzmNH2eNq
- rec2m06PsjtFd0cfu
scada resistive.heater.cac.gt.000
+ recdu3DxzzmNH2eNq
scada
+ rec2m06PsjtFd0cfu
resistive.heater.cac.gt.000
Active
-
- recD3lLZaCPt9ehVW
- 2023-01-12T15:39:41Z
- rec3nJaxOMLIKJoNY
- recPf7eAhpge7kvO7
- gwatn initial.tadeed.algo.transfer.000
- gwatn
- initial.tadeed.algo.transfer.000
- Active
-
recD3ljiQIeTgIh7G
2022-11-14T23:07:02Z
@@ -22193,32 +25420,32 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recD9RSdxZFlCh0nV
2022-11-21T14:53:19Z
- rec2J6tKssVJwVmFd
- rec70ndc2atifo8Ri
gnr basegnode.marketmaker.create.000
+ rec2J6tKssVJwVmFd
gnr
+ rec70ndc2atifo8Ri
basegnode.marketmaker.create.000
Pending
recDIPWhldlUQVNYr
2023-01-23T13:46:41Z
- recHY8DLO7gBfWjtC
+ gwatn dispatch.contract.confirmed.000
+ rec3nJaxOMLIKJoNY
+ gwatn
rec3kcgktiHCBYpA4
- satn dispatch.contract.confirmed.heatpumpwithbooststore.000
- satn
- dispatch.contract.confirmed.heatpumpwithbooststore.000
- Pending
+ dispatch.contract.confirmed.000
+ Active
recDST3lwGBFXqsz1
2022-11-08T04:09:15Z
- rec3nJaxOMLIKJoNY
- recsHXkpUxoOF9vYp
gwatn price.quantity.unitless.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recsHXkpUxoOF9vYp
price.quantity.unitless.000
- Pending
+ Active
recDTEBFiotrU2qvu
@@ -22228,62 +25455,82 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recDbV0swsrf9r4Im
2023-04-06T14:21:30Z
- rec5aZ8ud9lQDmlBu
- recyETDKMGTbGb0zf
gwproto data.channel.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recyETDKMGTbGb0zf
data.channel.000
Active
- recEPIMe5vF9Dqd9e
- 2023-04-03T20:38:02Z
- rec5aZ8ud9lQDmlBu
- recm57e2rjMmC2c6n
+ recDqWAGc9wH8TzcX
+ 2023-05-02T17:57:52Z
+ gwatn simplesim.driver.report.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ reckQg9yTsSw2dxbh
+ simplesim.driver.report.000
+ Active
+
+
+ recEPIMe5vF9Dqd9e
+ 2023-04-03T20:38:02Z
gwproto component.attribute.class.gt.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recm57e2rjMmC2c6n
component.attribute.class.gt.000
Active
+
+ recF0p8e8Vmazeyd9
+ 2023-05-01T21:55:43Z
+ gwatn simplesim.driver.data.bsh.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recwXD4ryogKVwsnE
+ simplesim.driver.data.bsh.000
+ Active
+
recFJlNwyiBE5mu93
2023-02-20T18:59:15Z
- rec5aZ8ud9lQDmlBu
- rec93KBYcwiqJ6OQy
gwproto gt.sh.telemetry.from.multipurpose.sensor.100
+ rec5aZ8ud9lQDmlBu
gwproto
+ rec93KBYcwiqJ6OQy
gt.sh.telemetry.from.multipurpose.sensor.100
Active
recFZKk2qxmOmDKdD
2023-04-03T20:39:23Z
- rec5aZ8ud9lQDmlBu
- recULIwPg69M69185
gwproto multipurpose.sensor.cac.gt.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recULIwPg69M69185
multipurpose.sensor.cac.gt.000
Active
recFnEf8eIe2zVWOY
2022-12-03T16:11:40Z
- rect1hCTZjieEGxgr
- recc2Km1jUViJqVeK
gridworks ready.001
+ rect1hCTZjieEGxgr
gridworks
+ recc2Km1jUViJqVeK
ready.001
- Pending
+ Active
recFreOp8J4dIjXkD
2022-11-12T08:15:45Z
- rec3nJaxOMLIKJoNY
- recbGrdqqYGiwVYVK
gwatn tadeed.specs.hack.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recbGrdqqYGiwVYVK
tadeed.specs.hack.000
- Pending
+ Active
recFxZw9Lrr4wrO5U
@@ -22291,147 +25538,117 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
- recGRKTWPhlGhVZqf
- 2022-11-09T23:48:19Z
+ recGCj1HgHQww3p80
+ 2023-05-10T14:46:33Z
+ gwatn flo.params.report.000
rec3nJaxOMLIKJoNY
- recrZz3gmzl97POA1
- gwatn atn.params.heatpumpwithbooststore.000
gwatn
- atn.params.heatpumpwithbooststore.000
+ recBqSlQdF17CgMPY
+ flo.params.report.000
Active
- recGSPzbsyt0nPa5B
- 2022-12-02T17:58:10Z
- rec3nJaxOMLIKJoNY
- recV0KuDFayH4qGIl
- gwatn g.node.instance.gt.000
- gwatn
- g.node.instance.gt.000
- Pending
-
-
- recGg8u1kDk0dEwT0
- 2023-01-12T18:24:04Z
- rec3nJaxOMLIKJoNY
- recDp8U1jLA9zeEx2
- gwatn base.g.node.gt.002
- gwatn
- base.g.node.gt.002
- Pending
-
-
- recGk4c4hm4Ng97pB
- 2022-12-27T15:43:20Z
- recvaW2RuHMh5mwwR
- recTZ13dEbwrKazkL
- newatn gt.dispatch.boolean.100
- newatn
- gt.dispatch.boolean.100
- Deprecated
+ recH5hDrPlIftrGaC
+ 2023-02-28T00:38:23Z
+
- recGpv7lXS5nQj5jR
- 2022-11-10T13:22:56Z
+ recHLWHk24N98yrP7
+ 2023-05-09T12:46:59Z
+ gwatn tavalidatorcert.algo.transfer.000
rec3nJaxOMLIKJoNY
- reczzIn3wGYrEKtbr
- gwatn flo.params.heatpumpwithbooststore.000
gwatn
- flo.params.heatpumpwithbooststore.000
+ rec1SFXYQUXElpeJ9
+ tavalidatorcert.algo.transfer.000
Active
-
- recH5hDrPlIftrGaC
- 2023-02-28T00:38:23Z
-
-
recHdlXqyTBvi9zRZ
2023-02-28T00:42:53Z
- recdu3DxzzmNH2eNq
- recEhzcpob8H7VuEF
scada spaceheat.node.gt.100
+ recdu3DxzzmNH2eNq
scada
+ recEhzcpob8H7VuEF
spaceheat.node.gt.100
Active
-
- recHxMHk1Q13AGxQT
- 2022-11-21T14:53:17Z
- rec2J6tKssVJwVmFd
- recDp8U1jLA9zeEx2
- gnr base.g.node.gt.002
- gnr
- base.g.node.gt.002
- Pending
-
recI3qMEZNOVje6qG
2022-11-30T19:46:25Z
- recN6489A2iI0CRXz
- rece2rn8uFKupSOZM
gworld debug.tc.reinitialize.time.000
+ recN6489A2iI0CRXz
gworld
+ rece2rn8uFKupSOZM
debug.tc.reinitialize.time.000
Pending
recIX7Ev6QVM4jtwT
2023-01-16T17:36:08Z
- rec3nJaxOMLIKJoNY
- recBEBBA0ctnOYQnC
gwatn join.dispatch.contract.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recBEBBA0ctnOYQnC
join.dispatch.contract.000
Active
recJJyBjjBHOe3FnE
2023-04-03T20:38:11Z
- rec5aZ8ud9lQDmlBu
- recEGOX7VX0bQ3Lvf
gwproto egauge.io.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recEGOX7VX0bQ3Lvf
egauge.io.000
Active
+
+ recJRYtEf5HsSuZBM
+ 2023-05-09T12:45:43Z
+ gwatn initial.tadeed.algo.create.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recO8OdobcISYms0B
+ initial.tadeed.algo.create.000
+ Active
+
recJWEoBrffJ7gSMB
2023-04-03T20:38:14Z
- rec5aZ8ud9lQDmlBu
- rec9dL2CYkm5s4OXX
gwproto egauge.register.config.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ rec9dL2CYkm5s4OXX
egauge.register.config.000
Active
recJbB2aEPqgo0e6D
2022-12-03T16:11:55Z
- rect1hCTZjieEGxgr
- reczVqlxJInFWonml
gridworks supervisor.container.gt.000
+ rect1hCTZjieEGxgr
gridworks
+ reczVqlxJInFWonml
supervisor.container.gt.000
- Pending
+ Active
recJnQIpCbM1mDUV6
2023-01-23T13:56:06Z
+ satn simplesim.snapshot.heatpumpwithbooststore.000
recHY8DLO7gBfWjtC
- recbAMyCyUX2bLKfz
- satn snapshot.heatpumpwithbooststore.000
satn
- snapshot.heatpumpwithbooststore.000
+ recbAMyCyUX2bLKfz
+ simplesim.snapshot.heatpumpwithbooststore.000
Pending
recJqKGuHpco4ynvW
2023-01-08T10:25:24Z
- rect1hCTZjieEGxgr
- rectayh08KEGGGcZc
gridworks gw.cert.id.000
+ rect1hCTZjieEGxgr
gridworks
+ rectayh08KEGGGcZc
gw.cert.id.000
Active
@@ -22440,16 +25657,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2022-11-10T13:22:55Z
-
- recKCYKKIRjtnFzdh
- 2023-01-08T10:25:40Z
- recXaQaXNNDyxIlT7
- rectayh08KEGGGcZc
- gnf gw.cert.id.000
- gnf
- gw.cert.id.000
- Active
-
recKI17ljnQcjf4Eg
2023-02-28T00:39:50Z
@@ -22463,12 +25670,12 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recKs7BOeqelLodrB
2022-11-21T02:50:13Z
- rec3nJaxOMLIKJoNY
- recacY2b5R2bByiAQ
gwatn accepted.bid.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recacY2b5R2bByiAQ
accepted.bid.000
- Pending
+ Active
recL9qJowwtPWcf4X
@@ -22478,20 +25685,20 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recLBYNcGvIrpb1nX
2022-11-17T16:39:07Z
- rec3nJaxOMLIKJoNY
- recLufl9jSdsMGsFR
gwatn market.slot.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recLufl9jSdsMGsFR
market.slot.000
- Pending
+ Active
recLbNfmaoYeiI8A9
2023-02-20T19:19:29Z
- rec5aZ8ud9lQDmlBu
- recDq5Oo6baJLVS5s
gwproto heartbeat.b.001
+ rec5aZ8ud9lQDmlBu
gwproto
+ recDq5Oo6baJLVS5s
heartbeat.b.001
Active
@@ -22500,129 +25707,93 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2023-02-20T14:31:21Z
-
- recLjbg3qWweCJCqx
- 2023-02-20T18:59:51Z
- recrnRklRws6Txbqr
- snapshot.spaceheat.000
- snapshot.spaceheat.000
- Active
-
-
- recM6At5qFrk4dsir
- 2022-11-07T18:58:07Z
- rec3nJaxOMLIKJoNY
- recbAMyCyUX2bLKfz
- gwatn snapshot.heatpumpwithbooststore.000
- gwatn
- snapshot.heatpumpwithbooststore.000
- Pending
-
recM8DeGDMOPo9ezd
2022-11-21T14:53:25Z
- rec2J6tKssVJwVmFd
- recazQb2vEXgbroHd
gnr basegnode.terminalasset.create.000
+ rec2J6tKssVJwVmFd
gnr
+ recazQb2vEXgbroHd
basegnode.terminalasset.create.000
Pending
recMWNrvkQjOIdOjQ
2022-12-27T15:56:53Z
- recdu3DxzzmNH2eNq
- reca2LF7P05qQmFJW
scada relay.cac.gt.000
+ recdu3DxzzmNH2eNq
scada
+ reca2LF7P05qQmFJW
relay.cac.gt.000
Active
-
- recMiJmpBdJWV7BmB
- 2022-12-28T13:17:02Z
- recdNEAMkZeOLS8Vo
- telemetry.snapshot.spaceheat.000
- telemetry.snapshot.spaceheat.000
- Active
-
recMvuzDPwhs257Bs
2022-11-16T19:17:40Z
- rec3E1mvlkD3mlc6K
- recDYjXYf8RbWmUFe
gwmm market.type.gt.000
+ rec3E1mvlkD3mlc6K
gwmm
+ recDYjXYf8RbWmUFe
market.type.gt.000
- Pending
+ Active
recOD1KrMbyUpliyI
2023-02-20T18:57:08Z
- rec5aZ8ud9lQDmlBu
- recQVDSRdSrYEHimS
gwproto gt.sh.cli.atn.cmd.110
+ rec5aZ8ud9lQDmlBu
gwproto
+ recQVDSRdSrYEHimS
gt.sh.cli.atn.cmd.110
Active
recOEHxBFFDNPACx1
2022-11-21T05:22:50Z
- recre1axpcL8VVuaQ
- recf5K0BP9qLabpdS
gwtime pause.time.000
+ recre1axpcL8VVuaQ
gwtime
+ recf5K0BP9qLabpdS
pause.time.000
Pending
-
- recOVsu1AQ1nyhMTN
- 2022-11-16T19:18:24Z
- rec3E1mvlkD3mlc6K
- rec7peRuDqMNa0vlW
- gwmm sim.timestep.000
- gwmm
- sim.timestep.000
- Pending
-
recOoCg1T2rOplTJT
2023-01-23T13:47:04Z
- recHY8DLO7gBfWjtC
+ gwatn atn.params.report.000
+ rec3nJaxOMLIKJoNY
+ gwatn
rec3fLb6b0gIeuCTO
- satn atn.params.report.heatpumpwithbooststore.000
- satn
- atn.params.report.heatpumpwithbooststore.000
- Pending
+ atn.params.report.000
+ Active
recOq6H5IW6gkmww6
2022-12-27T16:09:24Z
- recdu3DxzzmNH2eNq
- recQ1SzB1rQPnbRUR
scada gt.sensor.reporting.config.100
+ recdu3DxzzmNH2eNq
scada
+ recQ1SzB1rQPnbRUR
gt.sensor.reporting.config.100
Active
recPRrjd1GyqOVHIZ
2022-10-31T20:32:12Z
- recXaQaXNNDyxIlT7
- recMyDdiQjtfTMAP1
gnf old.tadeed.algo.return.000
+ recXaQaXNNDyxIlT7
gnf
+ recMyDdiQjtfTMAP1
old.tadeed.algo.return.000
Active
recPkFr8lDBRTXq08
2022-11-17T06:08:11Z
- rec3E1mvlkD3mlc6K
- rec3H5b04RB2vmYrk
gwmm market.price.000
+ rec3E1mvlkD3mlc6K
gwmm
+ rec3H5b04RB2vmYrk
market.price.000
Pending
@@ -22631,24 +25802,26 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2023-01-19T20:14:19Z
-
- recQDvrJAF4lWWp1l
- 2022-12-28T11:57:08Z
- recxNIfCRauFrb57o
- heartbeat.a.100
- heartbeat.a.100
- Pending
-
recQItJExa3ZiV3Jh
2022-11-04T17:59:59Z
- recXaQaXNNDyxIlT7
- recPy6SuizSerb3JG
gnf new.tadeed.send.000
+ recXaQaXNNDyxIlT7
gnf
+ recPy6SuizSerb3JG
new.tadeed.send.000
Active
+
+ recQZBqdNBFdbHYdk
+ 2023-04-30T18:10:59Z
+ gwatn atn.params.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ rec4yUxGiLZpqWQqb
+ atn.params.000
+ Active
+
recR0I6YDYPnvPeTV
2022-12-31T23:50:21Z
@@ -22657,14 +25830,13 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recRLpRImAACQhmSj
2022-11-21T14:53:28Z
- rec2J6tKssVJwVmFd
- recT4SSkJ18pz5YoZ
gnr basegnodes.broadcast.000
+ rec2J6tKssVJwVmFd
gnr
+ recT4SSkJ18pz5YoZ
basegnodes.broadcast.000
Pending
- itrlCl3rj8BpTDsN7/recRLpRImAACQhmSj
recRONwOhclu8u3Ef
2023-04-03T20:40:05Z
@@ -22675,6 +25847,16 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
resistive.heater.cac.gt.000
Active
+
+ recRis6YmxjqUGg0c
+ 2023-05-10T14:46:43Z
+ gwatn flo.params.brickstorageheater.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recfDQscmquO0odpo
+ flo.params.brickstorageheater.000
+ Active
+
recRlWqdLmqPKyUME
2023-02-28T00:40:30Z
@@ -22695,16 +25877,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gt.driver.booleanactuator.cmd.100
Active
-
- recSENoEtLHiKubGR
- 2022-12-27T16:04:36Z
- newatn telemetry.snapshot.spaceheat.000
- recvaW2RuHMh5mwwR
- newatn
- recdNEAMkZeOLS8Vo
- telemetry.snapshot.spaceheat.000
- Active
-
recSEzthAkF4L0on3
2022-12-27T15:56:31Z
@@ -22718,7 +25890,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwmm
recECSz5o4Z7NFjhG
atn.bid.001
- Pending
+ Active
recSNej4i6EwucKbV
@@ -22728,17 +25900,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recECSz5o4Z7NFjhG
atn.bid.001
- Pending
-
-
- recSxY4F5Ewetp9tW
- 2022-12-04T14:26:46Z
- gwatn super.starter.000
- rec3nJaxOMLIKJoNY
- gwatn
- recwp0F6Gdrg8qLwb
- super.starter.000
- Pending
+ Active
recTvm4cpEzdavk6J
@@ -22780,6 +25942,11 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
debug.tc.reinitialize.time.000
Pending
+
+ recVWqvgLlixOKWfr
+ 2023-06-28T14:36:02Z
+
+
recVyJz6EmMdwDjYy
2022-11-21T14:53:12Z
@@ -22797,26 +25964,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recvaW2RuHMh5mwwR
newatn
-
- recWaQL9LKI0BTilC
- 2023-01-12T15:39:31Z
- gwatn initial.tadeed.algo.create.000
- rec3nJaxOMLIKJoNY
- gwatn
- recO8OdobcISYms0B
- initial.tadeed.algo.create.000
- Active
-
-
- recWbhB62TTgTQUtI
- 2023-01-08T10:25:05Z
- gwatn gw.cert.id.000
- rec3nJaxOMLIKJoNY
- gwatn
- rectayh08KEGGGcZc
- gw.cert.id.000
- Active
-
+ itrhpLtc1ZflgJJpT/recWQ4qoe36jdvDDu
recWvvOaaukL2Ufvk
2023-02-20T15:06:08Z
@@ -22862,26 +26010,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
pipe.flow.sensor.component.gt.000
Active
-
- recYSfcJBIVxFIWCZ
- 2022-11-03T14:32:25Z
- gnf initial.tadeed.algo.optin.002
- recXaQaXNNDyxIlT7
- gnf
- recAWKkS0hcyws7O6
- initial.tadeed.algo.optin.002
- Active
-
-
- recYXSUnBW9DHXJWw
- 2023-01-13T21:19:41Z
- gwatn gt.dispatch.boolean.110
- rec3nJaxOMLIKJoNY
- gwatn
- reckTci9LVdsEt2WQ
- gt.dispatch.boolean.110
- Active
-
recYbrmOJrNmUO4pd
2022-12-27T15:56:34Z
@@ -22925,7 +26053,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recPxYqZlRvCFlD8p
sla.enter.000
- Pending
+ Active
recZiKOMXJ8UCneY9
@@ -22937,6 +26065,16 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
basegnode.terminalasset.create.000
Pending
+
+ recZsOKTlEbZPh3rD
+ 2023-06-25T20:46:39Z
+ gwatn atn.params.simpleresistivehydronic.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ rechp89wabr5kkqti
+ atn.params.simpleresistivehydronic.000
+ Pending
+
recaBlt54tM7DPjwR
2023-01-19T20:14:06Z
@@ -22945,14 +26083,14 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recF9KonH58AltK0K
basegnode.scada.create.000
- Pending
+ Active
recaT1SF8nRebYo7G
2023-01-10T21:22:48Z
- gridworks initial.tadeed.algo.create.000
- rect1hCTZjieEGxgr
- gridworks
+ gnf initial.tadeed.algo.create.000
+ recXaQaXNNDyxIlT7
+ gnf
recO8OdobcISYms0B
initial.tadeed.algo.create.000
Active
@@ -22965,7 +26103,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recd5K0XiAzHsj2Pw
latest.price.000
- Pending
+ Active
recbN7L6MH925xDby
@@ -22985,17 +26123,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwmm
recacY2b5R2bByiAQ
accepted.bid.000
- Pending
-
-
- recbuSNZg3DwAGxys
- 2022-11-29T14:04:36Z
- gworld supervisor.container.gt.000
- recN6489A2iI0CRXz
- gworld
- reczVqlxJInFWonml
- supervisor.container.gt.000
- Pending
+ Active
recc24iKFupSXBEgQ
@@ -23005,7 +26133,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gridworks
recV0KuDFayH4qGIl
g.node.instance.gt.000
- Pending
+ Active
reccBR6cClLjH0r2X
@@ -23025,7 +26153,17 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gnf
recPPTLAWZu08mD7s
terminalasset.certify.hack.000
- Pending
+ Active
+
+
+ reccIKvkAunTQR3uO
+ 2023-05-01T17:55:22Z
+ gwatn flo.params.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recvJ9OVpqVVP895H
+ flo.params.000
+ Active
reccfgO8fAUzT3J2W
@@ -23040,22 +26178,22 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
reccq15mpDgpXGekn
2022-10-31T20:31:08Z
- gnf base.g.node.gt.002
- recXaQaXNNDyxIlT7
- gnf
+ gridworks base.g.node.gt.002
+ rect1hCTZjieEGxgr
+ gridworks
recDp8U1jLA9zeEx2
base.g.node.gt.002
- Pending
+ Active
- reccuFJPlMliv6yW8
- 2022-11-08T18:54:46Z
- gwtime sim.timestep.000
- recre1axpcL8VVuaQ
- gwtime
- rec7peRuDqMNa0vlW
- sim.timestep.000
- Pending
+ recdAy68epnKcXjLL
+ 2023-05-09T12:45:47Z
+ gwatn initial.tadeed.algo.transfer.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recPf7eAhpge7kvO7
+ initial.tadeed.algo.transfer.000
+ Active
recdd2Y2jRIeGsjh1
@@ -23087,36 +26225,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
egauge.io.000
Active
-
- recfLzamGrtSF52cT
- 2022-11-29T14:04:44Z
- gwatn supervisor.container.gt.000
- rec3nJaxOMLIKJoNY
- gwatn
- reczVqlxJInFWonml
- supervisor.container.gt.000
- Pending
-
-
- recfdC5aUpHXgXtON
- 2022-11-29T13:23:38Z
- gnr g.node.gt.002
- rec2J6tKssVJwVmFd
- gnr
- rec8uTC7GK5qgXzg9
- g.node.gt.002
- Pending
-
-
- recfsDYNRW0af16Ol
- 2022-11-11T00:45:59Z
- gwatn atn.params.report.heatpumpwithbooststore.000
- rec3nJaxOMLIKJoNY
- gwatn
- rec3fLb6b0gIeuCTO
- atn.params.report.heatpumpwithbooststore.000
- Pending
-
recg17XBd52YMSt1Q
2023-03-09T18:52:48Z
@@ -23137,16 +26245,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
tatradingrights.algo.create.000
Active
-
- recg5ScMmCJuinnKL
- 2023-01-23T13:46:31Z
- satn join.dispatch.contract.000
- recHY8DLO7gBfWjtC
- satn
- recBEBBA0ctnOYQnC
- join.dispatch.contract.000
- Active
-
recgeWd2XE4WEhaqC
2023-03-09T19:00:36Z
@@ -23162,16 +26260,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
2023-03-09T19:00:35Z
-
- recgroRYrhO8lRT9B
- 2023-01-13T19:03:54Z
- gwatn heartbeat.b.001
- rec3nJaxOMLIKJoNY
- gwatn
- recDq5Oo6baJLVS5s
- heartbeat.b.001
- Active
-
rechF5mJ2nH8ZB9Vn
2022-12-27T16:00:48Z
@@ -23220,27 +26308,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gnf
recbGrdqqYGiwVYVK
tadeed.specs.hack.000
- Pending
-
-
- reciXeCa9g1WrIc02
- 2022-12-03T16:41:56Z
- gworld sim.timestep.000
- recN6489A2iI0CRXz
- gworld
- rec7peRuDqMNa0vlW
- sim.timestep.000
- Pending
-
-
- recianedmKDqWVh0O
- 2022-11-21T05:23:50Z
- gworld heartbeat.a.100
- recN6489A2iI0CRXz
- gworld
- recxNIfCRauFrb57o
- heartbeat.a.100
- Pending
+ Active
recjg4AvSyxIiItff
@@ -23252,6 +26320,16 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
pipe.flow.sensor.cac.gt.000
Active
+
+ recjmLBzSO8k29I9e
+ 2023-06-25T20:47:07Z
+ gwatn flo.params.simpleresistivehydronic.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ rec2EA0TG0Xexi6wg
+ flo.params.simpleresistivehydronic.000
+ Pending
+
recjvYtEfvMLsZJtV
2023-01-20T00:21:28Z
@@ -23260,7 +26338,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recbrp6V9qD6J1NHb
scada.cert.transfer.000
- Pending
+ Active
reckTKf3fzOuHTt7p
@@ -23280,7 +26358,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gridworks
recwp0F6Gdrg8qLwb
super.starter.000
- Pending
+ Active
recktn7mVOjp0WCql
@@ -23305,12 +26383,12 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recl5OGEwbCR9w3O7
2023-01-23T13:46:50Z
- satn atn.params.heatpumpwithbooststore.000
+ satn atn.params.heatpumpwithbooststore.001
recHY8DLO7gBfWjtC
satn
recrZz3gmzl97POA1
- atn.params.heatpumpwithbooststore.000
- Active
+ atn.params.heatpumpwithbooststore.001
+ Pending
recl5eLv36HJnILWJ
@@ -23330,7 +26408,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gnf
recF9KonH58AltK0K
basegnode.scada.create.000
- Pending
+ Active
recleupDcbcVTVRQ9
@@ -23340,7 +26418,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwmm
recLufl9jSdsMGsFR
market.slot.000
- Pending
+ Active
recly1p2PV8V88LXc
@@ -23352,6 +26430,11 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
multipurpose.sensor.component.gt.000
Active
+
+ recm7gEfKk0Irv8M0
+ 2023-05-10T14:46:31Z
+
+
recmM5fq13YDWN7oc
2022-11-30T19:48:30Z
@@ -23362,26 +26445,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
debug.tc.reinitialize.time.000
Pending
-
- recmXImdzdJvIhwRj
- 2022-11-06T19:58:32Z
- gwatn g.node.gt.002
- rec3nJaxOMLIKJoNY
- gwatn
- rec8uTC7GK5qgXzg9
- g.node.gt.002
- Pending
-
-
- recnBbGAlK4U8sngT
- 2022-11-08T18:54:37Z
- gwtime heartbeat.a.100
- recre1axpcL8VVuaQ
- gwtime
- recxNIfCRauFrb57o
- heartbeat.a.100
- Pending
-
recnQKx1KrJs2FsGa
2023-04-03T20:38:07Z
@@ -23411,25 +26474,15 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
Active
- recnvClBEU4WU5lOe
- 2023-01-12T15:40:11Z
- gwatn tavalidatorcert.algo.transfer.000
+ recntdJAXDry45FT5
+ 2023-05-01T17:55:31Z
+ gwatn simplesim.snapshot.brickstorageheater.000
rec3nJaxOMLIKJoNY
gwatn
- rec1SFXYQUXElpeJ9
- tavalidatorcert.algo.transfer.000
+ recm5UcVaAPAtrrFS
+ simplesim.snapshot.brickstorageheater.000
Active
-
- recnwesXAnDk54IJt
- 2022-12-03T16:07:00Z
- gworld g.node.gt.002
- recN6489A2iI0CRXz
- gworld
- rec8uTC7GK5qgXzg9
- g.node.gt.002
- Pending
-
reco01YhMk6anEqXo
2023-04-03T20:38:24Z
@@ -23503,17 +26556,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gridworks
rec7peRuDqMNa0vlW
sim.timestep.000
- Pending
-
-
- recrWS8cReivzRx92
- 2022-11-16T19:17:13Z
- gwmm g.node.gt.002
- rec3E1mvlkD3mlc6K
- gwmm
- rec8uTC7GK5qgXzg9
- g.node.gt.002
- Pending
+ Active
recrpoQF951bAlwS5
@@ -23523,7 +26566,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gnf
recbrp6V9qD6J1NHb
scada.cert.transfer.000
- Pending
+ Active
recs6Jf8auLqC5z1T
@@ -23533,7 +26576,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
rec5bEVzI1k5qcXYg
discoverycert.algo.create.000
- Pending
+ Active
recs8N9wVyonAKE8y
@@ -23545,16 +26588,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
basegnodes.get.000
Pending
-
- recsRFfTXSym7gX54
- 2022-10-31T20:32:30Z
- gnf initial.tadeed.algo.transfer.000
- recXaQaXNNDyxIlT7
- gnf
- recPf7eAhpge7kvO7
- initial.tadeed.algo.transfer.000
- Active
-
recsqbuLwrgitVmoY
2022-12-03T16:10:42Z
@@ -23563,7 +26596,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gridworks
recxNIfCRauFrb57o
heartbeat.a.100
- Pending
+ Active
recstn9IrZMpRLKja
@@ -23593,16 +26626,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gridworks
rec8uTC7GK5qgXzg9
g.node.gt.002
- Pending
-
-
- rect61DlS8mCPHnUL
- 2022-10-31T20:32:12Z
- gnf initial.tadeed.algo.create.000
- recXaQaXNNDyxIlT7
- gnf
- recO8OdobcISYms0B
- initial.tadeed.algo.create.000
Active
@@ -23613,9 +26636,8 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwatn
recDYjXYf8RbWmUFe
market.type.gt.000
- Pending
+ Active
- itrlCl3rj8BpTDsN7/rectD1KxAzqJILPfu
rectQ3NbkFd9nWXGO
2023-02-20T19:19:42Z
@@ -23651,16 +26673,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
pipe.flow.sensor.component.gt.000
Active
-
- recuetPMCxsDyU0R4
- 2022-11-07T20:23:32Z
- gwatn sim.timestep.000
- rec3nJaxOMLIKJoNY
- gwatn
- rec7peRuDqMNa0vlW
- sim.timestep.000
- Pending
-
recuqYXBpW9rcXrKC
2022-12-27T15:57:28Z
@@ -23671,16 +26683,6 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
resistive.heater.cac.gt.000
Active
-
- recurndoUQt30tVFv
- 2023-01-16T17:35:57Z
- gwatn dispatch.contract.confirmed.heatpumpwithbooststore.000
- rec3nJaxOMLIKJoNY
- gwatn
- rec3kcgktiHCBYpA4
- dispatch.contract.confirmed.heatpumpwithbooststore.000
- Pending
-
recuxGhKEXF5Edw2W
2022-12-27T16:03:06Z
@@ -23694,18 +26696,28 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recvFLJdLpTh7dGh1
2023-01-23T13:58:03Z
- satn flo.params.heatpumpwithbooststore.000
+ satn flo.params.heatpumpwithbooststore.001
recHY8DLO7gBfWjtC
satn
reczzIn3wGYrEKtbr
- flo.params.heatpumpwithbooststore.000
- Active
+ flo.params.heatpumpwithbooststore.001
+ Pending
recvNxIPhHtDgsYvO
2023-04-03T20:37:43Z
+
+ recvUI21ZPLimt9Tt
+ 2023-05-01T17:58:39Z
+ gwatn atn.params.brickstorageheater.000
+ rec3nJaxOMLIKJoNY
+ gwatn
+ recw5evm1WetKAzZG
+ atn.params.brickstorageheater.000
+ Active
+
recvpIR8rXsHiuLTP
2022-11-17T06:20:58Z
@@ -23734,27 +26746,7 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
gwmm
rechXkF4uGNAulje7
price.quantity.000
- Pending
-
-
- recx1ZcM9hO3GKRkp
- 2022-12-04T14:26:21Z
- gworld super.starter.000
- recN6489A2iI0CRXz
- gworld
- recwp0F6Gdrg8qLwb
- super.starter.000
- Pending
-
-
- recx5JlRHk2l9zzQK
- 2022-11-16T19:18:06Z
- gwmm ready.001
- rec3E1mvlkD3mlc6K
- gwmm
- recc2Km1jUViJqVeK
- ready.001
- Pending
+ Active
recx6S4XffM5RzxKe
@@ -23786,40 +26778,12 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
relay.component.gt.000
Active
-
- recxtr4LhX2Ixojmg
- 2022-10-31T20:34:49Z
- gnf tavalidatorcert.algo.transfer.000
- recXaQaXNNDyxIlT7
- gnf
- rec1SFXYQUXElpeJ9
- tavalidatorcert.algo.transfer.000
- Active
-
-
- recyENjaG4Mi1n27B
- 2022-11-21T15:21:50Z
- gnr heartbeat.a.100
- rec2J6tKssVJwVmFd
- gnr
- recxNIfCRauFrb57o
- heartbeat.a.100
- Pending
-
-
- recytzNgmiqkWb2di
- 2023-02-20T19:00:00Z
- telemetry.snapshot.spaceheat.000
- recdNEAMkZeOLS8Vo
- telemetry.snapshot.spaceheat.000
- Active
-
recyzaIpCoUsKpVbL
2023-01-10T21:23:01Z
- gridworks initial.tadeed.algo.optin.002
- rect1hCTZjieEGxgr
- gridworks
+ gnf initial.tadeed.algo.optin.002
+ recXaQaXNNDyxIlT7
+ gnf
recAWKkS0hcyws7O6
initial.tadeed.algo.optin.002
Active
@@ -23844,65 +26808,66 @@ AtomicMeteringNode can turn into AtomicTNode and vice versa
recGccwcLXmR4m4iY
2022-11-08T15:42:51Z
- supervisor
Supervisor
9
+ supervisor
recJ1rzF1GylIXAko
2022-08-12T12:35:19Z
- ctn
ConductorTopologyNode
5
+ ctn
recPUNulj7eEdYA8s
2022-08-12T13:14:01Z
- ws
WeatherService
12
+ ws
recPnosdjBpyg5lVp
2022-11-08T15:43:03Z
- recLAk1m0A1lP1qbp
- unknown
Unknown
0
+ unknown
+ recLAk1m0A1lP1qbp
recVQaDHYNET3Oim3
2022-08-12T13:22:52Z
Scada
- 10
recWWAN9rudjlUYst
rec0DJdNtBZJr6pOK
reckop7rgbzAi5Iqq
+ 10
recZEJx3FufFt3Q1I
2022-08-12T13:14:27Z
- world
World
7
+ world
recbVscuuzdxIlA0B
2022-08-12T13:13:55Z
- ps
PriceService
11
+ ps
recdOYiffWcSZEwPY
2022-11-08T15:42:09Z
- amn
AtomicMeteringNode
2
+ amn
recdR35p57kOOjduw
2022-08-12T13:14:17Z
+ TerminalAsset
A Terminal Asset is a code object with 3 primary attributes:
- a characterization of an electrical device connected to the electric grid with known electrical characteristics
- a pointer to a power and electricity meter that meters all the electrical use of that device and nothing more, which is
@@ -23913,49 +26878,48 @@ It is also a terminal node in the spanning tree graph of the copper tree encoded
The point of a Terminal Asset is to act as a trusted digital representation of a Transactive Energy Resource which in fact is the
characterized electrical device, using the meter described, at the location described.
- ta
- TerminalAsset
1
+ ta
recmGbxh6muY317U5
2022-08-12T12:35:19Z
- cable
InterconnectionComponent
6
+ cable
recrICKb8tuEXHz73
2022-08-12T12:35:19Z
- recVOa2DYOtTyarDA
- rec8jEHDtqmce7jqG
- recXoGg7l3r7ZG6Em
- atomictnode
AtomicTNode
- 3
recmwngNXL4YDMudy
recHA9kJVs2sT0Fkx
+ 3
+ atomictnode
+ rec8jEHDtqmce7jqG
+ recXoGg7l3r7ZG6Em
+ recVOa2DYOtTyarDA
rectxhMaA0VNuhHQ2
2022-08-12T13:14:07Z
- rec5d0mwIHTTqYjC8
- recLAk1m0A1lP1qbp
- recXoGg7l3r7ZG6Em
- timecoordinator
TimeCoordinator
8
+ timecoordinator
+ recLAk1m0A1lP1qbp
+ recXoGg7l3r7ZG6Em
+ rec5d0mwIHTTqYjC8
reczel9oTcNrweZ1X
2022-08-12T12:42:31Z
- recg6kZdbgxDUXAAh
- recU3mtc9M0U3uM3q
- recnCUFtuRaM9imRG
- rec8jEHDtqmce7jqG
- marketmaker
MarketMaker
4
+ marketmaker
+ rec8jEHDtqmce7jqG
+ recnCUFtuRaM9imRG
+ recU3mtc9M0U3uM3q
+ recg6kZdbgxDUXAAh
@@ -23964,44 +26928,44 @@ characterized electrical device, using the meter described, at the location desc
2022-11-08T16:21:31Z
rectxhMaA0VNuhHQ2
rec7peRuDqMNa0vlW
- timecoordinator broadcasts sim.timestep v000
- TimeCoordinator
timecoordinator
sim.timestep
000
+ timecoordinator broadcasts sim.timestep v000
+ TimeCoordinator
recVOa2DYOtTyarDA
2022-11-08T16:21:31Z
recrICKb8tuEXHz73
recbAMyCyUX2bLKfz
- atomictnode broadcasts snapshot.heatpumpwithbooststore v000
- AtomicTNode
atomictnode
- snapshot.heatpumpwithbooststore
+ simplesim.snapshot.heatpumpwithbooststore
000
+ atomictnode broadcasts simplesim.snapshot.heatpumpwithbooststore v000
+ AtomicTNode
recnCUFtuRaM9imRG
2022-11-08T16:21:31Z
reczel9oTcNrweZ1X
recd5K0XiAzHsj2Pw
- marketmaker broadcasts latest.price v000
- MarketMaker
marketmaker
latest.price
000
+ marketmaker broadcasts latest.price v000
+ MarketMaker
rec0DJdNtBZJr6pOK
2022-08-12T13:24:55Z
- recc5qGcZNQPmktbe
recVQaDHYNET3Oim3
- Scada/gs.pwr
+ recc5qGcZNQPmktbe
Scada
gs.pwr
+ Scada/gs.pwr
Active
100
gs.pwr.100
@@ -24009,11 +26973,11 @@ characterized electrical device, using the meter described, at the location desc
recHA9kJVs2sT0Fkx
2022-08-12T13:20:47Z
- receVdNEfIE1HLnwN
recrICKb8tuEXHz73
- AtomicTNode/gt.sh.cli.atn.cmd
+ receVdNEfIE1HLnwN
AtomicTNode
gt.sh.cli.atn.cmd
+ AtomicTNode/gt.sh.cli.atn.cmd
Active
110
gt.sh.cli.atn.cmd.110
@@ -24021,11 +26985,11 @@ characterized electrical device, using the meter described, at the location desc
recWWAN9rudjlUYst
2022-08-12T13:20:47Z
- recPnrf8TmF9WBgAm
recVQaDHYNET3Oim3
- Scada/snapshot.spaceheat
+ recPnrf8TmF9WBgAm
Scada
snapshot.spaceheat
+ Scada/snapshot.spaceheat
Active
000
snapshot.spaceheat.000
@@ -24033,11 +26997,11 @@ characterized electrical device, using the meter described, at the location desc
reckop7rgbzAi5Iqq
2022-08-12T13:25:08Z
- recbbx6wGZEfqP2Kn
recVQaDHYNET3Oim3
- Scada/gt.sh.status
+ recbbx6wGZEfqP2Kn
Scada
gt.sh.status
+ Scada/gt.sh.status
Active
110
gt.sh.status.110
@@ -24045,11 +27009,11 @@ characterized electrical device, using the meter described, at the location desc
recmwngNXL4YDMudy
2022-08-12T13:20:47Z
- rechZBY0G1JuNeEuG
recrICKb8tuEXHz73
- AtomicTNode/gt.dispatch.boolean
+ rechZBY0G1JuNeEuG
AtomicTNode
gt.dispatch.boolean
+ AtomicTNode/gt.dispatch.boolean
Active
110
gt.dispatch.boolean.110
@@ -24076,416 +27040,176 @@ characterized electrical device, using the meter described, at the location desc
rec8jEHDtqmce7jqG
2022-11-08T15:59:25Z
- reczel9oTcNrweZ1X
recrICKb8tuEXHz73
+ reczel9oTcNrweZ1X
+ atomictnode
+ marketmaker
atomictnode says to marketmaker
AtomicTNode
- atomictnode
MarketMaker
- marketmaker
recLAk1m0A1lP1qbp
2022-11-08T15:59:25Z
- recPnosdjBpyg5lVp
rectxhMaA0VNuhHQ2
+ recPnosdjBpyg5lVp
+ timecoordinator
+ unknown
timecoordinator says to unknown
TimeCoordinator
- timecoordinator
Unknown
- unknown
recXoGg7l3r7ZG6Em
2022-11-08T16:32:47Z
- rectxhMaA0VNuhHQ2
recrICKb8tuEXHz73
+ rectxhMaA0VNuhHQ2
recXGRmBBB6Pch163
+ atomictnode
+ timecoordinator
atomictnode says to timecoordinator
AtomicTNode
- atomictnode
TimeCoordinator
- timecoordinator
rec1AjUKBV2cKU0zq
2022-11-08T00:19:36Z
- rec4S3L3NZiPihbLi
- rec3nJaxOMLIKJoNY
gwatn distribution.tariff.000
+ rec3nJaxOMLIKJoNY
gwatn
+ rec4S3L3NZiPihbLi
distribution.tariff.000
distribution.tariff
-
- rec1OdnzZiXinfwfj
- 2022-12-27T15:34:34Z
- recomGYBJ9ldSsiNU
- recdu3DxzzmNH2eNq
- scada sh.node.role.000
- scada
- sh.node.role.000
- role
-
rec3OJ7Qnn65b8uug
2023-01-18T21:33:12Z
- rec75xMuw0SMkzjVc
- rect1hCTZjieEGxgr
gridworks market.price.unit.000
+ rect1hCTZjieEGxgr
gridworks
+ rec75xMuw0SMkzjVc
market.price.unit.000
market.price.unit
-
- rec3aEohPrsl8Z6M3
- 2022-11-29T13:53:22Z
- recdH9n0oS3nRRWON
- recN6489A2iI0CRXz
- gworld supervisor.container.status.000
- gworld
- supervisor.container.status.000
- supervisor.container.status
-
rec3kWy6dOMnMqXs8
2022-11-08T04:24:19Z
-
- rec3lKyK0qukOmAfT
- 2022-11-29T13:48:40Z
- recWX07Mlzf8djb6q
- recN6489A2iI0CRXz
- gworld gni.status.000
- gworld
- gni.status.000
- gni.status
-
-
- rec3tGkwCYPLdVaio
- 2022-11-29T13:53:33Z
- recdH9n0oS3nRRWON
- rec3nJaxOMLIKJoNY
- gwatn supervisor.container.status.000
- gwatn
- supervisor.container.status.000
- supervisor.container.status
-
rec4ZV16eScgcdZAE
2023-04-03T23:40:37Z
- recLQWqTvGwSz2GcN
+ gwproto spaceheat.make.model.001
rec5aZ8ud9lQDmlBu
- gwproto spaceheat.make.model.000
gwproto
- spaceheat.make.model.000
+ recLQWqTvGwSz2GcN
+ spaceheat.make.model.001
make.model
-
- rec4dIrr33GsfXGEi
- 2022-11-09T19:39:58Z
- recPvHsXzCenxLa7v
- recre1axpcL8VVuaQ
- gwtime universe.type.000
- gwtime
- universe.type.000
- universe.type
-
rec51fsTRCxOb3OK1
2023-01-24T18:00:07Z
-
- rec6kz3pyxVALoFsu
- 2022-12-02T17:47:25Z
- recgq98LIAwVwgALk
- rec3nJaxOMLIKJoNY
- gwatn atn.spaceheat.strategy.name.000
- gwatn
- atn.spaceheat.strategy.name.000
- atn.spaceheat.strategy.name
-
-
- rec6qUrXNHuchMTRb
- 2023-01-12T15:35:47Z
- rec5HXPeyp3jic6FV
- rec3nJaxOMLIKJoNY
- gwatn core.g.node.role.000
- gwatn
- core.g.node.role.000
- core.g.node.role
-
-
- rec7riMLKDhllLHJF
- 2022-11-21T07:38:28Z
- recPvHsXzCenxLa7v
- recXaQaXNNDyxIlT7
- gnf universe.type.000
- gnf
- universe.type.000
- universe.type
-
rec7umpHOe1zBQgmH
2022-12-03T16:09:29Z
- reclaO4DqpDmwPOIC
- rect1hCTZjieEGxgr
gridworks message.category.symbol.000
+ rect1hCTZjieEGxgr
gridworks
+ reclaO4DqpDmwPOIC
message.category.symbol.000
message.category.symbol
-
- rec8Ahq8RdNkgPzQN
- 2022-10-31T18:31:02Z
- recqx4EqT3OFtnxTG
- recXaQaXNNDyxIlT7
- gnf g.node.status.100
- gnf
- g.node.status.100
- g.node.status
-
-
- rec8B7NqLQHwAZjcw
- 2022-11-08T04:01:06Z
- rec75xMuw0SMkzjVc
- rec3nJaxOMLIKJoNY
- gwatn market.price.unit.000
- gwatn
- market.price.unit.000
- market.price.unit
-
rec8OQN6hn0y5lwSm
2022-12-27T18:26:22Z
-
- rec8YFBXCvMbO7Fnc
- 2022-11-16T19:40:48Z
- recZmZP13YV9Rmbnw
- rec3E1mvlkD3mlc6K
- gwmm market.type.name.000
- gwmm
- market.type.name.000
- market.type.name
-
-
- rec9HtmIiTasYUNy0
- 2022-11-16T19:20:54Z
- rec7pzii3dy9m3jCe
- rec3E1mvlkD3mlc6K
- gwmm message.category.000
- gwmm
- message.category.000
- message.category
-
-
- rec9bDgohSOum1o1F
- 2022-11-08T22:25:05Z
- reclaO4DqpDmwPOIC
- recre1axpcL8VVuaQ
- gwtime message.category.symbol.000
- gwtime
- message.category.symbol.000
- message.category.symbol
-
rec9izwc0IQmbp6gf
2022-11-08T00:19:32Z
- recEyU9EKDtM3bD18
- rec3nJaxOMLIKJoNY
gwatn recognized.temperature.unit.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recEyU9EKDtM3bD18
recognized.temperature.unit.000
recognized.temperature.unit
-
- recA0Q62wqmXkzSse
- 2022-11-21T15:04:10Z
- recZB6uJDEaCzvTZX
- rec2J6tKssVJwVmFd
- gnr g.node.role.000
- gnr
- g.node.role.000
- g.node.role
-
-
- recCEQgAR8tPu4mgu
- 2022-11-21T14:51:31Z
- rec5HXPeyp3jic6FV
- rec2J6tKssVJwVmFd
- gnr core.g.node.role.000
- gnr
- core.g.node.role.000
- core.g.node.role
-
-
- recDa8t2QVwfTLzpo
- 2022-11-06T16:52:31Z
- recLQWqTvGwSz2GcN
- rec3nJaxOMLIKJoNY
- gwatn spaceheat.make.model.000
- gwatn
- spaceheat.make.model.000
- make.model
-
recE24bIOzJ4vCtXl
2023-04-03T23:40:29Z
- rec7Ck8y72m0NytYa
- rec5aZ8ud9lQDmlBu
gwproto local.comm.interface.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ rec7Ck8y72m0NytYa
local.comm.interface.000
local.comm.interface
recEAaklKzWgLdKio
2023-01-18T21:33:35Z
- recA15Ak50x6bNMx1
- rect1hCTZjieEGxgr
gridworks recognized.currency.unit.000
+ rect1hCTZjieEGxgr
gridworks
+ recA15Ak50x6bNMx1
recognized.currency.unit.000
recognized.currency.unit
-
- recEIu8DZMwf0J7za
- 2023-01-23T13:49:46Z
- recomGYBJ9ldSsiNU
- recHY8DLO7gBfWjtC
- satn sh.node.role.000
- satn
- sh.node.role.000
- role
-
recFcFz3hJ9GJbVDh
2022-12-03T16:08:24Z
- recZB6uJDEaCzvTZX
- rect1hCTZjieEGxgr
gridworks g.node.role.000
+ rect1hCTZjieEGxgr
gridworks
+ recZB6uJDEaCzvTZX
g.node.role.000
g.node.role
- recGcb0eH9z0Np8jd
- 2022-11-09T19:40:05Z
- recPvHsXzCenxLa7v
- rec3nJaxOMLIKJoNY
- gwatn universe.type.000
- gwatn
- universe.type.000
- universe.type
-
-
- recGhJkY0Egp6jCRt
- 2022-11-16T19:20:29Z
- recounhEj97w5SfDm
- rec3E1mvlkD3mlc6K
- gwmm market.quantity.unit.000
- gwmm
- market.quantity.unit.000
- market.quantity.unit
-
-
- recISSyBDybwCsc9S
- 2022-11-16T19:21:02Z
- reclaO4DqpDmwPOIC
- rec3E1mvlkD3mlc6K
- gwmm message.category.symbol.000
- gwmm
- message.category.symbol.000
- message.category.symbol
-
-
- recIqNIyjBeIu6oTe
- 2022-11-21T06:33:01Z
-
+ recIqNIyjBeIu6oTe
+ 2022-11-21T06:33:01Z
+
recIyZCjcgxuH7wbv
2022-12-03T16:08:42Z
- recqx4EqT3OFtnxTG
- rect1hCTZjieEGxgr
gridworks g.node.status.100
+ rect1hCTZjieEGxgr
gridworks
+ recqx4EqT3OFtnxTG
g.node.status.100
g.node.status
-
- recJX40Wt0rcWDFET
- 2022-11-08T04:24:21Z
- recZmZP13YV9Rmbnw
- rec3nJaxOMLIKJoNY
- gwatn market.type.name.000
- gwatn
- market.type.name.000
- market.type.name
-
-
- recKJi6uA9s9Sp8XM
- 2023-01-23T13:49:09Z
- recgq98LIAwVwgALk
- recHY8DLO7gBfWjtC
- satn atn.spaceheat.strategy.name.000
- satn
- atn.spaceheat.strategy.name.000
- atn.spaceheat.strategy.name
-
recLRAc86dtBYsogW
2023-01-12T15:35:30Z
- rec5HXPeyp3jic6FV
- rect1hCTZjieEGxgr
gridworks core.g.node.role.000
+ rect1hCTZjieEGxgr
gridworks
+ rec5HXPeyp3jic6FV
core.g.node.role.000
core.g.node.role
-
- recLgjTEHK9NGb3nq
- 2022-11-21T06:33:17Z
- reclaO4DqpDmwPOIC
- recN6489A2iI0CRXz
- gworld message.category.symbol.000
- gworld
- message.category.symbol.000
- message.category.symbol
-
-
- recLjDrJSnNnwWD54
- 2022-11-06T16:51:39Z
- recc1W1unmzowrKX9
- rec3nJaxOMLIKJoNY
- gwatn spaceheat.unit.000
- gwatn
- spaceheat.unit.000
- unit
-
recLromkpguogn9x9
2022-11-08T00:19:17Z
+ satn sh.dist.pump.feedback.model.000
+ recHY8DLO7gBfWjtC
+ satn
rec57bh9xoIxLUHjY
- rec3nJaxOMLIKJoNY
- gwatn emitter.pump.feedback.model.000
- gwatn
- emitter.pump.feedback.model.000
- emitter.pump.feedback.model
+ sh.dist.pump.feedback.model.000
+ sh.dist.pump.feedback.model
recM4mFl7a9iTxdrm
2022-12-27T18:07:03Z
- rec7Ck8y72m0NytYa
- recdu3DxzzmNH2eNq
scada local.comm.interface.000
+ recdu3DxzzmNH2eNq
scada
+ rec7Ck8y72m0NytYa
local.comm.interface.000
local.comm.interface
@@ -24497,590 +27221,202 @@ characterized electrical device, using the meter described, at the location desc
recNZQe0b4tOcjM0W
2022-12-03T16:09:53Z
- recPvHsXzCenxLa7v
- rect1hCTZjieEGxgr
gridworks universe.type.000
+ rect1hCTZjieEGxgr
gridworks
+ recPvHsXzCenxLa7v
universe.type.000
universe.type
recNmqSEf7jl4AsqG
2022-12-03T16:09:20Z
- rec7pzii3dy9m3jCe
- rect1hCTZjieEGxgr
gridworks message.category.000
+ rect1hCTZjieEGxgr
gridworks
+ rec7pzii3dy9m3jCe
message.category.000
message.category
- recOCu54C8gBud4Rp
- 2022-11-06T23:56:53Z
- recqx4EqT3OFtnxTG
- rec3nJaxOMLIKJoNY
- gwatn g.node.status.100
- gwatn
- g.node.status.100
- g.node.status
-
-
- recRncRvdA6tysnAt
- 2022-11-06T16:52:21Z
- rec2HyLffy6QK9QId
- rec3nJaxOMLIKJoNY
- gwatn spaceheat.telemetry.name.000
- gwatn
- spaceheat.telemetry.name.000
- telemetry.name
-
-
- recT6IKeUqmmI7L84
- 2022-11-21T14:52:17Z
- rec7pzii3dy9m3jCe
- rec2J6tKssVJwVmFd
- gnr message.category.000
- gnr
- message.category.000
- message.category
+ recSXyujnroySodqB
+ 2023-06-27T15:22:46Z
+ gwprice energy.supply.type.000
+ recVsPBZNyq2U6Fmz
+ gwprice
+ recf9ZTshqRu81HZo
+ energy.supply.type.000
+ energy.supply.type
recTsc0Fiab7VGVWX
2023-04-03T23:40:21Z
- recQeMNisJZjsYXTl
+ gwproto sh.actor.class.000
rec5aZ8ud9lQDmlBu
- gwproto sh.actor.class.001
gwproto
- sh.actor.class.001
+ recQeMNisJZjsYXTl
+ sh.actor.class.000
actor.class
- recTt38mXlQtJdywQ
- 2022-11-16T19:19:58Z
- recqx4EqT3OFtnxTG
- rec3E1mvlkD3mlc6K
- gwmm g.node.status.100
- gwmm
- g.node.status.100
- g.node.status
+ recUJdyAtLmKAZB4S
+ 2023-06-27T15:22:42Z
+ gwprice distribution.tariff.000
+ recVsPBZNyq2U6Fmz
+ gwprice
+ rec4S3L3NZiPihbLi
+ distribution.tariff.000
+ distribution.tariff
recUKBtypJxJFHldg
2022-11-08T00:19:22Z
- recX0A9nSriRUvl9n
- rec3nJaxOMLIKJoNY
- gwatn mixing.valve.feedback.model.000
- gwatn
- mixing.valve.feedback.model.000
- mixing.valve.feedback.model
-
-
- recUiiAdTTH4zmBfJ
- 2022-11-21T14:51:44Z
- recqx4EqT3OFtnxTG
- rec2J6tKssVJwVmFd
- gnr g.node.status.100
- gnr
- g.node.status.100
- g.node.status
-
-
- recV83OsyQx8GqHV8
- 2023-01-23T13:50:11Z
- recc1W1unmzowrKX9
- recHY8DLO7gBfWjtC
- satn spaceheat.unit.000
- satn
- spaceheat.unit.000
- unit
-
-
- recV9jP0nFcRCDphV
- 2022-11-21T06:33:15Z
- rec7pzii3dy9m3jCe
- recN6489A2iI0CRXz
- gworld message.category.000
- gworld
- message.category.000
- message.category
-
-
- recVdbIqzBFT6Qpsd
- 2022-11-07T22:58:59Z
- recA15Ak50x6bNMx1
- recognized.currency.unit.000
- recognized.currency.unit.000
- recognized.currency.unit
-
-
- recVpliEuu2jtKKUj
- 2023-01-23T13:49:37Z
- recLQWqTvGwSz2GcN
+ satn sh.mixing.valve.feedback.model.000
recHY8DLO7gBfWjtC
- satn spaceheat.make.model.000
satn
- spaceheat.make.model.000
- make.model
-
-
- recWkTXMymydxR5UX
- 2022-11-21T06:33:11Z
- recqx4EqT3OFtnxTG
- recN6489A2iI0CRXz
- gworld g.node.status.100
- gworld
- g.node.status.100
- g.node.status
-
-
- recWrjAGRucT1hiRq
- 2022-12-27T15:34:49Z
- recc1W1unmzowrKX9
- recdu3DxzzmNH2eNq
- scada spaceheat.unit.000
- scada
- spaceheat.unit.000
- unit
-
-
- recX5VXrxWR81za5J
- 2022-10-31T18:31:02Z
- rec5HXPeyp3jic6FV
- recXaQaXNNDyxIlT7
- gnf core.g.node.role.000
- gnf
- core.g.node.role.000
- core.g.node.role
-
-
- recZKMG3hALXcWQuc
- 2022-11-21T14:52:36Z
- recPvHsXzCenxLa7v
- rec2J6tKssVJwVmFd
- gnr universe.type.000
- gnr
- universe.type.000
- universe.type
-
-
- recZKMmBxWot2RY5F
- 2022-11-08T18:54:07Z
- recqx4EqT3OFtnxTG
- recre1axpcL8VVuaQ
- gwtime g.node.status.100
- gwtime
- g.node.status.100
- g.node.status
-
-
- recaR5EUku9iF2rKc
- 2022-12-27T18:07:13Z
- rec7Ck8y72m0NytYa
- rec3nJaxOMLIKJoNY
- gwatn local.comm.interface.000
- gwatn
- local.comm.interface.000
- local.comm.interface
-
-
- recaWGhVScY6KXA44
- 2022-11-08T22:24:57Z
- rec7pzii3dy9m3jCe
- rec3nJaxOMLIKJoNY
- gwatn message.category.000
- gwatn
- message.category.000
- message.category
-
-
- recaaXWI5JSINnLOx
- 2022-11-08T22:24:49Z
- rec7pzii3dy9m3jCe
- recre1axpcL8VVuaQ
- gwtime message.category.000
- gwtime
- message.category.000
- message.category
+ recX0A9nSriRUvl9n
+ sh.mixing.valve.feedback.model.000
+ sh.mixing.valve.feedback.model
recdOkYhGUBlj7FBT
2022-12-03T16:09:03Z
- recWX07Mlzf8djb6q
- rect1hCTZjieEGxgr
gridworks gni.status.000
+ rect1hCTZjieEGxgr
gridworks
+ recWX07Mlzf8djb6q
gni.status.000
gni.status
recdz6xbHSpZlJDxe
2023-01-06T03:09:38Z
- recCQyaQ1Oq0MlT20
- rect1hCTZjieEGxgr
gridworks algo.cert.type.000
+ rect1hCTZjieEGxgr
gridworks
+ recCQyaQ1Oq0MlT20
algo.cert.type.000
algo.cert.type
receRjseORDOQyD4F
2023-04-03T23:40:45Z
- recomGYBJ9ldSsiNU
- rec5aZ8ud9lQDmlBu
gwproto sh.node.role.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recomGYBJ9ldSsiNU
sh.node.role.000
role
-
- recesY3Van2qeFjV0
- 2022-11-21T07:38:34Z
- reclaO4DqpDmwPOIC
- recXaQaXNNDyxIlT7
- gnf message.category.symbol.000
- gnf
- message.category.symbol.000
- message.category.symbol
-
-
- recf2bjSGV3D1Ml5i
- 2022-11-08T22:25:12Z
- reclaO4DqpDmwPOIC
- rec3nJaxOMLIKJoNY
- gwatn message.category.symbol.000
- gwatn
- message.category.symbol.000
- message.category.symbol
-
-
- recf9z2cLhcr9up3s
- 2022-12-03T16:23:30Z
- recyOOpe9zHor9FIY
- recN6489A2iI0CRXz
- gworld strategy.name.000
- gworld
- strategy.name.000
- strategy.name
-
-
- recfChwtbhGYGwQAx
- 2022-11-21T06:33:20Z
- recPvHsXzCenxLa7v
- recN6489A2iI0CRXz
- gworld universe.type.000
- gworld
- universe.type.000
- universe.type
-
recfKJvRoPrS32Ima
2022-12-03T16:23:41Z
- recyOOpe9zHor9FIY
+ gridworks strategy.name.001
rect1hCTZjieEGxgr
- gridworks strategy.name.000
gridworks
- strategy.name.000
+ recyOOpe9zHor9FIY
+ strategy.name.001
strategy.name
-
- recfXjHuQMUL0RQ7H
- 2022-12-27T15:33:04Z
- recLQWqTvGwSz2GcN
- recdu3DxzzmNH2eNq
- scada spaceheat.make.model.000
- scada
- spaceheat.make.model.000
- make.model
-
-
- recfpS2uOHAcfWGdN
- 2023-01-23T13:49:57Z
- rec2HyLffy6QK9QId
- recHY8DLO7gBfWjtC
- satn spaceheat.telemetry.name.000
- satn
- spaceheat.telemetry.name.000
- telemetry.name
-
recfpgcDj8PWcwGZe
2023-04-03T23:40:59Z
- recc1W1unmzowrKX9
- rec5aZ8ud9lQDmlBu
gwproto spaceheat.unit.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ recc1W1unmzowrKX9
spaceheat.unit.000
unit
- recg4YcVJnk1bG3PL
- 2023-01-23T13:49:24Z
- recQeMNisJZjsYXTl
- recHY8DLO7gBfWjtC
- satn sh.actor.class.001
- satn
- sh.actor.class.001
- actor.class
-
-
- rechPYPk940Fi7Uud
- 2022-11-07T22:59:39Z
- recA15Ak50x6bNMx1
- rec3nJaxOMLIKJoNY
- gwatn recognized.currency.unit.000
- gwatn
- recognized.currency.unit.000
- recognized.currency.unit
-
-
- recihvUJVR6oEfEap
- 2022-11-16T19:21:10Z
- recPvHsXzCenxLa7v
- rec3E1mvlkD3mlc6K
- gwmm universe.type.000
- gwmm
- universe.type.000
- universe.type
-
-
- recjOCdfp4V6Ugqfs
- 2022-11-21T07:38:25Z
- recZB6uJDEaCzvTZX
- recXaQaXNNDyxIlT7
- gnf g.node.role.000
- gnf
- g.node.role.000
- g.node.role
-
-
- reck0WsxFdPOoe5ZM
- 2022-11-16T19:20:08Z
- recA15Ak50x6bNMx1
- rec3E1mvlkD3mlc6K
- gwmm recognized.currency.unit.000
- gwmm
- recognized.currency.unit.000
- recognized.currency.unit
-
-
- reckI8CRWIPcmOTrC
- 2022-11-29T13:48:59Z
- recWX07Mlzf8djb6q
+ recg48Xi06BYdm33C
+ 2023-05-12T13:32:04Z
+ gwatn recognized.irradiance.type.000
rec3nJaxOMLIKJoNY
- gwatn gni.status.000
gwatn
- gni.status.000
- gni.status
+ recM2pM6KPgGbqEe2
+ recognized.irradiance.type.000
+ recognized.irradiance.type
reclDWkXtj41G28wW
2022-11-08T00:19:28Z
- recf9ZTshqRu81HZo
- rec3nJaxOMLIKJoNY
gwatn energy.supply.type.000
+ rec3nJaxOMLIKJoNY
gwatn
+ recf9ZTshqRu81HZo
energy.supply.type.000
energy.supply.type
-
- recmNuAp0alwhubds
- 2022-11-16T19:20:37Z
- rec75xMuw0SMkzjVc
- rec3E1mvlkD3mlc6K
- gwmm market.price.unit.000
- gwmm
- market.price.unit.000
- market.price.unit
-
recmacM072NkqkOW1
2022-11-21T14:51:59Z
- rechRk6DjahLATrOI
- rec2J6tKssVJwVmFd
gnr registry.g.node.role.000
+ rec2J6tKssVJwVmFd
gnr
+ rechRk6DjahLATrOI
registry.g.node.role.000
registry.g.node.role
-
- recpKd5HOmAf37QY5
- 2022-11-08T18:53:58Z
- recZB6uJDEaCzvTZX
- recre1axpcL8VVuaQ
- gwtime g.node.role.000
- gwtime
- g.node.role.000
- g.node.role
-
-
- recpwlwbrp4FbfXbU
- 2022-12-03T15:14:02Z
- recyOOpe9zHor9FIY
- rec3nJaxOMLIKJoNY
- gwatn strategy.name.000
- gwatn
- strategy.name.000
- strategy.name
-
-
- recqMWuADrFZz8VgP
- 2022-12-27T15:34:19Z
- recomGYBJ9ldSsiNU
- rec3nJaxOMLIKJoNY
- gwatn sh.node.role.000
- gwatn
- sh.node.role.000
- role
-
recqt9zKlCbThWViA
2023-02-28T00:30:34Z
- rec2HyLffy6QK9QId
- rec5aZ8ud9lQDmlBu
gwproto spaceheat.telemetry.name.000
+ rec5aZ8ud9lQDmlBu
gwproto
+ rec2HyLffy6QK9QId
spaceheat.telemetry.name.000
telemetry.name
recr9TyWTi2Ct7iKH
2022-10-31T18:31:02Z
- rechRk6DjahLATrOI
- recXaQaXNNDyxIlT7
gnf registry.g.node.role.000
+ recXaQaXNNDyxIlT7
gnf
+ rechRk6DjahLATrOI
registry.g.node.role.000
registry.g.node.role
-
- recsHlBETSCTId6TE
- 2023-01-06T03:10:12Z
- recCQyaQ1Oq0MlT20
- rec3nJaxOMLIKJoNY
- gwatn algo.cert.type.000
- gwatn
- algo.cert.type.000
- algo.cert.type
-
-
- recsRpVdgR7q3fCML
- 2022-11-21T14:52:25Z
- reclaO4DqpDmwPOIC
- rec2J6tKssVJwVmFd
- gnr message.category.symbol.000
- gnr
- message.category.symbol.000
- message.category.symbol
-
-
- rect0T4CM09fP7g2t
- 2022-11-16T19:19:39Z
- recZB6uJDEaCzvTZX
- rec3E1mvlkD3mlc6K
- gwmm g.node.role.000
- gwmm
- g.node.role.000
- g.node.role
-
rectGOQvuxBQ1f8LZ
2023-01-18T21:33:26Z
- recounhEj97w5SfDm
- rect1hCTZjieEGxgr
gridworks market.quantity.unit.000
+ rect1hCTZjieEGxgr
gridworks
+ recounhEj97w5SfDm
market.quantity.unit.000
market.quantity.unit
rectmy7sSSaRVzm4x
2023-01-12T17:08:39Z
- recZmZP13YV9Rmbnw
- rect1hCTZjieEGxgr
gridworks market.type.name.000
+ rect1hCTZjieEGxgr
gridworks
+ recZmZP13YV9Rmbnw
market.type.name.000
market.type.name
recu25eXE4ralXooT
2022-12-27T15:32:46Z
- recQeMNisJZjsYXTl
+ scada sh.actor.class.000
recdu3DxzzmNH2eNq
- scada sh.actor.class.001
scada
- sh.actor.class.001
- actor.class
-
-
- recvmdMYmWLhBwujD
- 2023-01-06T03:10:03Z
- recCQyaQ1Oq0MlT20
- recXaQaXNNDyxIlT7
- gnf algo.cert.type.000
- gnf
- algo.cert.type.000
- algo.cert.type
-
-
- recxchS4k09ivH7vN
- 2022-11-21T06:33:08Z
- recZB6uJDEaCzvTZX
- recN6489A2iI0CRXz
- gworld g.node.role.000
- gworld
- g.node.role.000
- g.node.role
-
-
- recy37qKrW01vTt7S
- 2022-11-08T04:00:56Z
- recounhEj97w5SfDm
- rec3nJaxOMLIKJoNY
- gwatn market.quantity.unit.000
- gwatn
- market.quantity.unit.000
- market.quantity.unit
-
-
- recyDSPjw1NYVGiOH
- 2022-12-27T15:32:02Z
recQeMNisJZjsYXTl
- rec3nJaxOMLIKJoNY
- gwatn sh.actor.class.001
- gwatn
- sh.actor.class.001
+ sh.actor.class.000
actor.class
reczQlMuDvW3WO9oA
2022-12-03T16:09:44Z
- recdH9n0oS3nRRWON
- rect1hCTZjieEGxgr
gridworks supervisor.container.status.000
+ rect1hCTZjieEGxgr
gridworks
+ recdH9n0oS3nRRWON
supervisor.container.status.000
supervisor.container.status
-
- reczplFItDku5AaRa
- 2022-11-06T16:53:01Z
- recZB6uJDEaCzvTZX
- rec3nJaxOMLIKJoNY
- gwatn g.node.role.000
- gwatn
- g.node.role.000
- g.node.role
-
-
- reczs2uW5OOP1dIaw
- 2022-11-21T07:38:38Z
- rec7pzii3dy9m3jCe
- recXaQaXNNDyxIlT7
- gnf message.category.000
- gnf
- message.category.000
- message.category
-
diff --git a/CodeGenerationTools/GridworksCore/SSoT/Entities.json b/CodeGenerationTools/GridworksCore/SSoT/Entities.json
index cc2bafb2..09dd9e5d 100644
--- a/CodeGenerationTools/GridworksCore/SSoT/Entities.json
+++ b/CodeGenerationTools/GridworksCore/SSoT/Entities.json
@@ -64,7 +64,8 @@
"recsCmQ5g1sy3MKx6",
"recuhuEDQn3NKBJJf",
"rec2djRgncV4Fpy3U",
- "recnMa5xJD7jb3ier"
+ "recnMa5xJD7jb3ier",
+ "recNZ1bh0Ysk48HHN"
],
"TableGroup": "General",
"ToName": "SchemaRoot"
@@ -275,7 +276,9 @@
"rec4UQz0uQGTOXP7v",
"recjBcWHaD0txkThT",
"recPChJ4Z0yYiZUOA",
- "recCc4GQB5icU2hYH"
+ "recCc4GQB5icU2hYH",
+ "recnHjL5hWmhS57nY",
+ "recHpojco9I09N58x"
],
"TableGroup": "General",
"ToName": "Schema"
diff --git a/CodeGenerationTools/GridworksCore/aicapture.json b/CodeGenerationTools/GridworksCore/aicapture.json
index 8f92a551..ae7aa701 100644
--- a/CodeGenerationTools/GridworksCore/aicapture.json
+++ b/CodeGenerationTools/GridworksCore/aicapture.json
@@ -144,17 +144,6 @@
"RelativePath": "/Types/Docs/ApiDocs/Toc",
"CommandLine": "codee42/xml-xslt-transform -i ../../../../SSoT/Airtable.xml -i DeriveToc.xslt -i ../../../../GnfCommon.xslt -i ../../../../ODXML/DataSchema.odxml -w 120000"
},
- {
- "MatchedTranspiler": {
- "TranspilerId": "4b713f03-1d9f-42f2-b02f-e3cdbd237bb3",
- "Name": "XmlXsltTransform",
- "Description": "Given an Xml and Xslt file, will process and \"split\" a resulting fileset."
- },
- "ProjectTranspilerId": "a2b6bc61-44d1-4bcd-b35c-fef614baf114",
- "Name": "XmlXsltTransform",
- "RelativePath": "/Types/ApiUtil",
- "CommandLine": "codee42/xml-xslt-transform -i ../../SSoT/Airtable.xml -i DeriveApiUtil.xslt -i ../../GnfCommon.xslt -i ../../ODXML/DataSchema.odxml -w 120000"
- },
{
"MatchedTranspiler": {
"TranspilerId": "4b713f03-1d9f-42f2-b02f-e3cdbd237bb3",
diff --git a/poetry.lock b/poetry.lock
index c1a9d33b..149222a2 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1378,6 +1378,89 @@ files = [
{file = "msgpack-1.0.5.tar.gz", hash = "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c"},
]
+[[package]]
+name = "multidict"
+version = "6.0.4"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"},
+ {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"},
+ {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"},
+ {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"},
+ {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"},
+ {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"},
+ {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"},
+ {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"},
+ {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"},
+ {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"},
+ {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"},
+ {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"},
+ {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"},
+ {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"},
+ {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"},
+ {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"},
+ {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"},
+ {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"},
+ {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"},
+ {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"},
+ {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"},
+ {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"},
+ {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"},
+ {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"},
+ {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"},
+ {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"},
+ {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"},
+]
+
[[package]]
name = "mypy"
version = "1.4.1"
@@ -2916,7 +2999,94 @@ tests-binary = ["cmake", "cmake", "ninja", "ninja", "pybind11", "pybind11", "sci
tests-binary-strict = ["cmake (==3.21.2)", "cmake (==3.25.0)", "ninja (==1.10.2)", "ninja (==1.11.1)", "pybind11 (==2.10.3)", "pybind11 (==2.7.1)", "scikit-build (==0.11.1)", "scikit-build (==0.16.1)"]
tests-strict = ["codecov (==2.0.15)", "pytest (==4.6.0)", "pytest (==4.6.0)", "pytest (==6.2.5)", "pytest-cov (==3.0.0)", "typing (==3.7.4)"]
+[[package]]
+name = "yarl"
+version = "1.9.2"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"},
+ {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"},
+ {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"},
+ {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"},
+ {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"},
+ {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"},
+ {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"},
+ {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"},
+ {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"},
+ {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"},
+ {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"},
+ {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"},
+ {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"},
+ {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"},
+ {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"},
+ {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"},
+ {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"},
+ {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"},
+ {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"},
+ {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"},
+ {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"},
+ {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"},
+ {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"},
+ {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"},
+ {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"},
+ {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"},
+ {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"},
+ {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+
[metadata]
lock-version = "2.0"
python-versions = ">=3.10, <4.0"
-content-hash = "154647beb722cd3c70e6b0aa426dc41294dc58c26dbb20762859783b6076fada"
+content-hash = "3efe69409c08f344e476363a10796be367b5e55197bb477cc594db8e9e043cd8"
diff --git a/pyproject.toml b/pyproject.toml
index bd566dae..8e445524 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "gridworks-protocol"
-version = "0.5.7"
+version = "0.6.0"
description = "Gridworks Protocol"
authors = ["Jessica Millar "]
license = "MIT"
@@ -24,6 +24,7 @@ pydantic = "^1.10.2"
pendulum = "^2.1.2"
fastapi-utils = "^0.2.1"
gridworks = "^0.2.9"
+yarl = "^1.9.2"
[tool.poetry.dev-dependencies]
Pygments = ">=2.10.0"
diff --git a/src/gwproto/__init__.py b/src/gwproto/__init__.py
index 84063e73..35546134 100644
--- a/src/gwproto/__init__.py
+++ b/src/gwproto/__init__.py
@@ -1,6 +1,5 @@
-import gwproto.enums as enums
-import gwproto.messages as messages
-import gwproto.property_format as property_format
+from gwproto.data_classes.hardware_layout import HardwareLayout
+from gwproto.data_classes.sh_node import ShNode
from gwproto.decoders import CallableDecoder
from gwproto.decoders import Decoder
from gwproto.decoders import DecoderItem
@@ -11,9 +10,16 @@
from gwproto.decoders import MQTTCodec
from gwproto.decoders import OneDecoderExtractor
from gwproto.decoders import PydanticDecoder
+from gwproto.decoders import PydanticTypeNameDecoder
+from gwproto.decoders import create_discriminator
from gwproto.decoders import create_message_payload_discriminator
from gwproto.decoders import get_pydantic_literal_type_name
from gwproto.decoders import pydantic_named_types
+from gwproto.default_decoders import CacDecoder
+from gwproto.default_decoders import ComponentDecoder
+from gwproto.default_decoders import decode_to_data_class
+from gwproto.default_decoders import default_cac_decoder
+from gwproto.default_decoders import default_component_decoder
from gwproto.errors import SchemaError
from gwproto.message import Header
from gwproto.message import Message
@@ -24,25 +30,33 @@
__all__ = [
"as_enum",
+ "CacDecoder",
"CallableDecoder",
+ "ComponentDecoder",
+ "create_discriminator",
"create_message_payload_discriminator",
+ "decode_to_data_class",
"Decoder",
"DecoderItem",
"DecodedMQTTTopic",
"Decoders",
- "enums",
+ "default_cac_decoder",
+ "default_component_decoder",
"get_pydantic_literal_type_name",
+ "HardwareLayout",
"Header",
"MakerDecoder",
"MakerExtractor",
"Message",
"messages",
"MessageDiscriminator",
- "SchemaError",
"MQTTCodec",
"MQTTTopic",
"OneDecoderExtractor",
"property_format",
"PydanticDecoder",
+ "PydanticTypeNameDecoder",
"pydantic_named_types",
+ "SchemaError",
+ "ShNode",
]
diff --git a/src/gwproto/data_classes/cacs/fibaro_smart_implant_cac.py b/src/gwproto/data_classes/cacs/fibaro_smart_implant_cac.py
new file mode 100644
index 00000000..198b4948
--- /dev/null
+++ b/src/gwproto/data_classes/cacs/fibaro_smart_implant_cac.py
@@ -0,0 +1,5 @@
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+
+
+class FibaroSmartImplantCac(ComponentAttributeClass):
+ ...
diff --git a/src/gwproto/data_classes/cacs/hubitat_cac.py b/src/gwproto/data_classes/cacs/hubitat_cac.py
new file mode 100644
index 00000000..69a7731a
--- /dev/null
+++ b/src/gwproto/data_classes/cacs/hubitat_cac.py
@@ -0,0 +1,5 @@
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+
+
+class HubitatCac(ComponentAttributeClass):
+ ...
diff --git a/src/gwproto/data_classes/cacs/hubitat_tank_module_cac.py b/src/gwproto/data_classes/cacs/hubitat_tank_module_cac.py
new file mode 100644
index 00000000..101bf591
--- /dev/null
+++ b/src/gwproto/data_classes/cacs/hubitat_tank_module_cac.py
@@ -0,0 +1,5 @@
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+
+
+class HubitatTankModuleCac(ComponentAttributeClass):
+ ...
diff --git a/src/gwproto/data_classes/cacs/rest_poller_cac.py b/src/gwproto/data_classes/cacs/rest_poller_cac.py
new file mode 100644
index 00000000..3ed085d2
--- /dev/null
+++ b/src/gwproto/data_classes/cacs/rest_poller_cac.py
@@ -0,0 +1,5 @@
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+
+
+class RESTPollerCac(ComponentAttributeClass):
+ ...
diff --git a/src/gwproto/data_classes/components/fibaro_smart_implant_component.py b/src/gwproto/data_classes/components/fibaro_smart_implant_component.py
new file mode 100644
index 00000000..7e7cd3be
--- /dev/null
+++ b/src/gwproto/data_classes/components/fibaro_smart_implant_component.py
@@ -0,0 +1,19 @@
+from typing import Optional
+
+from gwproto.data_classes.component import Component
+
+
+class FibaroSmartImplantComponent(Component):
+ def __init__(
+ self,
+ component_id: str,
+ component_attribute_class_id: str,
+ display_name: Optional[str] = None,
+ hw_uid: Optional[str] = None,
+ ):
+ super().__init__(
+ component_id=component_id,
+ component_attribute_class_id=component_attribute_class_id,
+ display_name=display_name,
+ hw_uid=hw_uid,
+ )
diff --git a/src/gwproto/data_classes/components/hubitat_component.py b/src/gwproto/data_classes/components/hubitat_component.py
new file mode 100644
index 00000000..51146740
--- /dev/null
+++ b/src/gwproto/data_classes/components/hubitat_component.py
@@ -0,0 +1,29 @@
+from typing import Optional
+
+import yarl
+
+from gwproto.data_classes.component import Component
+from gwproto.types.hubitat_gt import HubitatGt
+
+
+class HubitatComponent(Component):
+ hubitat_gt: HubitatGt
+
+ def __init__(
+ self,
+ component_id: str,
+ component_attribute_class_id: str,
+ hubitat_gt: HubitatGt,
+ display_name: Optional[str] = None,
+ hw_uid: Optional[str] = None,
+ ):
+ self.hubitat_gt = hubitat_gt
+ super().__init__(
+ component_id=component_id,
+ component_attribute_class_id=component_attribute_class_id,
+ display_name=display_name,
+ hw_uid=hw_uid,
+ )
+
+ def urls(self) -> dict[str, Optional[yarl.URL]]:
+ return self.hubitat_gt.urls()
diff --git a/src/gwproto/data_classes/components/hubitat_tank_component.py b/src/gwproto/data_classes/components/hubitat_tank_component.py
new file mode 100644
index 00000000..74e5655d
--- /dev/null
+++ b/src/gwproto/data_classes/components/hubitat_tank_component.py
@@ -0,0 +1,113 @@
+from typing import Optional
+
+import yarl
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.components.hubitat_component import HubitatComponent
+from gwproto.data_classes.resolver import ComponentResolver
+from gwproto.data_classes.sh_node import ShNode
+from gwproto.types.hubitat_component_gt import HubitatComponentGt
+from gwproto.types.hubitat_component_gt import HubitatRESTResolutionSettings
+from gwproto.types.hubitat_gt import HubitatGt
+from gwproto.types.hubitat_tank_gt import FibaroTempSensorSettings
+from gwproto.types.hubitat_tank_gt import FibaroTempSensorSettingsGt
+from gwproto.types.hubitat_tank_gt import HubitatTankSettingsGt
+from gwproto.types.telemetry_reporting_config import TelemetryReportingConfig
+
+
+class HubitatTankComponent(Component, ComponentResolver):
+ hubitat: HubitatComponentGt
+ sensor_supply_voltage: float
+ devices_gt: list[FibaroTempSensorSettingsGt]
+ devices: list[FibaroTempSensorSettings] = []
+
+ def __init__(
+ self,
+ component_id: str,
+ component_attribute_class_id: str,
+ tank_gt: HubitatTankSettingsGt,
+ display_name: Optional[str] = None,
+ hw_uid: Optional[str] = None,
+ ):
+ # Create self.hubitat as a proxy containing only the id
+ # of the hubitat; the actual component data will be resolved
+ # when resolve() is called; Here in the constructor we cannot
+ # rely on the actual HubitatComponentGt existing yet.
+ self.hubitat = HubitatComponentGt(
+ ComponentId=tank_gt.hubitat_component_id,
+ ComponentAttributeClassId="00000000-0000-0000-0000-000000000000",
+ Hubitat=HubitatGt(
+ Host="",
+ MakerApiId=-1,
+ AccessToken="",
+ MacAddress="000000000000",
+ ),
+ )
+ self.sensor_supply_voltage = tank_gt.sensor_supply_voltage
+ self.devices_gt = list(tank_gt.devices)
+ super().__init__(
+ display_name=display_name,
+ component_id=component_id,
+ hw_uid=hw_uid,
+ component_attribute_class_id=component_attribute_class_id,
+ )
+
+ def resolve(
+ self,
+ tank_node_name: str,
+ nodes: dict[str, ShNode],
+ components: dict[str, Component],
+ ):
+ hubitat_component = components.get(self.hubitat.ComponentId, None)
+ if hubitat_component is None:
+ raise ValueError(
+ "ERROR. No component found for "
+ f"HubitatTankComponent.hubitat.CompnentId {self.hubitat.ComponentId}"
+ )
+ if not isinstance(hubitat_component, HubitatComponent):
+ raise ValueError(
+ "ERROR. Referenced hubitat component has type "
+ f"{type(hubitat_component)}; "
+ "must be instance of HubitatComponent. "
+ f"Hubitat component id: {self.hubitat.ComponentId}"
+ )
+ hubitat_component_gt = HubitatComponentGt.from_data_class(hubitat_component)
+ hubitat_settings = HubitatRESTResolutionSettings(hubitat_component_gt)
+ devices = [
+ FibaroTempSensorSettings.create(
+ tank_name=tank_node_name,
+ settings_gt=device_gt,
+ hubitat=hubitat_settings,
+ )
+ for device_gt in self.devices_gt
+ if device_gt.enabled
+ ]
+ for device in devices:
+ if device.node_name not in nodes:
+ raise ValueError(
+ f"ERROR. Node not found for tank temp sensor <{device.node_name}>"
+ )
+ # replace proxy hubitat component, which only had component id.
+ # with the actual hubitat component containing data.
+ self.hubitat = hubitat_component_gt
+ self.devices = devices
+
+ def urls(self) -> dict[str, Optional[yarl.URL]]:
+ urls = self.hubitat.urls()
+ for device in self.devices:
+ urls[device.node_name] = device.url
+ return urls
+
+ @property
+ def config_list(self) -> list[TelemetryReportingConfig]:
+ return [
+ TelemetryReportingConfig(
+ TelemetryName=device.telemetry_name,
+ AboutNodeName=device.node_name,
+ ReportOnChange=False,
+ SamplePeriodS=int(device.rest.poll_period_seconds),
+ Exponent=device.exponent,
+ Unit=device.unit,
+ )
+ for device in self.devices
+ ]
diff --git a/src/gwproto/data_classes/components/rest_poller_component.py b/src/gwproto/data_classes/components/rest_poller_component.py
new file mode 100644
index 00000000..d5a80462
--- /dev/null
+++ b/src/gwproto/data_classes/components/rest_poller_component.py
@@ -0,0 +1,24 @@
+from typing import Optional
+
+from gwproto.data_classes.component import Component
+from gwproto.types.rest_poller_gt import RESTPollerSettings
+
+
+class RESTPollerComponent(Component):
+ rest: RESTPollerSettings
+
+ def __init__(
+ self,
+ component_id: str,
+ component_attribute_class_id: str,
+ rest: RESTPollerSettings,
+ display_name: Optional[str] = None,
+ hw_uid: Optional[str] = None,
+ ):
+ self.rest = rest
+ super().__init__(
+ display_name=display_name,
+ component_id=component_id,
+ hw_uid=hw_uid,
+ component_attribute_class_id=component_attribute_class_id,
+ )
diff --git a/src/gwproto/data_classes/hardware_layout.py b/src/gwproto/data_classes/hardware_layout.py
index 539e4e63..653ecbed 100644
--- a/src/gwproto/data_classes/hardware_layout.py
+++ b/src/gwproto/data_classes/hardware_layout.py
@@ -22,8 +22,13 @@
ElectricMeterComponent,
)
from gwproto.data_classes.errors import DataClassLoadingError
+from gwproto.data_classes.resolver import ComponentResolver
from gwproto.data_classes.sh_node import ShNode
from gwproto.data_classes.telemetry_tuple import TelemetryTuple
+from gwproto.default_decoders import CacDecoder
+from gwproto.default_decoders import ComponentDecoder
+from gwproto.default_decoders import default_cac_decoder
+from gwproto.default_decoders import default_component_decoder
from gwproto.enums import ActorClass
from gwproto.enums import Role
from gwproto.enums import TelemetryName
@@ -58,8 +63,15 @@ class LoadError:
exception: Exception
-def load_cacs(layout: dict, raise_errors: bool = True) -> list[LoadError]:
- errors: list[LoadError] = []
+def load_cacs(
+ layout: dict,
+ raise_errors: bool = True,
+ errors: Optional[list[LoadError]] = None,
+ cac_decoder: Optional[CacDecoder] = None,
+) -> dict:
+ if errors is None:
+ errors: list[LoadError] = []
+ cacs = dict()
for type_name, maker_class in [
("RelayCacs", RelayCacGt_Maker),
("ResistiveHeaterCacs", ResistiveHeaterCacGt_Maker),
@@ -68,27 +80,41 @@ def load_cacs(layout: dict, raise_errors: bool = True) -> list[LoadError]:
("MultipurposeSensorCacs", MultipurposeSensorCacGt_Maker),
("SimpleTempSensorCacs", SimpleTempSensorCacGt_Maker),
]:
- for d in layout[type_name]:
+ for d in layout.get(type_name, []):
try:
- maker_class.dict_to_dc(d)
+ cacs[d["ComponentAttributeClassId"]] = maker_class.dict_to_dc(d)
except Exception as e:
if raise_errors:
raise e
errors.append(LoadError(type_name, d, e))
- for d in layout["OtherCacs"]:
+ if cac_decoder is None:
+ cac_decoder = default_cac_decoder
+ for d in layout.get("OtherCacs", []):
+ cac_type = d.get("TypeName", "")
try:
- ComponentAttributeClass(
- component_attribute_class_id=d["ComponentAttributeClassId"]
- )
+ if cac_type and cac_type in cac_decoder:
+ cac = cac_decoder.decode_to_data_class(d)
+ else:
+ cac = ComponentAttributeClass(
+ component_attribute_class_id=d["ComponentAttributeClassId"]
+ )
+ cacs[d["ComponentAttributeClassId"]] = cac
except Exception as e:
if raise_errors:
raise e
errors.append(LoadError("OtherCacs", d, e))
- return errors
-
-
-def load_components(layout: dict, raise_errors: bool = True) -> list[LoadError]:
- errors: list[LoadError] = []
+ return cacs
+
+
+def load_components(
+ layout: dict,
+ raise_errors: bool = True,
+ errors: Optional[list[LoadError]] = None,
+ component_decoder: Optional[ComponentDecoder] = None,
+) -> dict:
+ if errors is None:
+ errors: list[LoadError] = []
+ components = dict()
for type_name, maker_class in [
("RelayComponents", RelayComponentGt_Maker),
("ResistiveHeaterComponents", ResistiveHeaterComponentGt_Maker),
@@ -97,22 +123,74 @@ def load_components(layout: dict, raise_errors: bool = True) -> list[LoadError]:
("MultipurposeSensorComponents", MultipurposeSensorComponentGt_Maker),
("SimpleTempSensorComponents", SimpleTempSensorComponentGt_Maker),
]:
- for d in layout[type_name]:
+ for d in layout.get(type_name, []):
try:
- maker_class.dict_to_dc(d)
+ components[d["ComponentId"]] = maker_class.dict_to_dc(d)
except Exception as e:
if raise_errors:
raise e
errors.append(LoadError(type_name, d, e))
- for camel in layout["OtherComponents"]:
- try:
- snake_dict = {camel_to_snake(k): v for k, v in camel.items()}
- Component(**snake_dict)
- except Exception as e:
- if raise_errors:
- raise e
- errors.append(LoadError(type_name, camel, e))
- return errors
+ if component_decoder is None:
+ component_decoder = default_component_decoder
+ for d in layout["OtherComponents"]:
+ component_type = d.get("TypeName", "")
+ try:
+ if component_type and component_type in component_decoder:
+ component = component_decoder.decode_to_data_class(d)
+ else:
+ component = Component(**{camel_to_snake(k): v for k, v in d.items()})
+ components[d["ComponentId"]] = component
+ except Exception as e:
+ if raise_errors:
+ raise e
+ errors.append(LoadError("OtherComponents", d, e))
+ return components
+
+
+def load_nodes(
+ layout: dict,
+ raise_errors: bool = True,
+ errors: Optional[list[LoadError]] = None,
+ included_node_names: Optional[set[str]] = None,
+) -> dict:
+ nodes = {}
+ for d in layout.get("ShNodes", []):
+ try:
+ node_name = d["Alias"]
+ if included_node_names is None or node_name in included_node_names:
+ nodes[node_name] = SpaceheatNodeGt_Maker.dict_to_dc(d)
+ except Exception as e:
+ if raise_errors:
+ raise e
+ errors.append(LoadError("ShNode", d, e))
+ return nodes
+
+
+def resolve_links(
+ nodes: dict[str, ShNode] = None,
+ components: dict[str, Component] = None,
+ raise_errors: bool = True,
+ errors: Optional[list[LoadError]] = None,
+) -> None:
+ for node_name, node in nodes.items():
+ d = dict(node=dict(name=node_name, node=node))
+ try:
+ if node.component_id is not None:
+ component = components.get(node.component_id, None)
+ if component is None:
+ raise DataClassLoadingError(
+ f"{node.alias} component {node.component_id} not loaded!"
+ )
+ if isinstance(component, ComponentResolver):
+ component.resolve(
+ node.alias,
+ nodes,
+ components,
+ )
+ except Exception as e:
+ if raise_errors:
+ raise e
+ errors.append(LoadError("ShNode", d, e))
class HardwareLayout:
@@ -121,15 +199,31 @@ class HardwareLayout:
components: dict[str, Component]
nodes: dict[str, ShNode]
- def __init__(self, layout: dict, included_node_names: Optional[set[str]] = None):
+ def __init__(
+ self,
+ layout: dict,
+ cacs: Optional[dict[str, ComponentAttributeClass]] = None,
+ components: Optional[dict[str, Component]] = None,
+ nodes: Optional[dict[str, ShNode]] = None,
+ ):
self.layout = copy.deepcopy(layout)
- self.cacs = dict(ComponentAttributeClass.by_id)
- self.components = dict(Component.by_id)
- self.nodes = {
- node_dict["Alias"]: SpaceheatNodeGt_Maker.dict_to_dc(node_dict)
- for node_dict in self.layout["ShNodes"]
- if included_node_names is None or node_dict["Alias"] in included_node_names
- }
+ if cacs is None:
+ cacs = ComponentAttributeClass.by_id
+ self.cacs = dict(cacs)
+ if components is None:
+ components = Component.by_id
+ self.components = dict(components)
+ if nodes is None:
+ nodes = ShNode.by_id
+ self.nodes = dict(nodes)
+
+ def clear_property_cache(self):
+ for cached_prop_name in [
+ prop_name
+ for prop_name in type(self).__dict__
+ if isinstance(type(self).__dict__[prop_name], cached_property)
+ ]:
+ self.__dict__.pop(cached_prop_name, None)
@classmethod
def load(
@@ -138,6 +232,8 @@ def load(
included_node_names: Optional[set[str]] = None,
raise_errors: bool = True,
errors: Optional[list[LoadError]] = None,
+ cac_decoder: Optional[CacDecoder] = None,
+ component_decoder: Optional[ComponentDecoder] = None,
) -> "HardwareLayout":
with Path(layout_path).open() as f:
layout: dict = json.loads(f.read())
@@ -146,6 +242,8 @@ def load(
included_node_names=included_node_names,
raise_errors=raise_errors,
errors=errors,
+ cac_decoder=cac_decoder,
+ component_decoder=component_decoder,
)
@classmethod
@@ -155,12 +253,38 @@ def load_dict(
included_node_names: Optional[set[str]] = None,
raise_errors: bool = True,
errors: Optional[list[LoadError]] = None,
+ cac_decoder: Optional[CacDecoder] = None,
+ component_decoder: Optional[ComponentDecoder] = None,
) -> "HardwareLayout":
if errors is None:
- errors = []
- errors.extend(load_cacs(layout=layout, raise_errors=raise_errors))
- errors.extend(load_components(layout=layout, raise_errors=raise_errors))
- return HardwareLayout(layout, included_node_names=included_node_names)
+ errors: list[LoadError] = []
+ load_args = dict(
+ cacs=load_cacs(
+ layout=layout,
+ raise_errors=raise_errors,
+ errors=errors,
+ cac_decoder=cac_decoder,
+ ),
+ components=load_components(
+ layout=layout,
+ raise_errors=raise_errors,
+ errors=errors,
+ component_decoder=component_decoder,
+ ),
+ nodes=load_nodes(
+ layout=layout,
+ raise_errors=raise_errors,
+ errors=errors,
+ included_node_names=included_node_names,
+ ),
+ )
+ resolve_links(
+ load_args["nodes"],
+ load_args["components"],
+ raise_errors=raise_errors,
+ errors=errors,
+ )
+ return HardwareLayout(layout, **load_args)
def node(self, alias: str, default: Any = None) -> ShNode:
return self.nodes.get(alias, default)
@@ -347,23 +471,24 @@ def my_simple_sensors(self) -> List[ShNode]:
@cached_property
def all_multipurpose_telemetry_tuples(self) -> List[TelemetryTuple]:
- all_nodes = list(self.nodes.values())
multi_nodes = list(
filter(
lambda x: (
- x.actor_class == ActorClass.MultipurposeSensor
+ (
+ x.actor_class == ActorClass.MultipurposeSensor
+ or x.actor_class == ActorClass.HubitatTankModule
+ )
and hasattr(x.component, "config_list")
),
- all_nodes,
+ self.nodes.values(),
)
)
telemetry_tuples = []
for node in multi_nodes:
for config in getattr(node.component, "config_list"):
- about_node = self.node(config.AboutNodeName)
telemetry_tuples.append(
TelemetryTuple(
- AboutNode=about_node,
+ AboutNode=self.node(config.AboutNodeName),
SensorNode=node,
TelemetryName=config.TelemetryName,
)
diff --git a/src/gwproto/data_classes/resolver.py b/src/gwproto/data_classes/resolver.py
new file mode 100644
index 00000000..54140192
--- /dev/null
+++ b/src/gwproto/data_classes/resolver.py
@@ -0,0 +1,16 @@
+from abc import ABC
+from abc import abstractmethod
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.sh_node import ShNode
+
+
+class ComponentResolver(ABC):
+ @abstractmethod
+ def resolve(
+ self,
+ node_name: str,
+ nodes: dict[str, ShNode],
+ components: dict[str, Component],
+ ):
+ raise NotImplementedError
diff --git a/src/gwproto/decoders.py b/src/gwproto/decoders.py
index d29e8e84..dd1a93b8 100644
--- a/src/gwproto/decoders.py
+++ b/src/gwproto/decoders.py
@@ -1,6 +1,7 @@
import abc
import inspect
import json
+import re
import sys
from abc import abstractmethod
from dataclasses import dataclass
@@ -286,6 +287,7 @@ def pydantic_named_types(
module_names: str | Sequence[str],
modules: Optional[Sequence[Any]] = None,
type_name_field: str = DEFAULT_TYPE_NAME_FIELD,
+ type_name_regex: Optional[re.Pattern] = None,
) -> list[Any]:
if isinstance(module_names, str):
module_names = [module_names]
@@ -315,6 +317,9 @@ def pydantic_named_types(
f"for {module_class} already seen for "
f"class {type_names[type_name]}"
)
+ if type_name_regex is not None:
+ if not type_name_regex.match(type_name):
+ continue
type_names[type_name] = module_class
named_types.append(module_class)
return named_types
@@ -326,8 +331,14 @@ def create_message_payload_discriminator(
modules: Optional[Sequence[Any]] = None,
explicit_types: Optional[Sequence[Any]] = None,
type_name_field: str = DEFAULT_TYPE_NAME_FIELD,
+ type_name_regex: Optional[re.Pattern] = None,
) -> Type[MessageDiscriminator]:
- used_types = pydantic_named_types(module_names=module_names, modules=modules)
+ used_types = pydantic_named_types(
+ module_names=module_names,
+ modules=modules,
+ type_name_field=type_name_field,
+ type_name_regex=type_name_regex,
+ )
if explicit_types is not None:
used_types.extend(explicit_types)
return create_model(
@@ -338,3 +349,76 @@ def create_message_payload_discriminator(
Field(..., discriminator=type_name_field),
),
)
+
+
+def create_discriminator(
+ model_name: str,
+ module_names: str | Sequence[str] = "",
+ modules: Optional[Sequence[Any]] = None,
+ explicit_types: Optional[Sequence[Any]] = None,
+ type_name_field: str = DEFAULT_TYPE_NAME_FIELD,
+ type_name_regex: Optional[re.Pattern] = None,
+ payload_field_name="Payload",
+) -> BaseModel:
+ used_types = pydantic_named_types(
+ module_names=module_names,
+ modules=modules,
+ type_name_field=type_name_field,
+ type_name_regex=type_name_regex,
+ )
+ if explicit_types is not None:
+ used_types.extend(explicit_types)
+ if len(used_types) == 1:
+ payload_field_type = (
+ used_types[0],
+ Field(...),
+ )
+ else:
+ payload_field_type = (
+ Union[tuple(used_types)],
+ Field(..., discriminator=type_name_field),
+ )
+ payload_field_kwargs = {payload_field_name: payload_field_type}
+ return create_model(model_name, **payload_field_kwargs)
+
+
+class PydanticTypeNameDecoder(Decoder):
+ loader: BaseModel
+ payload_field_name: str
+ contains: set[str]
+
+ def __init__(
+ self,
+ model_name: str,
+ *,
+ module_names: str | Sequence[str] = "",
+ modules: Optional[Sequence[Any]] = None,
+ explicit_types: Optional[Sequence[Any]] = None,
+ type_name_field: str = DEFAULT_TYPE_NAME_FIELD,
+ type_name_regex: Optional[re.Pattern] = None,
+ payload_field_name="Payload",
+ ):
+ self.payload_field_name = payload_field_name
+ self.loader = create_discriminator(
+ model_name=model_name,
+ module_names=module_names,
+ modules=modules,
+ explicit_types=explicit_types,
+ type_name_field=type_name_field,
+ type_name_regex=type_name_regex,
+ payload_field_name=payload_field_name,
+ )
+ payload_field = self.loader.__fields__[self.payload_field_name]
+ if payload_field.sub_fields_mapping is not None:
+ self.contains = set(payload_field.sub_fields_mapping.keys())
+ else:
+ self.contains = {payload_field.type_.__fields__["TypeName"].default}
+
+ def __contains__(self, type_name: str) -> bool:
+ return type_name in self.contains
+
+ def decode_obj(self, data: dict) -> BaseModel:
+ return getattr(
+ self.loader.parse_obj({self.payload_field_name: data}),
+ self.payload_field_name,
+ )
diff --git a/src/gwproto/default_decoders.py b/src/gwproto/default_decoders.py
new file mode 100644
index 00000000..011c6d33
--- /dev/null
+++ b/src/gwproto/default_decoders.py
@@ -0,0 +1,97 @@
+import re
+import typing
+from typing import Type
+from typing import TypeVar
+
+import gwproto.types.fibaro_smart_implant_cac_gt
+import gwproto.types.fibaro_smart_implant_component_gt
+import gwproto.types.hubitat_cac_gt
+import gwproto.types.hubitat_component_gt
+import gwproto.types.hubitat_tank_cac_gt
+import gwproto.types.hubitat_tank_component_gt
+import gwproto.types.rest_poller_cac_gt
+import gwproto.types.rest_poller_component_gt
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+from gwproto.decoders import PydanticTypeNameDecoder
+
+
+T = TypeVar("T")
+
+
+def decode_to_data_class(
+ decoded_gt: typing.Any,
+ return_type: Type[T],
+ allow_missing_func: bool = True,
+ allow_non_instance: bool = False,
+) -> T:
+ if hasattr(decoded_gt, "to_data_class"):
+ data_class = decoded_gt.to_data_class()
+ if not allow_non_instance and not isinstance(data_class, return_type):
+ raise ValueError(
+ f"ERROR. Returned data class {type(data_class)} is not"
+ f" instance of {return_type}"
+ )
+ return typing.cast(T, decoded_gt.to_data_class())
+ if allow_missing_func:
+ raise ValueError(
+ f"ERROR. Decoded type {type(decoded_gt)} has no" f" to_data_class() method."
+ )
+ return Component(**decoded_gt.dict())
+
+
+class CacDecoder(PydanticTypeNameDecoder):
+ TYPE_NAME_REGEX = re.compile(r".*\.cac\.gt")
+
+ def __init__(self, model_name: str, **kwargs):
+ if "type_name_regex" not in kwargs:
+ kwargs["type_name_regex"] = CacDecoder.TYPE_NAME_REGEX
+ super().__init__(model_name, **kwargs)
+
+ def decode_to_data_class(
+ self, data: dict, allow_missing_func: bool = True
+ ) -> ComponentAttributeClass:
+ return decode_to_data_class(
+ decoded_gt=self.decode_obj(data),
+ return_type=ComponentAttributeClass,
+ allow_missing_func=allow_missing_func,
+ )
+
+
+class ComponentDecoder(PydanticTypeNameDecoder):
+ TYPE_NAME_REGEX = re.compile(r".*\.component\.gt")
+
+ def __init__(self, model_name: str, **kwargs):
+ if "type_name_regex" not in kwargs:
+ kwargs["type_name_regex"] = ComponentDecoder.TYPE_NAME_REGEX
+ super().__init__(model_name, **kwargs)
+
+ def decode_to_data_class(
+ self, data: dict, allow_missing_func: bool = True
+ ) -> Component:
+ return decode_to_data_class(
+ decoded_gt=self.decode_obj(data),
+ return_type=Component,
+ allow_missing_func=allow_missing_func,
+ )
+
+
+default_cac_decoder = CacDecoder(
+ model_name="DefaultCacDecoder",
+ module_names=[
+ "gwproto.types.fibaro_smart_implant_cac_gt",
+ "gwproto.types.hubitat_cac_gt",
+ "gwproto.types.hubitat_tank_cac_gt",
+ "gwproto.types.rest_poller_cac_gt",
+ ],
+)
+
+default_component_decoder = ComponentDecoder(
+ model_name="DefaultComponentDecoder",
+ module_names=[
+ "gwproto.types.fibaro_smart_implant_component_gt",
+ "gwproto.types.hubitat_component_gt",
+ "gwproto.types.hubitat_tank_component_gt",
+ "gwproto.types.rest_poller_component_gt",
+ ],
+)
diff --git a/src/gwproto/enums/__init__.py b/src/gwproto/enums/__init__.py
index 5754ceb7..3c61c1ad 100644
--- a/src/gwproto/enums/__init__.py
+++ b/src/gwproto/enums/__init__.py
@@ -8,10 +8,10 @@
__all__ = [
- "LocalCommInterface",
"ActorClass",
- "Role",
+ "LocalCommInterface",
"MakeModel",
+ "Role",
"TelemetryName",
"Unit",
]
diff --git a/src/gwproto/enums/actor_class.py b/src/gwproto/enums/actor_class.py
index 7b2808e0..d6d92fda 100644
--- a/src/gwproto/enums/actor_class.py
+++ b/src/gwproto/enums/actor_class.py
@@ -31,7 +31,9 @@ class ActorClass(StrEnum):
SimpleSensor = auto()
MultipurposeSensor = auto()
Thermostat = auto()
-
+ HubitatTelemetryReader = auto()
+ HubitatTankModule = auto()
+
@classmethod
def default(cls) -> "ActorClass":
"""
diff --git a/src/gwproto/enums/make_model.py b/src/gwproto/enums/make_model.py
index 49c82796..19aa6cb9 100644
--- a/src/gwproto/enums/make_model.py
+++ b/src/gwproto/enums/make_model.py
@@ -1,4 +1,4 @@
-""" Enum with TypeName spaceheat.make.model, Version 000, Status Active"""
+""" Enum with TypeName spaceheat.make.model, Version 001, Status Pending"""
from enum import auto
from typing import List
@@ -13,17 +13,49 @@ class MakeModel(StrEnum):
Name (EnumSymbol, Version): description
* UNKNOWNMAKE__UNKNOWNMODEL (00000000, 000):
- * EGAUGE__4030 (beb6d3fb, 000): A power meter in Egauge's 403x line. [More Info](https://store.egauge.net/meters).
- * NCD__PR814SPST (fabfa505, 000): NCD's 4-channel high-power relay controller + 4 GPIO with I2C interface. [More Info](https://store.ncd.io/product/4-channel-high-power-relay-controller-4-gpio-with-i2c-interface/?attribute_pa_choose-a-relay=20-amp-spdt).
- * ADAFRUIT__642 (acd93fb3, 000): Adafruit's high-temp, water-proof 1-wire temp sensor. [More Info](https://www.adafruit.com/product/642).
+ * EGAUGE__4030 (beb6d3fb, 000): A power meter in Egauge's 403x line.
+ [More Info](https://store.egauge.net/meters).
+ * NCD__PR814SPST (fabfa505, 000): NCD's 4-channel high-power relay controller + 4 GPIO
+ with I2C interface.
+ [More Info](https://store.ncd.io/product/4-channel-high-power-relay-controller-4-gpio-with-i2c-interface/?attribute_pa_choose-a-relay=20-amp-spdt).
+ * ADAFRUIT__642 (acd93fb3, 000): Adafruit's high-temp, water-proof 1-wire temp sensor.
+ [More Info](https://www.adafruit.com/product/642).
* GRIDWORKS__TSNAP1 (d0178dc3, 000): Actual GridWorks TSnap 1.0 SCADA Box
* GRIDWORKS__WATERTEMPHIGHPRECISION (f8b497e8, 000): Simulated temp sensor
* GRIDWORKS__SIMPM1 (076da322, 000): Simulated power meter
* SCHNEIDERELECTRIC__IEM3455 (d300635e, 000): Schneider Electric IEM 344 utility meter
* GRIDWORKS__SIMBOOL30AMPRELAY (e81d74a8, 000): Simulated relay
- * OPENENERGY__EMONPI (c75d269f, 000): Open Energy's open source multipurpose sensing device (including internal power meter). [More Info](https://docs.openenergymonitor.org/emonpi/technical.html).
+ * OPENENERGY__EMONPI (c75d269f, 000): Open Energy's open source multipurpose sensing device
+ (including internal power meter).
+ [More Info](https://docs.openenergymonitor.org/emonpi/technical.html).
* GRIDWORKS__SIMTSNAP1 (3042c432, 000): Simulated SCADA Box
- * ATLAS__EZFLO (d0b0e375, 000): Atlas Scientific EZO Embedded Flow Meter Totalizer, pulse to I2C. [More Info](https://drive.google.com/drive/u/0/folders/142bBV1pQIbMpyIR_0iRUr5gnzWgknOJp).
+ * ATLAS__EZFLO (d0b0e375, 000): Atlas Scientific EZO Embedded Flow Meter Totalizer, pulse to I2C.
+ [More Info](https://drive.google.com/drive/u/0/folders/142bBV1pQIbMpyIR_0iRUr5gnzWgknOJp).
+ * HUBITAT__C7__LAN1 (4d649420, 001): This refers to a Hubitat C7 that has been configured
+ in a specific way with respect to the APIs it presents on the Local Area Network. The
+ Hubitat C7 is a home automation hub that supports building ZigBee and ZWave meshes,
+ plugs into Ethernet, has a reasonable user interface and has an active community of
+ open-source developers who create drivers and package managers for devices, and supports
+ the creation of various types of APIs on the Local Area Network.
+ [More Info](https://drive.google.com/drive/folders/1AqAU_lC2phzuI9XRYvogiIYA7GXNtlr6).
+ * GRIDWORKS__TANK_MODULE_1 (bd759051, 001): This refers to a small module designed and
+ assembled by GridWorks that is meant to be mounted to the side of a hot water tank. It
+ requires 24V DC and has 4 temperature sensors coming out of it labeled 1, 2, 3 and 4.
+ It is meant to provide temperature readings (taken within a half a second of each other)
+ of all 4 of its sensors once a minute.
+ [More Info](https://drive.google.com/drive/folders/1GSxDd8Naf1GKK_fSOgQU933M1UcJ4r8q).
+ * FIBARO__ANALOG_TEMP_SENSOR (1f19839d, 001): This enum refers to a Fibaro home automation
+ device that has been configured in a specific way. This includes (1) being attached to two
+ 10K NTC thermistors and a specific voltage divider circuit that specifies its temperature
+ as a function of voltage and (2) one of its potential free outputs being in-line with
+ the power of a partner Fibaro, so that it can power cycle its partner (because there are
+ reports of Fibaros no longer reporting temp change after weeks or months until power cylced).
+ The Fibaro itself is a tiny (29 X 18 X 13 mm) Z-Wave device powered on 9-30V DC that can read
+ up to 6 1-wire DS18B20 temp sensors, 2 0-10V analog inputs and also has 2 potential free outputs.
+ [More Info](https://drive.google.com/drive/u/0/folders/1Muhsvw00goppHIfGSEmreX4hM6V78b-m).
+ * AMPHENOL__NTC_10K_THERMISTOR_MA100GG103BN (46f21cd5, 001): A small gauge, low-cost, rapid response
+ NTC 10K Thermistor designed for medical applications.
+ [More Info](https://drive.google.com/drive/u/0/folders/11HW4ov66UvxKAwqApW6IrtoXatZBLQkd).
"""
UNKNOWNMAKE__UNKNOWNMODEL = auto()
EGAUGE__4030 = auto()
@@ -37,8 +69,10 @@ class MakeModel(StrEnum):
OPENENERGY__EMONPI = auto()
GRIDWORKS__SIMTSNAP1 = auto()
ATLAS__EZFLO = auto()
- MAGNELAB__SCT0300050 = auto()
- YHDC__SCT013100 = auto()
+ HUBITAT__C7__LAN1 = auto()
+ GRIDWORKS__TANK_MODULE_1 = auto()
+ FIBARO__ANALOG_TEMP_SENSOR = auto()
+ AMPHENOL__NTC_10K_THERMISTOR_MA100GG103BN = auto()
@classmethod
def default(cls) -> "MakeModel":
diff --git a/src/gwproto/types/__init__.py b/src/gwproto/types/__init__.py
index 2c9334c8..2c5da2f0 100644
--- a/src/gwproto/types/__init__.py
+++ b/src/gwproto/types/__init__.py
@@ -12,6 +12,14 @@
from gwproto.types.egauge_register_config import EgaugeRegisterConfig_Maker
from gwproto.types.electric_meter_cac_gt import ElectricMeterCacGt
from gwproto.types.electric_meter_cac_gt import ElectricMeterCacGt_Maker
+from gwproto.types.fibaro_smart_implant_cac_gt import FibaroSmartImplantCacGt
+from gwproto.types.fibaro_smart_implant_cac_gt import FibaroSmartImplantCacGt_Maker
+from gwproto.types.fibaro_smart_implant_component_gt import (
+ FibaroSmartImplantComponentGt,
+)
+from gwproto.types.fibaro_smart_implant_component_gt import (
+ FibaroSmartImplantComponentGt_Maker,
+)
from gwproto.types.gt_dispatch_boolean import GtDispatchBoolean
from gwproto.types.gt_dispatch_boolean import GtDispatchBoolean_Maker
from gwproto.types.gt_dispatch_boolean_local import GtDispatchBooleanLocal
@@ -44,6 +52,18 @@
from gwproto.types.gt_telemetry import GtTelemetry_Maker
from gwproto.types.heartbeat_b import HeartbeatB
from gwproto.types.heartbeat_b import HeartbeatB_Maker
+from gwproto.types.hubitat_cac_gt import HubitatCacGt
+from gwproto.types.hubitat_cac_gt import HubitatCacGt_Maker
+from gwproto.types.hubitat_component_gt import HubitatComponentGt
+from gwproto.types.hubitat_component_gt import HubitatComponentGt_Maker
+from gwproto.types.hubitat_component_gt import HubitatRESTResolutionSettings
+from gwproto.types.hubitat_tank_cac_gt import HubitatTankCacGt
+from gwproto.types.hubitat_tank_cac_gt import HubitatTankCacGt_Maker
+from gwproto.types.hubitat_tank_component_gt import HubitatTankComponentGt
+from gwproto.types.hubitat_tank_component_gt import HubitatTankComponentGt_Maker
+from gwproto.types.hubitat_tank_gt import FibaroTempSensorSettings
+from gwproto.types.hubitat_tank_gt import FibaroTempSensorSettingsGt
+from gwproto.types.hubitat_tank_gt import HubitatTankSettingsGt
from gwproto.types.multipurpose_sensor_cac_gt import MultipurposeSensorCacGt
from gwproto.types.multipurpose_sensor_cac_gt import MultipurposeSensorCacGt_Maker
from gwproto.types.pipe_flow_sensor_cac_gt import PipeFlowSensorCacGt
@@ -60,6 +80,16 @@
from gwproto.types.resistive_heater_cac_gt import ResistiveHeaterCacGt_Maker
from gwproto.types.resistive_heater_component_gt import ResistiveHeaterComponentGt
from gwproto.types.resistive_heater_component_gt import ResistiveHeaterComponentGt_Maker
+from gwproto.types.rest_poller_cac_gt import RESTPollerCacGt
+from gwproto.types.rest_poller_cac_gt import RESTPollerCacGt_Maker
+from gwproto.types.rest_poller_component_gt import RESTPollerComponentGt
+from gwproto.types.rest_poller_component_gt import RESTPollerComponentGt_Maker
+from gwproto.types.rest_poller_gt import AioHttpClientTimeout
+from gwproto.types.rest_poller_gt import RequestArgs
+from gwproto.types.rest_poller_gt import RESTPollerSettings
+from gwproto.types.rest_poller_gt import SessionArgs
+from gwproto.types.rest_poller_gt import URLArgs
+from gwproto.types.rest_poller_gt import URLConfig
from gwproto.types.simple_temp_sensor_cac_gt import SimpleTempSensorCacGt
from gwproto.types.simple_temp_sensor_cac_gt import SimpleTempSensorCacGt_Maker
from gwproto.types.simple_temp_sensor_component_gt import SimpleTempSensorComponentGt
@@ -77,6 +107,7 @@
__all__ = [
+ "AioHttpClientTimeout",
"ComponentAttributeClassGt",
"ComponentAttributeClassGt_Maker",
"ComponentGt",
@@ -91,6 +122,12 @@
"ElectricMeterCacGt_Maker",
# "ElectricMeterComponentGt",
# "ElectricMeterComponentGt_Maker",
+ "FibaroTempSensorSettingsGt",
+ "FibaroTempSensorSettings",
+ "FibaroSmartImplantCacGt",
+ "FibaroSmartImplantCacGt_Maker",
+ "FibaroSmartImplantComponentGt",
+ "FibaroSmartImplantComponentGt_Maker",
"GtDispatchBoolean",
"GtDispatchBoolean_Maker",
"GtDispatchBooleanLocal",
@@ -113,6 +150,16 @@
"GtTelemetry_Maker",
"HeartbeatB",
"HeartbeatB_Maker",
+ "HubitatCacGt",
+ "HubitatCacGt_Maker",
+ "HubitatComponentGt",
+ "HubitatComponentGt_Maker",
+ "HubitatRESTResolutionSettings",
+ "HubitatTankCacGt",
+ "HubitatTankCacGt_Maker",
+ "HubitatTankComponentGt",
+ "HubitatTankComponentGt_Maker",
+ "HubitatTankSettingsGt",
"MultipurposeSensorCacGt",
"MultipurposeSensorCacGt_Maker",
# "MultipurposeSensorComponentGt",
@@ -127,10 +174,19 @@
"RelayCacGt_Maker",
"RelayComponentGt",
"RelayComponentGt_Maker",
+ "RequestArgs",
"ResistiveHeaterCacGt",
"ResistiveHeaterCacGt_Maker",
"ResistiveHeaterComponentGt",
"ResistiveHeaterComponentGt_Maker",
+ "RESTPollerSettings",
+ "RESTPollerCacGt",
+ "RESTPollerCacGt_Maker",
+ "RESTPollerComponentGt",
+ "RESTPollerComponentGt_Maker",
+ "RelayComponentGt",
+ "RelayComponentGt_Maker",
+ "SessionArgs",
"SimpleTempSensorCacGt",
"SimpleTempSensorCacGt_Maker",
"SimpleTempSensorComponentGt",
@@ -143,4 +199,6 @@
"TelemetryReportingConfig_Maker",
"TelemetrySnapshotSpaceheat",
"TelemetrySnapshotSpaceheat_Maker",
+ "URLArgs",
+ "URLConfig",
]
diff --git a/src/gwproto/types/component_attribute_class_gt.py b/src/gwproto/types/component_attribute_class_gt.py
index 57694302..c29eada4 100644
--- a/src/gwproto/types/component_attribute_class_gt.py
+++ b/src/gwproto/types/component_attribute_class_gt.py
@@ -68,15 +68,14 @@ def _check_component_attribute_class_id(cls, v: str) -> str:
check_is_uuid_canonical_textual(v)
except ValueError as e:
raise ValueError(
- f"ComponentAttributeClassId failed UuidCanonicalTextual format validation: {e}"
+ f"ComponentAttributeClassId <{v}> failed UuidCanonicalTextual format validation: {e}"
)
return v
def as_dict(self) -> Dict[str, Any]:
- d = self.dict()
- if d["DisplayName"] is None:
- del d["DisplayName"]
- return d
+ return self.dict(
+ include=self.__fields_set__ | {"TypeName"},
+ )
def as_type(self) -> str:
return json.dumps(self.as_dict())
diff --git a/src/gwproto/types/component_gt.py b/src/gwproto/types/component_gt.py
index 6e15666a..146b301d 100644
--- a/src/gwproto/types/component_gt.py
+++ b/src/gwproto/types/component_gt.py
@@ -74,7 +74,7 @@ def _check_component_id(cls, v: str) -> str:
check_is_uuid_canonical_textual(v)
except ValueError as e:
raise ValueError(
- f"ComponentId failed UuidCanonicalTextual format validation: {e}"
+ f"ComponentId <{v}> failed UuidCanonicalTextual format validation: {e}"
)
return v
@@ -84,17 +84,14 @@ def _check_component_attribute_class_id(cls, v: str) -> str:
check_is_uuid_canonical_textual(v)
except ValueError as e:
raise ValueError(
- f"ComponentAttributeClassId failed UuidCanonicalTextual format validation: {e}"
+ f"ComponentAttributeClassId <{v}> failed UuidCanonicalTextual format validation: {e}"
)
return v
def as_dict(self) -> Dict[str, Any]:
- d = self.dict()
- if d["DisplayName"] is None:
- del d["DisplayName"]
- if d["HwUid"] is None:
- del d["HwUid"]
- return d
+ return self.dict(
+ include=self.__fields_set__ | {"TypeName"},
+ )
def as_type(self) -> str:
return json.dumps(self.as_dict())
diff --git a/src/gwproto/types/fibaro_smart_implant_cac_gt.py b/src/gwproto/types/fibaro_smart_implant_cac_gt.py
new file mode 100644
index 00000000..cb71d7fa
--- /dev/null
+++ b/src/gwproto/types/fibaro_smart_implant_cac_gt.py
@@ -0,0 +1,79 @@
+import json
+import typing
+from typing import Any
+from typing import Literal
+
+from pydantic import Extra
+
+from gwproto.data_classes.cacs.fibaro_smart_implant_cac import FibaroSmartImplantCac
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+from gwproto.types import ComponentAttributeClassGt
+
+
+class FibaroSmartImplantCacGt(ComponentAttributeClassGt):
+ Model: str = ""
+ TypeName: Literal["fibaro.smart.implant.cac.gt"] = "fibaro.smart.implant.cac.gt"
+ Version: str = "000"
+
+ class Config:
+ extra = Extra.allow
+
+ @classmethod
+ def from_data_class(cls, cac: FibaroSmartImplantCac) -> "FibaroSmartImplantCacGt":
+ return FibaroSmartImplantCacGt(
+ ComponentAttributeClassId=cac.component_attribute_class_id,
+ DisplayName=cac.display_name,
+ )
+
+ def to_data_class(self) -> FibaroSmartImplantCac:
+ cac = ComponentAttributeClass.by_id.get(self.ComponentAttributeClassId, None)
+ if cac is not None:
+ return typing.cast(FibaroSmartImplantCac, cac)
+ return FibaroSmartImplantCac(
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ display_name=self.DisplayName,
+ )
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+
+class FibaroSmartImplantCacGt_Maker:
+ type_name: str = FibaroSmartImplantCacGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: FibaroSmartImplantCacGt
+
+ def __init__(self, cac: FibaroSmartImplantCac):
+ self.tuple = FibaroSmartImplantCacGt.from_data_class(cac)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: FibaroSmartImplantCacGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> FibaroSmartImplantCacGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> FibaroSmartImplantCacGt:
+ return FibaroSmartImplantCacGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: FibaroSmartImplantCacGt) -> FibaroSmartImplantCac:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: FibaroSmartImplantCac) -> FibaroSmartImplantCacGt:
+ return FibaroSmartImplantCacGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> FibaroSmartImplantCac:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: FibaroSmartImplantCac) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> FibaroSmartImplantCac:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/fibaro_smart_implant_component_gt.py b/src/gwproto/types/fibaro_smart_implant_component_gt.py
new file mode 100644
index 00000000..202148a5
--- /dev/null
+++ b/src/gwproto/types/fibaro_smart_implant_component_gt.py
@@ -0,0 +1,86 @@
+import json
+import typing
+from typing import Any
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.components.fibaro_smart_implant_component import (
+ FibaroSmartImplantComponent,
+)
+from gwproto.types import ComponentGt
+
+
+class FibaroSmartImplantComponentGt(ComponentGt):
+ ZWaveDSK: str = ""
+ TypeName: typing.Literal[
+ "fibaro.smart.implant.component.gt"
+ ] = "fibaro.smart.implant.component.gt"
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+ @classmethod
+ def from_data_class(
+ cls, component: FibaroSmartImplantComponent
+ ) -> "FibaroSmartImplantComponentGt":
+ return FibaroSmartImplantComponentGt(
+ ComponentId=component.component_id,
+ ComponentAttributeClassId=component.component_attribute_class_id,
+ DisplayName=component.display_name,
+ HwUid=component.hw_uid,
+ )
+
+ def to_data_class(self) -> FibaroSmartImplantComponent:
+ component = Component.by_id.get(self.ComponentId, None)
+ if component is not None:
+ return typing.cast(FibaroSmartImplantComponent, component)
+ return FibaroSmartImplantComponent(
+ component_id=self.ComponentId,
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ display_name=self.DisplayName,
+ hw_uid=self.HwUid,
+ )
+
+
+class FibaroSmartImplantComponentGt_Maker:
+ type_name: str = FibaroSmartImplantComponentGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: FibaroSmartImplantComponentGt
+
+ def __init__(self, component: FibaroSmartImplantComponent):
+ self.tuple = FibaroSmartImplantComponentGt.from_data_class(component)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: FibaroSmartImplantComponentGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> FibaroSmartImplantComponentGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> FibaroSmartImplantComponentGt:
+ return FibaroSmartImplantComponentGt(**d)
+
+ @classmethod
+ def tuple_to_dc(
+ cls, t: FibaroSmartImplantComponentGt
+ ) -> FibaroSmartImplantComponent:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(
+ cls, dc: FibaroSmartImplantComponent
+ ) -> FibaroSmartImplantComponentGt:
+ return FibaroSmartImplantComponentGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> FibaroSmartImplantComponent:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: FibaroSmartImplantComponent) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> FibaroSmartImplantComponent:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/hubitat_cac_gt.py b/src/gwproto/types/hubitat_cac_gt.py
new file mode 100644
index 00000000..6b14d65e
--- /dev/null
+++ b/src/gwproto/types/hubitat_cac_gt.py
@@ -0,0 +1,72 @@
+import json
+import typing
+from typing import Literal
+
+from gwproto.data_classes.cacs.hubitat_cac import HubitatCac
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+from gwproto.types.component_attribute_class_gt import ComponentAttributeClassGt
+
+
+class HubitatCacGt(ComponentAttributeClassGt):
+ TypeName: Literal["hubitat.cac.gt"] = "hubitat.cac.gt"
+ Version: str = "000"
+
+ @classmethod
+ def from_data_class(cls, cac: HubitatCac) -> "HubitatCacGt":
+ return HubitatCacGt(
+ ComponentAttributeClassId=cac.component_attribute_class_id,
+ DisplayName=cac.display_name,
+ )
+
+ def to_data_class(self) -> HubitatCac:
+ cac = ComponentAttributeClass.by_id.get(self.ComponentAttributeClassId, None)
+ if cac is not None:
+ return typing.cast(HubitatCac, cac)
+ return HubitatCac(
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ display_name=self.DisplayName,
+ )
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+
+class HubitatCacGt_Maker:
+ type_name: str = HubitatCacGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: HubitatCacGt
+
+ def __init__(self, cac: HubitatCac):
+ self.tuple = HubitatCacGt.from_data_class(cac)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: HubitatCacGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> HubitatCacGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, typing.Any]) -> HubitatCacGt:
+ return HubitatCacGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: HubitatCacGt) -> HubitatCac:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: HubitatCac) -> HubitatCacGt:
+ return HubitatCacGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> HubitatCac:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: HubitatCac) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[typing.Any, str]) -> HubitatCac:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/hubitat_component_gt.py b/src/gwproto/types/hubitat_component_gt.py
new file mode 100644
index 00000000..03935563
--- /dev/null
+++ b/src/gwproto/types/hubitat_component_gt.py
@@ -0,0 +1,103 @@
+import json
+import typing
+from typing import Any
+from typing import Dict
+from typing import Literal
+from typing import Optional
+
+import yarl
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.components.hubitat_component import HubitatComponent
+from gwproto.types.component_gt import ComponentGt
+from gwproto.types.hubitat_gt import HubitatGt
+from gwproto.types.rest_poller_gt import URLConfig
+
+
+class HubitatComponentGt(ComponentGt):
+ Hubitat: HubitatGt
+ TypeName: Literal["hubitat.component.gt"] = "hubitat.component.gt"
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+ def url_config(self) -> URLConfig:
+ return self.Hubitat.url_config()
+
+ def maker_api_url_config(self) -> URLConfig:
+ return self.Hubitat.maker_api_url_config()
+
+ def urls(self) -> dict[str, Optional[yarl.URL]]:
+ return self.Hubitat.urls()
+
+ @classmethod
+ def from_data_class(cls, component: HubitatComponent) -> "HubitatComponentGt":
+ return HubitatComponentGt(
+ ComponentId=component.component_id,
+ ComponentAttributeClassId=component.component_attribute_class_id,
+ Hubitat=component.hubitat_gt,
+ DisplayName=component.display_name,
+ HwUid=component.hw_uid,
+ )
+
+ def to_data_class(self) -> HubitatComponent:
+ component = Component.by_id.get(self.ComponentId, None)
+ if component is not None:
+ return typing.cast(HubitatComponent, component)
+ return HubitatComponent(
+ component_id=self.ComponentId,
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ hubitat_gt=self.Hubitat,
+ display_name=self.DisplayName,
+ hw_uid=self.HwUid,
+ )
+
+
+class HubitatRESTResolutionSettings:
+ component_gt: HubitatComponentGt
+ maker_api_url_config: URLConfig
+
+ def __init__(self, component_gt: HubitatComponentGt):
+ self.component_gt = component_gt
+ self.maker_api_url_config = self.component_gt.maker_api_url_config()
+
+
+class HubitatComponentGt_Maker:
+ type_name: str = HubitatComponentGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: HubitatComponentGt
+
+ def __init__(self, component: HubitatComponent):
+ self.tuple = HubitatComponentGt.from_data_class(component)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: HubitatComponentGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> HubitatComponentGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> HubitatComponentGt:
+ return HubitatComponentGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: HubitatComponentGt) -> HubitatComponent:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: HubitatComponent) -> HubitatComponentGt:
+ return HubitatComponentGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> HubitatComponent:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: HubitatComponent) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> HubitatComponent:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/hubitat_gt.py b/src/gwproto/types/hubitat_gt.py
new file mode 100644
index 00000000..e2f47170
--- /dev/null
+++ b/src/gwproto/types/hubitat_gt.py
@@ -0,0 +1,57 @@
+from typing import Optional
+
+import yarl
+from gridworks.property_format import predicate_validator
+from pydantic import BaseModel
+
+from gwproto.types.rest_poller_gt import URLArgs
+from gwproto.types.rest_poller_gt import URLConfig
+from gwproto.utils import has_mac_address_format
+
+
+class HubitatGt(BaseModel):
+ Host: str
+ MakerApiId: int
+ AccessToken: str
+ MacAddress: str
+
+ _is_mac_address = predicate_validator("MacAddress", has_mac_address_format)
+
+ def url_config(self) -> URLConfig:
+ return URLConfig(
+ url_args=URLArgs(
+ scheme="http",
+ host=self.Host,
+ ),
+ )
+
+ def maker_api_url_config(self) -> URLConfig:
+ config = self.url_config()
+ if config.url_args.query is None:
+ config.url_args.query = []
+ config.url_args.query.append(("access_token", self.AccessToken))
+ if config.url_path_format is None:
+ config.url_path_format = ""
+ config.url_path_format += "/apps/api/{app_id}"
+ if config.url_path_args is None:
+ config.url_path_args = {}
+ config.url_path_args.update({"app_id": self.MakerApiId})
+ return config
+
+ def devices_url_config(self) -> URLConfig:
+ config = self.maker_api_url_config()
+ config.url_path_format += "/devices"
+ return config
+
+ def url_configs(self) -> dict[str, URLConfig]:
+ return dict(
+ base=self.url_config(),
+ maker_api=self.maker_api_url_config(),
+ devices=self.devices_url_config(),
+ )
+
+ def urls(self) -> dict[str, Optional[yarl.URL]]:
+ return {
+ name: URLConfig.make_url(config)
+ for name, config in self.url_configs().items()
+ }
diff --git a/src/gwproto/types/hubitat_tank_cac_gt.py b/src/gwproto/types/hubitat_tank_cac_gt.py
new file mode 100644
index 00000000..c82b5a63
--- /dev/null
+++ b/src/gwproto/types/hubitat_tank_cac_gt.py
@@ -0,0 +1,72 @@
+import json
+import typing
+from typing import Literal
+
+from gwproto.data_classes.cacs.hubitat_tank_module_cac import HubitatTankModuleCac
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+from gwproto.types.component_attribute_class_gt import ComponentAttributeClassGt
+
+
+class HubitatTankCacGt(ComponentAttributeClassGt):
+ TypeName: Literal["hubitat.tank.cac.gt"] = "hubitat.tank.cac.gt"
+ Version: str = "000"
+
+ @classmethod
+ def from_data_class(cls, cac: HubitatTankModuleCac) -> "HubitatTankCacGt":
+ return HubitatTankCacGt(
+ ComponentAttributeClassId=cac.component_attribute_class_id,
+ DisplayName=cac.display_name,
+ )
+
+ def to_data_class(self) -> HubitatTankModuleCac:
+ cac = ComponentAttributeClass.by_id.get(self.ComponentAttributeClassId, None)
+ if cac is not None:
+ return typing.cast(HubitatTankModuleCac, cac)
+ return HubitatTankModuleCac(
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ display_name=self.DisplayName,
+ )
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+
+class HubitatTankCacGt_Maker:
+ type_name: str = HubitatTankCacGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: HubitatTankCacGt
+
+ def __init__(self, cac: HubitatTankModuleCac):
+ self.tuple = HubitatTankCacGt.from_data_class(cac)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: HubitatTankCacGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> HubitatTankCacGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, typing.Any]) -> HubitatTankCacGt:
+ return HubitatTankCacGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: HubitatTankCacGt) -> HubitatTankModuleCac:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: HubitatTankModuleCac) -> HubitatTankCacGt:
+ return HubitatTankCacGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> HubitatTankModuleCac:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: HubitatTankModuleCac) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[typing.Any, str]) -> HubitatTankModuleCac:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/hubitat_tank_component_gt.py b/src/gwproto/types/hubitat_tank_component_gt.py
new file mode 100644
index 00000000..03371faa
--- /dev/null
+++ b/src/gwproto/types/hubitat_tank_component_gt.py
@@ -0,0 +1,86 @@
+import copy
+import json
+import typing
+from typing import Any
+from typing import Literal
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.components.hubitat_tank_component import HubitatTankComponent
+from gwproto.types.component_gt import ComponentGt
+from gwproto.types.hubitat_tank_gt import HubitatTankSettingsGt
+
+
+class HubitatTankComponentGt(ComponentGt):
+ Tank: HubitatTankSettingsGt
+ TypeName: Literal["hubitat.tank.component.gt"] = "hubitat.tank.component.gt"
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+ @classmethod
+ def from_data_class(
+ cls, component: HubitatTankComponent
+ ) -> "HubitatTankComponentGt":
+ return HubitatTankComponentGt(
+ ComponentId=component.component_id,
+ ComponentAttributeClassId=component.component_attribute_class_id,
+ Tank=HubitatTankSettingsGt(
+ hubitat_component_id=component.hubitat.ComponentId,
+ devices=copy.deepcopy(component.devices),
+ ),
+ DisplayName=component.display_name,
+ HwUid=component.hw_uid,
+ )
+
+ def to_data_class(self) -> HubitatTankComponent:
+ component = Component.by_id.get(self.ComponentId, None)
+ if component is not None:
+ return typing.cast(HubitatTankComponent, component)
+ return HubitatTankComponent(
+ component_id=self.ComponentId,
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ tank_gt=self.Tank,
+ display_name=self.DisplayName,
+ hw_uid=self.HwUid,
+ )
+
+
+class HubitatTankComponentGt_Maker:
+ type_name: str = HubitatTankComponentGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: HubitatTankComponentGt
+
+ def __init__(self, component: HubitatTankComponent):
+ self.tuple = HubitatTankComponentGt.from_data_class(component)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: HubitatTankComponentGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> HubitatTankComponentGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> HubitatTankComponentGt:
+ return HubitatTankComponentGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: HubitatTankComponentGt) -> HubitatTankComponent:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: HubitatTankComponent) -> HubitatTankComponentGt:
+ return HubitatTankComponentGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> HubitatTankComponent:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: HubitatTankComponent) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> HubitatTankComponent:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/hubitat_tank_gt.py b/src/gwproto/types/hubitat_tank_gt.py
new file mode 100644
index 00000000..53cd5a88
--- /dev/null
+++ b/src/gwproto/types/hubitat_tank_gt.py
@@ -0,0 +1,228 @@
+import copy
+import re
+from functools import cached_property
+from typing import Optional
+
+import yarl
+from pydantic import BaseModel
+from pydantic import Extra
+from pydantic import conint
+from pydantic import validator
+
+from gwproto.enums import TelemetryName as EnumTelemetryName
+from gwproto.enums import Unit as EnumUnit
+from gwproto.types.hubitat_component_gt import HubitatRESTResolutionSettings
+from gwproto.types.rest_poller_gt import RequestArgs
+from gwproto.types.rest_poller_gt import RESTPollerSettings
+from gwproto.types.rest_poller_gt import URLArgs
+from gwproto.types.rest_poller_gt import URLConfig
+from gwproto.types.simple_temp_sensor_cac_gt import TelemetryNameMap
+from gwproto.types.simple_temp_sensor_cac_gt import UnitMap
+from gwproto.utils import snake_to_camel
+
+
+HUBITAT_ID_REGEX = re.compile(
+ r".*/apps/api/(?P-?\d+)/devices/(?P-?\d+).*?"
+)
+HUBITAT_ACCESS_TOKEN_REGEX = re.compile(
+ r".*\?.*access_token=(?P[a-fA-F0-9\-]+).*"
+)
+
+
+class FibaroTempSensorSettingsGt(BaseModel):
+ stack_depth: conint(ge=1)
+ device_id: int
+ fibaro_component_id: str
+ analog_input_id: conint(ge=1, le=2)
+ tank_label: str = ""
+ exponent: int = 1
+ telemetry_name_gt_enum_symbol: str = "c89d0ba1"
+ temp_unit_gt_enum_symbol: str = "ec14bd47"
+ enabled: bool = True
+ rest: Optional[RESTPollerSettings] = None
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+ @validator("telemetry_name_gt_enum_symbol")
+ def _check_telemetry_name_symbol(cls, v: str) -> str:
+ if v not in TelemetryNameMap.type_to_versioned_enum_dict:
+ v = TelemetryNameMap.local_to_type(EnumTelemetryName.default())
+ return v
+
+ @validator("temp_unit_gt_enum_symbol")
+ def _checktemp_unit_gt_enum_symbol(cls, v: str) -> str:
+ if v not in UnitMap.type_to_versioned_enum_dict:
+ v = UnitMap.local_to_type(EnumUnit.default())
+ return v
+
+
+DEFAULT_SENSOR_NODE_NAME_FORMAT = "{tank_name}.temp.depth{stack_depth}"
+
+
+class FibaroTempSensorSettings(FibaroTempSensorSettingsGt):
+ node_name: str
+
+ class Config:
+ keep_untouched = (cached_property, EnumTelemetryName)
+
+ @validator("rest")
+ def _collapse_rest_url(cls, v: Optional[RESTPollerSettings]):
+ if v is not None:
+ # Collapse session.base_url and request.url into
+ # request.url.
+ collapsed_url = v.url
+ v.session.base_url = URLConfig()
+ v.request.url.url_args = URLArgs.from_url(collapsed_url)
+ return v
+
+ @property
+ def telemetry_name(self) -> EnumTelemetryName:
+ return TelemetryNameMap.type_to_local(
+ self.telemetry_name_gt_enum_symbol,
+ )
+
+ @property
+ def unit(self) -> EnumUnit:
+ return UnitMap.type_to_local(
+ self.temp_unit_gt_enum_symbol,
+ )
+
+ @cached_property
+ def url(self) -> yarl.URL:
+ return self.rest.url
+
+ @cached_property
+ def api_id(self) -> int:
+ return int(HUBITAT_ID_REGEX.match(str(self.url)).group("api_id"))
+
+ @property
+ def host(self) -> str:
+ return self.rest.url.host
+
+ @cached_property
+ def access_token(self) -> Optional[str]:
+ match = HUBITAT_ACCESS_TOKEN_REGEX.match(str(self.url))
+ if match:
+ return match.group("access_token")
+ return None
+
+ def clear_property_cache(self):
+ if self.rest is not None:
+ self.rest.clear_property_cache()
+ for prop in [
+ "url",
+ "api_id",
+ "access_token",
+ ]:
+ self.__dict__.pop(prop, None)
+
+ def resolve_rest(
+ self,
+ hubitat: HubitatRESTResolutionSettings,
+ ) -> None:
+ # Constuct url config on top of maker api url url config
+ constructed_config = copy.deepcopy(hubitat.maker_api_url_config)
+ constructed_config.url_path_format += "/devices/{device_id}/refresh"
+ constructed_config.url_path_args["device_id"] = self.device_id
+
+ if self.rest is None:
+ # Since no "inline" rest configuration is present, use constructed url config
+ self.rest = RESTPollerSettings(request=RequestArgs(url=constructed_config))
+ else:
+ # Again, no inline url config is found; use constructed url config
+ if self.rest.request.url is None:
+ self.rest.request.url = constructed_config
+ else:
+ # An inline config exists; take items *not* in inline config from
+ # constructed config (inline config 'wins' on disagreement)
+ existing_config = self.rest.request.url
+ if not existing_config.url_args.host:
+ existing_config.url_args.host = constructed_config.url_args.host
+ if existing_config.url_path_format is None:
+ existing_config.url_path_format = constructed_config.url_path_format
+ if existing_config.url_path_args is None:
+ existing_config.url_path_args = constructed_config.url_path_args
+ else:
+ existing_config.url_path_args = dict(
+ constructed_config.url_path_args,
+ **existing_config.url_path_args,
+ )
+ self.rest.clear_property_cache()
+
+ # Verify new URL produced by combining any inline REST configuration
+ # with hubitat configuration is valid.
+ url_str = str(self.rest.url)
+ hubitat_gt = hubitat.component_gt.Hubitat
+ # check host
+ if hubitat_gt.Host != self.rest.url.host:
+ raise ValueError(
+ "ERROR host expected to be "
+ f"{hubitat_gt.Host} but host in url is "
+ f"{self.rest.url.host}, from url: <{url_str}>"
+ )
+
+ # check api_id
+ if hubitat_gt.MakerApiId != self.api_id:
+ raise ValueError(
+ "ERROR api_id expected to be "
+ f"{hubitat_gt.MakerApiId} but api_id in url is "
+ f"{self.api_id}, from url: <{url_str}>"
+ )
+
+ # check device_id
+ id_match = HUBITAT_ID_REGEX.match(url_str)
+ if not id_match:
+ raise ValueError(
+ f"ERROR. ID regex <{HUBITAT_ID_REGEX.pattern}> failed to match "
+ f" url <{url_str}>"
+ )
+ found_device_id = int(id_match.group("device_id"))
+ if self.device_id != found_device_id:
+ raise ValueError(
+ "ERROR explicit device_id is "
+ f"{self.device_id} but device in url is "
+ f"{found_device_id}, from url: <{url_str}>"
+ )
+
+ # check token match
+ if hubitat_gt.AccessToken != self.access_token:
+ raise ValueError(
+ "ERROR explicit access_token is "
+ f"{hubitat_gt.AccessToken} but device in url is "
+ f"{self.access_token}, from url: <{url_str}>"
+ )
+
+ @classmethod
+ def create(
+ cls,
+ tank_name: str,
+ settings_gt: FibaroTempSensorSettingsGt,
+ hubitat: HubitatRESTResolutionSettings,
+ node_name_format=DEFAULT_SENSOR_NODE_NAME_FORMAT,
+ ) -> "FibaroTempSensorSettings":
+ settings = FibaroTempSensorSettings(
+ node_name=node_name_format.format(
+ tank_name=tank_name,
+ stack_depth=settings_gt.stack_depth,
+ ),
+ **settings_gt.dict(),
+ )
+ settings.resolve_rest(hubitat)
+ return settings
+
+
+DEFAULT_TANK_MODULE_VOLTAGE = 23.7
+
+
+class HubitatTankSettingsGt(BaseModel):
+ hubitat_component_id: str
+ sensor_supply_voltage: float = DEFAULT_TANK_MODULE_VOLTAGE
+ devices: list[FibaroTempSensorSettingsGt] = []
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
diff --git a/src/gwproto/types/rest_poller_cac_gt.py b/src/gwproto/types/rest_poller_cac_gt.py
new file mode 100644
index 00000000..104ee55c
--- /dev/null
+++ b/src/gwproto/types/rest_poller_cac_gt.py
@@ -0,0 +1,90 @@
+import json
+import typing
+from typing import Any
+from typing import Dict
+from typing import Literal
+from typing import Optional
+
+from pydantic import UUID4
+from pydantic import BaseModel
+from pydantic import validator
+
+from gwproto.data_classes.cacs.rest_poller_cac import RESTPollerCac
+from gwproto.data_classes.component_attribute_class import ComponentAttributeClass
+
+
+class RESTPollerCacGt(BaseModel):
+ ComponentAttributeClassId: str
+ DisplayName: Optional[str] = None
+ TypeName: Literal["rest.poller.cac.gt"] = "rest.poller.cac.gt"
+ Version: str = "000"
+
+ @validator("ComponentAttributeClassId")
+ def _check_component_attribute_class_id(cls, v: str) -> str:
+ return str(UUID4(v))
+
+ def as_dict(self) -> Dict[str, Any]:
+ return self.dict(exclude_unset=True)
+
+ def as_type(self) -> str:
+ return json.dumps(self.as_dict())
+
+ @classmethod
+ def from_data_class(cls, cac: RESTPollerCac) -> "RESTPollerCacGt":
+ return RESTPollerCacGt(
+ ComponentAttributeClassId=cac.component_attribute_class_id,
+ DisplayName=cac.display_name,
+ )
+
+ def to_data_class(self) -> RESTPollerCac:
+ cac = ComponentAttributeClass.by_id.get(self.ComponentAttributeClassId, None)
+ if cac is not None:
+ return typing.cast(RESTPollerCac, cac)
+ return RESTPollerCac(
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ display_name=self.DisplayName,
+ )
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+
+class RESTPollerCacGt_Maker:
+ type_name: str = RESTPollerCacGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: RESTPollerCacGt
+
+ def __init__(self, cac: RESTPollerCac):
+ self.tuple = RESTPollerCacGt.from_data_class(cac)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: RESTPollerCacGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> RESTPollerCacGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> RESTPollerCacGt:
+ return RESTPollerCacGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: RESTPollerCacGt) -> RESTPollerCac:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: RESTPollerCac) -> RESTPollerCacGt:
+ return RESTPollerCacGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> RESTPollerCac:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: RESTPollerCac) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> RESTPollerCac:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/rest_poller_component_gt.py b/src/gwproto/types/rest_poller_component_gt.py
new file mode 100644
index 00000000..b38d02ba
--- /dev/null
+++ b/src/gwproto/types/rest_poller_component_gt.py
@@ -0,0 +1,106 @@
+"""Code for actors that use a simple rest interaction, converting the response to one or more
+REST commands into a message posted to main processing thread.
+
+"""
+import json
+import typing
+from typing import Any
+from typing import Dict
+from typing import Optional
+
+from pydantic import UUID4
+from pydantic import BaseModel
+from pydantic import validator
+
+from gwproto.data_classes.component import Component
+from gwproto.data_classes.components.rest_poller_component import RESTPollerComponent
+from gwproto.types.rest_poller_gt import RESTPollerSettings
+
+
+class RESTPollerComponentGt(BaseModel):
+ ComponentId: str
+ ComponentAttributeClassId: str
+ DisplayName: Optional[str] = None
+ HwUid: Optional[str] = None
+ Rest: RESTPollerSettings
+ TypeName: typing.Literal["rest.poller.component.gt"] = "rest.poller.component.gt"
+
+ @validator("ComponentId")
+ def _check_component_id(cls, v: str) -> str:
+ return str(UUID4(v))
+
+ @validator("ComponentAttributeClassId")
+ def _check_component_attribute_class_id(cls, v: str) -> str:
+ return str(UUID4(v))
+
+ def as_dict(self) -> Dict[str, Any]:
+ return self.dict(exclude_unset=True)
+
+ def as_type(self) -> str:
+ return json.dumps(self.as_dict())
+
+ def __hash__(self):
+ return hash((type(self),) + tuple(self.__dict__.values()))
+
+ @classmethod
+ def from_data_class(cls, component: RESTPollerComponent) -> "RESTPollerComponentGt":
+ return RESTPollerComponentGt(
+ ComponentId=component.component_id,
+ ComponentAttributeClassId=component.component_attribute_class_id,
+ DisplayName=component.display_name,
+ HwUid=component.hw_uid,
+ Rest=component.rest,
+ )
+
+ def to_data_class(self) -> RESTPollerComponent:
+ component = Component.by_id.get(self.ComponentId, None)
+ if component is not None:
+ return typing.cast(RESTPollerComponent, component)
+ return RESTPollerComponent(
+ component_id=self.ComponentId,
+ component_attribute_class_id=self.ComponentAttributeClassId,
+ rest=self.Rest,
+ display_name=self.DisplayName,
+ hw_uid=self.HwUid,
+ )
+
+
+class RESTPollerComponentGt_Maker:
+ type_name: str = RESTPollerComponentGt.__fields__["TypeName"].default
+ version = "000"
+ tuple: RESTPollerComponentGt
+
+ def __init__(self, component: RESTPollerComponent):
+ self.tuple = RESTPollerComponentGt.from_data_class(component)
+
+ @classmethod
+ def tuple_to_type(cls, tpl: RESTPollerComponentGt) -> str:
+ return tpl.as_type()
+
+ @classmethod
+ def type_to_tuple(cls, t: str) -> RESTPollerComponentGt:
+ return cls.dict_to_tuple(json.loads(t))
+
+ @classmethod
+ def dict_to_tuple(cls, d: dict[str, Any]) -> RESTPollerComponentGt:
+ return RESTPollerComponentGt(**d)
+
+ @classmethod
+ def tuple_to_dc(cls, t: RESTPollerComponentGt) -> RESTPollerComponent:
+ return t.to_data_class()
+
+ @classmethod
+ def dc_to_tuple(cls, dc: RESTPollerComponent) -> RESTPollerComponentGt:
+ return RESTPollerComponentGt.from_data_class(dc)
+
+ @classmethod
+ def type_to_dc(cls, t: str) -> RESTPollerComponent:
+ return cls.tuple_to_dc(cls.type_to_tuple(t))
+
+ @classmethod
+ def dc_to_type(cls, dc: RESTPollerComponent) -> str:
+ return cls.dc_to_tuple(dc).as_type()
+
+ @classmethod
+ def dict_to_dc(cls, d: dict[Any, str]) -> RESTPollerComponent:
+ return cls.tuple_to_dc(cls.dict_to_tuple(d))
diff --git a/src/gwproto/types/rest_poller_gt.py b/src/gwproto/types/rest_poller_gt.py
new file mode 100644
index 00000000..ce90361e
--- /dev/null
+++ b/src/gwproto/types/rest_poller_gt.py
@@ -0,0 +1,263 @@
+"""Code for actors that use a simple rest interaction, converting the response to one or more
+REST commands into a message posted to main processing thread.
+
+"""
+from functools import cached_property
+from typing import Literal
+from typing import Optional
+from typing import Tuple
+
+import yarl
+from pydantic import BaseModel
+from pydantic import Extra
+from pydantic import HttpUrl
+from pydantic import root_validator
+
+from gwproto.utils import snake_to_camel
+
+
+class URLArgs(BaseModel):
+ """A container for paramters that can be passed to yarl.URL.build()"""
+
+ scheme: Literal["http", "https", ""] = "https"
+ user: Optional[str] = None
+ password: Optional[str] = None
+ host: str = ""
+ port: Optional[int] = None
+ path: str = ""
+ query: Optional[list[Tuple[str, str | int | float]]] = None
+ fragment: str = ""
+ encoded: bool = True
+
+ class Config:
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+ @classmethod
+ def dict_from_url(cls, url: str | yarl.URL) -> dict:
+ if isinstance(url, str):
+ url = yarl.URL(url)
+ return dict(
+ scheme=url.scheme,
+ user=url.user,
+ password=url.password,
+ host=url.host,
+ port=url.port,
+ path=url.path,
+ query=list(url.query.items()),
+ fragment=url.fragment,
+ )
+
+ @classmethod
+ def from_url(cls, url: str | yarl.URL) -> "URLArgs":
+ return URLArgs(**cls.dict_from_url(url))
+
+
+class URLConfig(BaseModel):
+ """Construct a URL. Three methods are provided. They are run in order of appearance,
+ each updating and/or modifying the previous method.
+
+ The methods are:
+ - 'URL', an explicit string (e.g. https://www.example.org)
+ - 'URLArgs', a dictionary of arguments that will be passed to yarl.URL.build()
+ - 'URLPathFormat' and 'URLPathArgs', a format string and optional parameters used to
+ set the 'path' portion of a yarl.URL.
+
+ See make_url() for implementation.
+ """
+
+ url: Optional[HttpUrl] = None
+ """URL as an explicit string"""
+
+ url_args: Optional[URLArgs] = None
+ """Arguments that can be passed to yarl.URL.build()"""
+
+ url_path_format: str = ""
+ """A string or format string used for the 'path' portion of the URL.
+ This string will be formatted with the contents of url_path_args.
+ For example, url_path_format="a/{device_id}/b" could be used used with
+ url_path_args={"device_id":1} to produce a 'path' of "a/1/b".
+ See make_url() for details.
+ """
+
+ url_path_args: Optional[dict[str, str | int | float]] = None
+ """A dictionary of parameters used for filling in url_path_format to
+ produce the URL 'path' field. The formatting operation is done as
+ url_path_format.format(**URLPathArgs). See make_url() for details.
+ """
+
+ class Config:
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+ def to_url(self) -> yarl.URL:
+ return self.make_url(self)
+
+ @classmethod
+ def make_url_args(cls, url_config: "URLConfig") -> Optional[dict]:
+ if url_config is None:
+ return None
+
+ # args from self.url
+ if url_config.url is None:
+ url_args = dict()
+ else:
+ url_args = dict(URLArgs.from_url(yarl.URL(url_config.url)))
+
+ # args from self.url_args
+ if url_config.url_args is not None:
+ url_args.update(url_config.url_args)
+
+ # args from url_path_format
+ if url_config.url_path_format:
+ path = url_config.url_path_format
+ if url_config.url_path_args:
+ path = path.format(**url_config.url_path_args)
+ url_args["path"] = path
+
+ return url_args
+
+ @classmethod
+ def make_url(cls, url_config: "URLConfig") -> Optional[yarl.URL]:
+ args = URLConfig.make_url_args(url_config)
+ if args:
+ return yarl.URL.build(**args)
+ return None
+
+
+class AioHttpClientTimeout(BaseModel):
+ total: Optional[float] = None
+ connect: Optional[float] = None
+ sock_read: Optional[float] = None
+ sock_connect: Optional[float] = None
+
+ class Config:
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+
+class SessionArgs(BaseModel):
+ base_url: Optional[URLConfig] = None
+ timeout: Optional[AioHttpClientTimeout] = None
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+
+class RequestArgs(BaseModel):
+ url: Optional[URLConfig] = None
+ method: Literal["GET", "POST", "PUT", "DELETE"] = "GET"
+ params: Optional[dict] = None
+ data: Optional[dict | list | tuple] = None
+ headers: Optional[dict] = None
+ timeout: AioHttpClientTimeout = None
+ ssl: Optional[bool] = None
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+
+class ErrorResponse(BaseModel):
+ error_for_http_status: bool = True
+ raise_exception: bool = False
+ report: bool = True
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+
+class ErrorResponses(BaseModel):
+ request: ErrorResponse = ErrorResponse()
+ convert: ErrorResponse = ErrorResponse()
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+
+
+class RESTPollerSettings(BaseModel):
+ session: SessionArgs = SessionArgs()
+ request: RequestArgs = RequestArgs()
+ poll_period_seconds: float = 60
+ errors: ErrorResponses = ErrorResponses()
+
+ class Config:
+ extra = Extra.allow
+ alias_generator = snake_to_camel
+ allow_population_by_field_name = True
+ keep_untouched = (cached_property,)
+
+ def url_args(self) -> dict:
+ session_args = URLConfig.make_url_args(self.session.base_url)
+ request_args = URLConfig.make_url_args(self.request.url)
+ if session_args is None and request_args is None:
+ if session_args is None and request_args is None:
+ raise ValueError(
+ "Neither session.base_url nor request.url produces a URL"
+ )
+ if session_args is not None:
+ url_args = session_args
+ if request_args is not None:
+ url_args.update(request_args)
+ else:
+ url_args = request_args
+ return url_args
+
+ @cached_property
+ def url(self) -> yarl.URL:
+ if self.session.base_url is None and self.request.url is None:
+ raise ValueError("Neither session.base_url nor request.url produces a URL")
+ session_args = URLConfig.make_url_args(self.session.base_url)
+ request_args = URLConfig.make_url_args(self.request.url)
+ if session_args is not None:
+ url_args = session_args
+ if request_args is not None:
+ url_args.update(request_args)
+ else:
+ url_args = request_args
+ return yarl.URL.build(**url_args)
+
+ def clear_property_cache(self):
+ self.__dict__.pop("url", None)
+
+ @root_validator(skip_on_failure=True)
+ def post_root_validator(cls, values: dict) -> dict:
+ base_url = URLConfig.make_url(values["session"].base_url)
+ url = URLConfig.make_url(values["request"].url)
+ if base_url is None and url is None:
+ raise ValueError(
+ "ERROR. At least one of session.base_url and request.url must be specified"
+ )
+ if base_url is None:
+ if not url.is_absolute():
+ raise ValueError(
+ "ERROR. if session.base_url is None, request.url must be absolute\n"
+ f" request.url: <{url}>\n"
+ )
+ if base_url is not None and not base_url.is_absolute():
+ raise ValueError(
+ f"ERROR. session.base_url is not absolute.\n"
+ f" session.base_url: <{base_url}>\n"
+ )
+ if base_url is not None and url is not None:
+ if url.is_absolute():
+ raise ValueError(
+ "ERROR. Both session.base_url and request.url are absolute.\n"
+ f" session.base_url: <{base_url}>\n"
+ f" request.url: <{url}>\n"
+ )
+ if not url.path.startswith("/"):
+ raise ValueError(
+ "ERROR. If session.base_url not None, request.url.path must start with '/'.\n"
+ f" session.base_url: <{base_url}>\n"
+ f" request.url: <{url}>\n"
+ f" request.url.path: <{url.path}>\n"
+ )
+ return values
diff --git a/src/gwproto/types/spaceheat_node_gt.py b/src/gwproto/types/spaceheat_node_gt.py
index aef90e58..1f4d5172 100644
--- a/src/gwproto/types/spaceheat_node_gt.py
+++ b/src/gwproto/types/spaceheat_node_gt.py
@@ -30,7 +30,8 @@ class ShActorClass000SchemaEnum:
"b103058f",
"dae4b2f0",
"7c483ad0",
- "4a9c1785",
+ "0401b27e",
+ "e2877329",
]
@classmethod
@@ -50,6 +51,8 @@ class ShActorClass000(StrEnum):
SimpleSensor = auto()
MultipurposeSensor = auto()
Thermostat = auto()
+ HubitatTelemetryReader = auto()
+ HubitatTankModule = auto()
@classmethod
def default(cls) -> "ShActorClass000":
@@ -87,6 +90,8 @@ def local_to_type(cls, actor_class: EnumActorClass) -> str:
"dae4b2f0": ShActorClass000.SimpleSensor,
"7c483ad0": ShActorClass000.MultipurposeSensor,
"4a9c1785": ShActorClass000.Thermostat,
+ "0401b27e": ShActorClass000.HubitatTelemetryReader,
+ "e2877329": ShActorClass000.HubitatTankModule,
}
versioned_enum_to_type_dict: Dict[ShActorClass000, str] = {
@@ -99,6 +104,8 @@ def local_to_type(cls, actor_class: EnumActorClass) -> str:
ShActorClass000.SimpleSensor: "dae4b2f0",
ShActorClass000.MultipurposeSensor: "7c483ad0",
ShActorClass000.Thermostat: "4a9c1785",
+ ShActorClass000.HubitatTelemetryReader: "0401b27e",
+ ShActorClass000.HubitatTankModule: "e2877329",
}
diff --git a/src/gwproto/utils.py b/src/gwproto/utils.py
index 333da558..591e66b4 100644
--- a/src/gwproto/utils.py
+++ b/src/gwproto/utils.py
@@ -89,3 +89,14 @@ def all_equal(iterator: Any) -> bool:
except StopIteration:
return True
return all(first == x for x in iterator)
+
+
+# def predicate_validator(
+# field_name: str, predicate: Callable[[Any], bool], error_format: str = "", **kwargs
+# ) -> classmethod: # type: ignore
+
+MAC_REGEX = re.compile("[0-9a-f]{2}([-:]?)[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$")
+
+
+def has_mac_address_format(mac_str: str) -> bool:
+ return bool(MAC_REGEX.match(mac_str.lower()))
diff --git a/tests/enums/actor_class_test.py b/tests/enums/actor_class_test.py
index fc75965a..49853746 100644
--- a/tests/enums/actor_class_test.py
+++ b/tests/enums/actor_class_test.py
@@ -1,4 +1,4 @@
-"""Tests for schema enum sh.actor.class.001"""
+"""Tests for schema enum sh.actor.class.000"""
from gwproto.enums import ActorClass
@@ -13,6 +13,8 @@ def test_actor_class() -> None:
"SimpleSensor",
"MultipurposeSensor",
"Thermostat",
+ "HubitatTankModule",
+ "HubitatTelemetryReader",
}
assert ActorClass.default() == ActorClass.NoActor
diff --git a/tests/enums/make_model_test.py b/tests/enums/make_model_test.py
index ee99e4c0..83cff91a 100644
--- a/tests/enums/make_model_test.py
+++ b/tests/enums/make_model_test.py
@@ -1,4 +1,4 @@
-"""Tests for schema enum spaceheat.make.model.000"""
+"""Tests for schema enum spaceheat.make.model.001"""
from gwproto.enums import MakeModel
@@ -6,10 +6,6 @@ def test_make_model() -> None:
assert set(MakeModel.values()) == {
"UNKNOWNMAKE__UNKNOWNMODEL",
"EGAUGE__4030",
- "GRIDWORKS__SIMTSNAP1",
- "ATLAS__EZFLO",
- "MAGNELAB__SCT0300050",
- "YHDC__SCT013100",
"NCD__PR814SPST",
"ADAFRUIT__642",
"GRIDWORKS__TSNAP1",
@@ -18,6 +14,12 @@ def test_make_model() -> None:
"SCHNEIDERELECTRIC__IEM3455",
"GRIDWORKS__SIMBOOL30AMPRELAY",
"OPENENERGY__EMONPI",
+ "GRIDWORKS__SIMTSNAP1",
+ "ATLAS__EZFLO",
+ "HUBITAT__C7__LAN1",
+ "GRIDWORKS__TANK_MODULE_1",
+ "FIBARO__ANALOG_TEMP_SENSOR",
+ "AMPHENOL__NTC_10K_THERMISTOR_MA100GG103BN",
}
assert MakeModel.default() == MakeModel.UNKNOWNMAKE__UNKNOWNMODEL