Mercurial > code > home > repos > homeauto
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 |
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 | 35 recentMessageGraphs: GraphAtTime[]; |
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 | 80 recentMessageGraphs: [], |
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 | 94 const parsedGraphAtTime = (g: GraphAtTime) => html` <div class="graph">graph: ${g.n3}</div> `; |
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 | 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 | 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 } |