Wiki-Quellcode von Licht

Zuletzt geändert von holymoly am 2023/05/09 18:12

Zeige letzte Bearbeiter
1 ~-~--Outdated~-~-- wurde mit WLEDs umgesetzt da kein Interesse am Datenbus bestand. Bleibt als Doku für holymoly erhalten. Sollte mal von WLED Benutzern aktualisiert werden
2
3
4 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.
5
6 == Beispiel ==
7
8 [[image:ztl-iot-network.png]]
9
10
11 === Nodes ===
12
13 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.
14
15 {{code}}
16
17 //Request to device
18 {
19 "type": "req", //Used by the client to identify type of communication
20 "req": "wtf", // What the Functions? Used by the client to identify action
21 "reqId" "uid" //Device will return this value in the response, Used by sender
22 }
23 //Response to sender
24 {
25 "type": "resp", //Used by the sender to identify type of communication
26 "description": "optional descrition of device" // optional descrition of device
27 "device":"name", //Used to identify a single node
28 "reqId" "uid byte", //Used to udentify the intial request
29 "wtf": [
30 {
31 type: "cmd",
32 cmd: "setProgram",
33 value: "BALL"
34 },
35 {
36 type: "cmd",
37 cmd: "setProgram",
38 value: "MANUAL",
39 red = "125";
40 green = "125";
41 blue = "125";
42 }
43 ]
44 }
45 {{/code}}
46
47 Das wtf Array in der Response enthält Beispiel die direkt zum testen an die Node gesendet werden können.