87 lines
1.7 KiB
Typst
87 lines
1.7 KiB
Typst
#import "../../resources/helper.typ": *
|
|
#let b = actor("broker",
|
|
disp_name: [@mqtt:short\ broker],
|
|
shape: "queue",
|
|
show-bottom:false
|
|
)
|
|
#let mg = actor("mqtt",
|
|
disp_name: [@mqtt:short\ gateway],
|
|
show-bottom:false
|
|
)
|
|
#let ig = actor("influx",
|
|
disp_name: [influx\ gateway],
|
|
show-bottom:false
|
|
)
|
|
#let rg = actor("rest",
|
|
disp_name: [rest\ gateway],
|
|
show-bottom:false
|
|
)
|
|
#let main = actor("main",
|
|
disp_name: [Main],
|
|
shape: "control",
|
|
show-bottom:false
|
|
)
|
|
#let db = actor("db",
|
|
disp_name: [Influx DB],
|
|
shape: "database",
|
|
show-bottom:false
|
|
)
|
|
#let u = actor("user",
|
|
disp_name: [User],
|
|
shape: "actor",
|
|
show-bottom:false
|
|
)
|
|
|
|
#set align(center+top)
|
|
#v(1.5em)
|
|
|
|
#let toDB = {
|
|
import chronos: *
|
|
b.display
|
|
mg.display
|
|
main.display
|
|
ig.display
|
|
db.display
|
|
|
|
_col(b.name, mg.name, width: 2cm)
|
|
_col(mg.name, main.name, width: 2cm)
|
|
_col(main.name, ig.name, width: 2cm)
|
|
_col(ig.name, db.name, width: 2cm)
|
|
|
|
sync(main, mg, "New", create-dst: true)
|
|
sync(mg, b, "subscribe")
|
|
sync(main, ig, "New", create-dst: true)
|
|
async(b, mg, "message")
|
|
sync(mg, main, "DataPoint")
|
|
sync(main, main, "map topics")
|
|
sync(main, ig, "DataPoint")
|
|
async(ig, db, "flush")
|
|
|
|
}
|
|
#let fromDB = {
|
|
import chronos: *
|
|
db.display
|
|
ig.display
|
|
main.display
|
|
rg.display
|
|
u.display
|
|
|
|
_col(db.name, ig.name, width: 2cm)
|
|
_col(ig.name, main.name, width: 2cm)
|
|
_col(main.name, rg.name, width: 2cm)
|
|
_col(rg.name, u.name, width: 2cm)
|
|
|
|
async(u, rg, "Request")
|
|
sync(rg, main, "getNodes")
|
|
sync(main, rg, "", dashed: true)
|
|
sync(rg, ig, "Query")
|
|
sync(ig, db, "")
|
|
sync(db, ig, "", dashed: true)
|
|
sync(ig, rg, "", dashed: true)
|
|
sync(rg, u, "", dashed: true)
|
|
|
|
}
|
|
|
|
#chronos.diagram(toDB)
|
|
#chronos.diagram(fromDB)
|