Teams Status Indikator

Aus Schafferei-Wiki

IN BEARBEITUNG

Idee

Ziel ist es den Kollegen im Büro über ein kleines Lichtchen am Schreibtisch zu zeigen, ob am ansprechbar ist oder gerade nicht gestört werden will. Dazu soll der Teams Status verwendet werden. Nur die rote Kennzeichnung reicht dazu. Gelb für Abwesend sieht man ja ;)

Typischerweise wird dazu die Graph API verwendet. Da aber nur der eigene User interessant ist und das Ganze über USB Strom und Daten bekommen soll, geht es auch auf anderem Wege. Teams loggt alle Ereignisse lokal mit. Diese Datei kann recht einfach ausgelesen werden.

Hardware

Eleektronik-Komponenten

Elektronik

  • Arduino Nano
  • T1: NPN-Transistor S8050
  • D1-4: RGB-LED (aus einem LED-Strip, nur rot verwendet)
  • D5: LED blau 3mm
  • R1-4: 150 Ω Widerstand
  • R5: 2,2 kΩ Widerstand
  • R6: 4,7 kΩ Widerstand

Schaltplan

Gehäuse

Das Gehäuse aus PLA kommt aus dem 3D-Drucker und ist von der Größe exakt an den Arduino Nano angepasst. Ebenso der Halter. Ein kleines Deko-Gläschen und ein streifen Transparentpapier sorgt für gestreutes Licht. Anschluss per Micro USB-Kabel.

Software

Arduino

String inputString = "";
boolean stringComplete = false;
String commandString = "";
boolean isConnected = false;

int ledRed = 3;
int ledBlue = 5;

void setup() {
  Serial.begin(9600);
  pinMode(ledRed, OUTPUT);
  pinMode(ledBlue, OUTPUT);
  turnLedOn(ledBlue);
}


void loop() {
  if(stringComplete) {
    stringComplete = false;
    getCommand();
  
      if(commandString.equals("STOP")) {
        turnLedOff(ledRed);
      }
      else if(commandString.equals("LED1")) {
        boolean LedState = getLedState();
        
        if(LedState == true) {
          turnLedOn(ledRed);
        }
        else {
          turnLedOff(ledRed);
        }
      }
    inputString = "";
  }
}


boolean getLedState() {
  boolean state = false;
  if(inputString.substring(5,7).equals("ON")) {
    state = true;
  }
  else {
    state = false;
  }
  return state;
}


void getCommand() {
  if(inputString.length() > 0)
  {
     commandString = inputString.substring(1,5);
  }
}


void turnLedOn(int pin) {
  digitalWrite(pin, HIGH);
}


void turnLedOff(int pin) {
  digitalWrite(pin, LOW);
}


void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Windows

...