Wiki-Quellcode von Licht

Version 3.1 von admin am 2021/11/08 19:39

Zeige letzte Bearbeiter
1 Auch wenn es der Nerd lieber dunkel hat, benötigen wir Licht im Space. Damit das nicht langweilig und farblos wird, werden RGB LEDs (WS2812) eingesetzt. Diese LEDs werden von einem Mikrocontroller angesteuert, diese werden auch als Nodes bezeichnet. Damit man nicht jede Node einzeln kontrollieren muss gibt es eine Backend Infrastruktur dafür. Für die Kommunikation wird der [[Datenbus>>projekte:datenbus]] im Space genutzt. Dieser ermöglicht einen einfachen Datenaustausch über definierte MQTT Telegramme. Das Backend vereinfacht die Kontrolle der Nodes, so können diese einzeln oder in einer Gruppe angesteuert werden. Das Backend kann auch Logik enthalten. So kann man zum Beispiel zu einer bestimmten Zeit das Licht ausschalten oder abfragen welche Nodes im Netzwerk verfügbar sind. Das Licht wird vom Nerd letztendlich über ein Frontend gesteuert. Es kann gleichzeitig mehrer Frontends geben. So ist es zum Beispiel möglich das Licht über Schalter oder eine Website zu steuern.
2
3 == Beispiel ==
4
5 [[image:projekte:ztl-iot-network.png||alt="" width="1200px" title=""]]
6
7 === Nodes ===
8
9 Einzelne Nodes können genutzt werden um das Licht zu steuern. Die möglichen Meldungen die eine Node bearbeiten kann kann mit einem mit einem Request(Anfrage) bei der Node angefragt werden. Die Anfrage kann über die Topic an einzelne Nodes oder Gruppen adressiert werden.
10
11 {{code}}
12
13 //Request to device
14 {
15 "type": "req", //Used by the client to identify type of communication
16 "req": "wtf", // What the Functions? Used by the client to identify action
17 "reqId" "uid" //Device will return this value in the response, Used by sender
18 }
19 //Response to sender
20 {
21 "type": "resp", //Used by the sender to identify type of communication
22 "description": "optional descrition of device" // optional descrition of device
23 "device":"name", //Used to identify a single node
24 "reqId" "uid byte", //Used to udentify the intial request
25 "wtf": [
26 {
27 type: "cmd",
28 cmd: "setProgram",
29 value: "BALL"
30 },
31 {
32 type: "cmd",
33 cmd: "setProgram",
34 value: "MANUAL",
35 red = "125";
36 green = "125";
37 blue = "125";
38 }
39 ]
40 }
41 {{/code}}
42
43 Das wtf Array in der Response enthält Beispiel die direkt zum testen an die Node gesendet werden können.