Industry solutions
11 min
eleven industry solutions, each a working plant that configures litmus edge and then runs against it every one brings up an operator view, a live industrial protocol server that the edge polls, and a set of scenarios that can be injected on demand they are demonstrations rather than production systems, but nothing on the litmus edge side is simulated real devicehub devices and tags, real digital twin models and instances, real analytics processors, over the protocol the industry uses solutions solution industry devices and tags protocol bottling line # food and beverage 6 devices, 94 tags modbus tcp bioreactor suite # pharmaceuticals 5 devices, 94 tags modbus tcp collection system # water and wastewater 9 devices, 274 tags dnp3 vision inspection # food and beverage 1 device, 15 tags modbus tcp and nats body shop framing line # automotive 7 devices, 181 tags modbus tcp and open protocol rotating equipment reliability # power and utilities 6 machines, 90 tags sparkplug b over mqtt grid substation # power and utilities 9 devices, 69 points iec 60870 5 104 steel mini mill # metals 8 devices, 122 tags opc ua aerospace machining # aerospace and defence 7 machines, 133 tags mtconnect gas gathering system # oil and gas 8 flow computers, 121 registers enron modbus paper machine # pulp and paper 8 sections, 118 nodes opc ua solutions provisioner # is a control panel that starts and stops all eleven from one page and connects them to a litmus edge once rather than one at a time it is optional; each solution runs on its own the solutions are designed to run side by side ports do not collide, and all eleven against one litmus edge is 74 devices requirements litmus edge 4 0 x , reachable over https from the host running the solution an api token for that edge, or a username and password, or a client id and secret docker , and docker compose for the compose deployment a network path in both directions see the note on sim host below required configuration values each solution takes three values, either directly in its compose file or in a env file beside it value purpose edge url the litmus edge to configure, for example https //10 0 0 5 edge api token a token for that edge alternatively edge username and edge password , or edge client id and edge client secret sim host the address the edge connects to in order to reach the solution sim host requires attention the solution serves an industrial protocol and litmus edge connects to it, so the edge needs an address it can route to leave it as auto when the solution runs on the edge itself or with host networking, and the address is derived from the route to the edge otherwise set it to the address of the host running the solution, as the edge sees it an incorrect value fails quietly the devices are created, they report as online, and no tag ever reads a value, because the address written into the template is one the edge cannot reach each solution refuses to apply a template whose address is obviously unreachable and reports why deploy each solution ships two ways use the registry if the host can reach google artifact registry, and the downloaded archive if it cannot both run the same image and take the same three values option 1 pull from the registry images are published to us docker pkg dev/litmus customer facing/litmus solutions litmus supplies a read only registry credential separately cat key json | docker login u json key password stdin https //us docker pkg dev docker compose up d option 2 load the downloaded archive each solution's page on portal litmus io carries a tar gz under downloads the archive is the container image, not a source bundle, and needs no registry access docker load i \<solution> 0 3 0 amd64 tar gz docker load prints the image it added, for example loaded image us docker pkg dev/litmus customer facing/litmus solutions/pulp paper demo 0 3 0 that is the same reference the compose file names, so the compose file works offline after the load, with no docker login docker compose up d to run a solution without compose, pass the three values on the command line ports and image name come from the solution's own page docker run d \\ \ name \<solution> \\ \ restart unless stopped \\ p 4020 4020 \\ p 5030 5030 \\ e edge url=https //10 0 0 5 \\ e edge api token=your token \\ e sim host=10 0 0 9 \\ us docker pkg dev/litmus customer facing/litmus solutions/\<image> 0 3 0 one solution cannot be run this way rotating equipment reliability is two containers, a simulator and an mqtt broker, and requires its compose file open the operator view on the solution's ui port within about a minute the edge is configured and the page fills in what each solution creates on litmus edge with apply on start at its default of 1 , a solution configures the edge on startup devicehub devices and their tags, pointed at the protocol server the solution runs digital twin models and instances for the equipment analytics groups and processors behind the kpis the operator view shows this takes 30 to 60 seconds, because litmus edge restarts devicehub while it applies the ui is available immediately and reports progress set apply on start=0 to run the simulator without writing to an edge each solution can also remove exactly what it created, so a shared edge can be returned to its previous state ports each solution serves its operator view on 401x and its industrial protocol on 502x , so they can run at once none of these collide with litmus edge's own services solution operator view protocol solutions provisioner 4009 bottling line 4010 5020 bioreactor suite 4011 5021 collection system 4012 5022 vision inspection 4013 5023 body shop framing line 4014 5024, and 5124 for open protocol rotating equipment reliability 4015 5025 grid substation 4016 5026 steel mini mill 4017 5027 aerospace machining 4018 5028 gas gathering system 4019 5029 paper machine 4020 5030 tls edge verify tls is 0 by default, because a litmus edge ships a self signed certificate and verification would fail for a reason unrelated to the connection set it to 1 wherever the certificate is a real one these solutions send an api token over that connection support support\@litmus io mailto\ support\@litmus io