Two posts in a year, not bad π
Like a lot of companies that drink the Microsoft cool-aid I work for a place that uses Skype for business for text chat/voice communications… it generally works pretty well.
A few colleagues of mine have Blynclight status lights above their monitors as a visual indicator to visitors and/or other people around you that you are free/busy/uninterruptible. The concept itself looked pretty simple to build so I thought I’d give it a go… My project is called SkypeSignal (I’m not very good at names):
My solution comprises of two main parts:
- An Arduino nano connected to a couple of RGB LED lights
- A .NET application which uses the Lync client SDK to send commands to the Arduino via serial (over USB)
The Design:
The parts list for the actual build is pretty minimul:
- Arduino Nano
- A few RGB LED’s (supports a PWM driver [i.e. WS2811])
- a 330 Ohm resistor
- USB Cable
- Project box
- Wire
I went for LED’s using the WS2811 chip to drive them; this means that we only need 3 wires to run the whole thing, the below design can be modified to chain LED’s together and address them individually or alternativly run them as single LED’s by sharing the same digital input.
The operating workflow:
- Device connected to USB
- Relevant COM port set in SkypeSignal.exe.config and application started on PC
- A thread is started to run a small tray application on the windows task bar
- A thread is started to subscribe to Skype/Lync client events using the client SDK
- On client status change, a numerical command is sent down to the Arduino where it switches the light to the colour/pattern representing the presence of the user.
It would be trivial to add new features to this and I may look at adding some of these in the future:
- Have the .NET app send a PING to com devices and using device on com port that responds with expected value
- Flashing on missed notifications
- Strobe + Audio Alerts on Incoming call (I’ve included a speaker in my version for future use)
- Look at pulling the status over IP using UCWA to have a headless status device.
- Tidying up the code – its pretty janky
Demo:
The finished project above works pretty sweet – If you want a copy of the code, check it out in my Repo here:Β https://github.com/coaxke/SkypeSignal
Or download a copy atΒ https://www.resdevops.com/files/binaries/SkypeSignal.zip
Drop me a line if you have any questions.
-Patrick
Edit:
Aug 17: I’ve just added incoming call alerts to the app (requires updates for tray-app plus Arduino sketch. Enjoy
Really cool project. Do you have an executable app on GitHub or does it need to be compiled in visual basic? I am not very good with VB.
Hi Chaz,
Sorry – I should have considered that not everyone would have access to compile this tool.
I’ve attached a compiled version – Just edit the config file and start it up π
Download here: https://www.resdevops.com/files/binaries/SkypeSignal.zip
I’d be interested to know how you get on….
Regards,
Patrick S
I keep getting error that “com port does not exist. Any ideas why?
I assume you’ve connected an Arduino to your PC – it should present a COM port which needs to be set inside the SkypeSignal Application configuration file.
With regards to the 4 pin RGB LED, yes Im sure you could but you would need to modify the arduino project source code I have provided, its currently expecting an RGB LED driven by an WS2812 LED controller chip or an equivalent [as its using the Adafruit NeoPixel Library]).
one more question, may I use 4 legs rgb led? how?
do you have the up to date compile exe file?
Hi Able,
Sorry for the late reply – I have uploaded the latest build (same link as in the post). This addresses another issue around performance.
Thanks
Has anyone got this to work on a raspberry PI, id really like to get a notification system on the pi for Skype for business
Thanks,
DREW
I’m not too sure house you’d do this unless the Pi could expose a serial interface for your PC (which is running the Skype Client) – The tray app relies on client-side libraries so does not communicate with any Skype infrastructure. It was totally something I wanted to look into, but with Microsoft announcing that they are going to deprecate Skype and replace it with Microsoft Teams, I thought I’d hold off and see how hard it is to upgrade my existing app.
TL;DR – You’re better to use a cheap Arduino π
Thanks for this. I have been looking at the commecial products for a few months, but decided I wanted to do my own. Looking at the demo video, the delay between status change and the LED change is longer than I like. Anyway to make it faster? Or am I just too darn impatient π
Hi Matt,
Sorry – I should have updated the post. The latest version on GitHub (both the .NET and Arduino code) has major performance improvements – updating the notification light is now instant. Give it a go and let me know how you get on :).
Regards,
Patrick
Hi Patrick,
That’s a really cool project, I love it. I built that Arduino with a RGB-LED and it works great.
The only thing I’m trying to find out (I’m a beginner in anything programming related – except a bit Java and PowerSHell scripting theres not much) is if these improvements are good to build in and how it’s done:
1. Possibility to enter the COM port inside the “About” window instead of the config file
2. Automatic detection of the Arduino connected without the need to look for the COM Port first
3. Automatic reconnect for laptop users – I carry around my laptop a lot and have the Arduino connected to my Monitor USB Hub – after reconnecting to the dock it doesn’t go back on. Maybe I’m doing something else wrong..
What do you think about that stuff?
Regards,
Martin
Hi Patrick,
This is just what I was looking for!
I’m going to try using RGB strip lights for our cubicles at work. Also, if you have a way to get the status over IP, I’d love to discuss how that is done. I’m just getting into programming and don’t know all that much just yet, and my comfort level is pretty low.
Thanks for the hard work!
Cheers!
Kyle
Hi Kyle,
That’s awesome – sounds like a good plan.
I have had it working over IP. I ran a similar App to the one i’ve provided and ran the equiv Arduino on an ESP8266 which exposes a web-server; The app calls different web endpoints on the ESP to change the status- seemed to work pretty nice!
-Patrick
Hi Patrick
Awesome project, I love it!
I have been looking at the commercial stuff for a few years already but always put them of since they cost a fortune just to trigger a LED and the boss simply thought it was a “no needed thing”.
But your solution is well within my private budget and i love to build, besides it is much more configurable this way too.
I realized i had all parts laying around in the junk-box already and threw it together.
Finally i can get some privacy at work, Red light means stay away..
Now i just need to send that all users email to let everyone else know. π
I was hoping for a possible missed message indication since I am more or less deaf and i keep missing the Lync messages from the boss when i’m busy not looking at the monitors.
Something you already started implementing in the tray app perhaps?
It would be cool to have a separate timed pulsing output activated on incoming call and messages as well, either to control a relay for a buzzer/desk-vibrator or focused flashing light in eye height at the normal working position.
My coding is a bit rusty or else i would have jumped right to it myself. Or maybe this was the kick i needed to get back to it. π
Thanks a lot for the idea, project and sharing it!
Cheers!
//Anders
I have this working through a Bluetooth com port on the Arduino. The communication works fine but the Com port code does not like the disappearing nature of the Bluetooth com port. Has anyone tweaked that code already to make the com port detection retry instead of crashing out? I don’t have easy access to a .net compiler but it looks like a pretty easy change.
im6ime
t6zp1k