Teams Status Indikator: Unterschied zwischen den Versionen
Mike (Diskussion | Beiträge) |
Mike (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
== Hardware == | == Hardware == | ||
[[Datei:20230305 143938.jpg|220px|thumb| | [[Datei:20230305 143938.jpg|220px|right|thumb|Eleektronik-Komponenten]] | ||
=== Elektronik === | === Elektronik === | ||
* Arduino Nano | * Arduino Nano | ||
* NPN-Transistor S8050 | * T1: NPN-Transistor S8050 | ||
* RGB-LED (aus einem LED-Strip) | * D1-4: RGB-LED (aus einem LED-Strip, nur rot verwendet) | ||
* LED blau 3mm | * D5: LED blau 3mm | ||
* 150 Ω Widerstand | * R1-4: 150 Ω Widerstand | ||
* 2,2 kΩ Widerstand | * R5: 2,2 kΩ Widerstand | ||
* 4,7 kΩ Widerstand | * R6: 4,7 kΩ Widerstand | ||
=== Schaltplan === | |||
[[Datei:Schaltplan-Teams-Status.jpg|500px]] | |||
=== Gehäuse === | === Gehäuse === | ||
Das Gehäuse kommt aus dem 3D-Drucker und ist von der Größe | 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 == | == Software == | ||
=== Arduino === | |||
<pre>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; | |||
} | |||
} | |||
}</pre> | |||
=== Windows === | === Windows === | ||
< | <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
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
...