Creates a profile of the program's own from its parts, with no description and no presentation.
a stable, human-readable name, such as raised-bed-drip.
the topic each reading is published to.
the control policy; only the fields belonging to its kind are
read, and cooling and rising are false unless given.
how often the node samples as the battery drains.
The control policy applied to each reading.
What the profile is for, in the words its manifest carries, or null.
The profile's stable, human-readable name.
The sampling schedule kept as the battery drains.
How the profile presents itself on the dashboard, or null when it declares
nothing beyond the built-in set.
The topic each reading is published to.
Builds the decision logic this profile describes.
Each call builds a new controller, so keep the one it returns for the life of the node: one built again for each reading forgets whether its output was on and what the reading before was.
Serializes this profile to its JSON manifest.
A copy of this profile carrying a dashboard presentation.
Throws if a band is not two numbers, or the presentation holds something the dashboard could not draw, such as a band whose low end comes second.
StaticfloodStaticfromStaticirrigationStaticvaccineStaticwell
A named, ready-to-run node assembled from pamoja capabilities.