annotate service/mqtt_to_rdf/src/index.ts @ 1754:92999dfbf321 default tip

add shelly support
author drewp@bigasterisk.com
date Tue, 04 Jun 2024 13:03:43 -0700
parents 2085ed9cfcc4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
1 // for the web page
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
2 export { DomBind } from "@polymer/polymer/lib/elements/dom-bind.js";
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
3 // export { StreamedGraph } from "streamed-graph";
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
4
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
5 import { LitElement, property, html, customElement, unsafeCSS } from "lit-element";
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
6
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
7 // import { Literal, N3Store } from "n3";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
8 // import { NamedNode, DataFactory } from "n3";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
9 // const { namedNode, literal } = DataFactory;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
10
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
11 // import { VersionedGraph } from "streamed-graph";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
12 import style from "./style.styl";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
13 // import { labelFromUri, graphLiteral, graphUriValue } from "./graph_access";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
14
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
15 // const room = "http://projects.bigasterisk.com/room/";
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
16
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
17 // function asString(x: Literal | undefined): string {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
18 // if (x && x.value) {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
19 // return x.value;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
20 // }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
21 // return "(unknown)";
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
22 // }
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
23
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
24 interface GraphAtTime {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
25 t: number;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
26 n3: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
27 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
28 interface Metric {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
29 name: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
30 labels: { [_: string]: string };
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
31 value: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
32 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
33 interface Subscribed {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
34 topic: string;
1628
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
35 recentMessageGraphs: GraphAtTime[];
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
36 recentMetrics: Metric[];
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
37 currentOutputGraph: GraphAtTime;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
38 }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
39 interface PageData {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
40 server: string;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
41 messagesSeen: number;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
42 subscribed: Subscribed[];
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
43 rules: string;
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
44 rulesInferred: string;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
45 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
46
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
47 @customElement("mqtt-to-rdf-page")
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
48 export class MqttToRdfPage extends LitElement {
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
49 static get styles() {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
50 return unsafeCSS(style);
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
51 }
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
52
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
53 // @property({ type: Object })
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
54 // graph!: VersionedGraph;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
55
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
56 connectedCallback() {
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
57 super.connectedCallback();
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
58 const data = new EventSource("debugPageData");
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
59 data.addEventListener("message", (ev: { data: string }) => {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
60 this.pageData = JSON.parse(ev.data) as PageData;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
61 console.log("data update");
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
62 });
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
63 // const sg = this.ownerDocument!.querySelector("streamed-graph");
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
64 // sg?.addEventListener("graph-changed", ((ev: CustomEvent) => {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
65 // this.graph = ev.detail!.value as VersionedGraph;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
66 // }) as EventListener);
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
67 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
68
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
69 // static get observers() {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
70 // return ["onGraphChanged(graph)"];
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
71 // }
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
72
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
73 @property({})
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
74 pageData: PageData = {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
75 server: "loading...",
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
76 messagesSeen: 0,
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
77 subscribed: [
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
78 {
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
79 topic: "top1",
1628
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
80 recentMessageGraphs: [],
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
81 recentMetrics: [],
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
82 currentOutputGraph: { t: 1, n3: "(n3)" },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
83 },
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
84 ],
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
85 rules: "",
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
86 rulesInferred: "",
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
87 };
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
88
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
89 render() {
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
90 const d = this.pageData;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
91 const now = Date.now() / 1000;
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
92 const ago = (t: number) => html`${Math.round(now - t)}s ago`;
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
93
1628
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
94 const parsedGraphAtTime = (g: GraphAtTime) => html` <div class="graph">graph: ${g.n3}</div> `;
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
95 const recentMessageGraphs = (t: Subscribed, index: number) =>
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
96 html` <div style="grid-column: 1; grid-row: ${index + 2}">
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
97 <div>Topic: <span class="topic">${t.topic}</span></div>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
98 ${t.recentMessageGraphs.map(parsedGraphAtTime)}
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
99 </div> `;
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
100
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
101 const metric = (m: Metric) => html`<div>metrix ${m.name} ${JSON.stringify(m.labels)} = ${m.value}</div>`;
1628
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
102 const outputMetrics = (t: Subscribed, index: number) => html` <div style="grid-column: 3; grid-row: ${index + 2}">${t.recentMetrics.map(metric)}</div> `;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
103 const outputGraph = (t: Subscribed, index: number) =>
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
104 html` <div style="grid-column: 2; grid-row: ${index + 2}">${parsedGraphAtTime(t.currentOutputGraph)}</div> `;
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
105 return html`
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
106 <h1>mqtt_to_rdf</h1>
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
107
1577
6ddc5e037f15 big fixes and rewrites. emitting rdf works, not influx export yet
drewp@bigasterisk.com
parents: 799
diff changeset
108 <section>connected to ${d.server}; messages received ${d.messagesSeen}</section>
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
109
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
110 <div class="grid">
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
111 <div class="hd" style="grid-row: 1; grid-column: 1">recent incoming messages, by topic</div>
1628
24e8cd8fcdcd new grid layout in web ui
drewp@bigasterisk.com
parents: 1577
diff changeset
112 ${d.subscribed.map(recentMessageGraphs)}
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
113
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
114 <div class="hd" style="grid-row: 1; grid-column: 2">output subgraph</div>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
115 ${d.subscribed.map(outputGraph)}
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
116
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
117 <div class="hd" style="grid-row: 1; grid-column: 3">output metrics: <br>prom collection according to<br> converted graph</div>
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
118 ${d.subscribed.map(outputMetrics)}
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
119 </div>
799
e0e623c01a69 ts build is part of docker now; new web debug console
drewp@bigasterisk.com
parents: 733
diff changeset
120
1706
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
121 <table>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
122 <tr>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
123 <th>Rules input</th>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
124 <td><textarea>${this.pageData.rules}</textarea></td>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
125 <th>Rules inferred</tH>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
126 <td><pre>${this.pageData.rulesInferred}</pre></td>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
127 </tr>
2085ed9cfcc4 reworking UI to reflect the new inferencing code
drewp@bigasterisk.com
parents: 1628
diff changeset
128 </table>
733
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
129 `;
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
130 }
9ca69f2be87b more mqtt_to_rdf renames. bring in basic LitElement setup for the debug page
drewp@bigasterisk.com
parents:
diff changeset
131 }