Licht

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 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.

Nodes

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.

//Request to device
{
    "type":  "req",   //Used by the client to identify type of communication
    "req":   "wtf",   // What the Functions? Used by the client to identify action
    "reqId"  "uid"    //Device will return this value in the response, Used by sender
}
//Response to sender
{
  "type":   "resp",   //Used by the sender to identify type of communication
  "description": "optional descrition of device" // optional descrition of device
  "device":"name",    //Used to identify a single node
  "reqId"   "uid byte",    //Used to udentify the intial request
  "wtf": [
    {
      type: "cmd",
      cmd: "setProgram",
      value: "BALL"
    },
    {
      type: "cmd",
      cmd: "setProgram",
      value: "MANUAL",
      red = "125";
      green = "125";
      blue = "125";
    }
  ]  
}

Das wtf Array in der Response enthält Beispiel die direkt zum testen an die Node gesendet werden können.