Teams Status Indikator: Unterschied zwischen den Versionen

Aus Schafferei-Wiki
Keine Bearbeitungszusammenfassung
 
Zeile 102: Zeile 102:
     }
     }
   }
   }
}
}</pre>
</pre>


=== Windows ===
=== Windows ===
<code>...</code>
<pre>...</pre>
 
== Quellen ==
...

Aktuelle Version vom 13. März 2023, 00:32 Uhr

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

...

Quellen

...