WOLUXI Simple Diagnostics with Error Codes

Woluxi's patented technology enables any major electronic device to communicate with smartphones through the devices blinking power light. It works with existing hardware on the IoT devices for transmission and the ubiquitous smartphone with its camera works as a receiver. This creates an out-of-band communication channel which does not require any extra hardware or tools. This out-of-band mechanism allows for authentication solutions and diagnostics for IoT devices which lack display.

One more cool thing about using LED is that it is the last defense for diagnostics, since that LED is used to display that there is some error by flashing it, and we are using the same mechanism for transmitting the diagnostic codes. So to the end-user it would be the same user-experience.

On the diagnostics part it will cut down on a lot of customer-support costs for the vendors, since it empowers the end-users to diagnose the issues themselves and even if they make a call to support, it would be a short call, since the precise diagnostics would help the support engineer obtain data.

Apps

This app works with a very simple protocol consisting of 2 bytes; a preamble followed by an error code. This error code is interpreted as the standard errno from standard library of the C programming language.

Libraries

Python based library

This is a python library with will work on Raspberry Pi,Mac OSX and Windows. For Mac OSX you will need to install the keyboard_leds program for it to control the capslock led.

Arduino library

This is an Arduino library and a sample program that can blink the on-board LED. You can make appropriate changes if you want to use a different pin for controlling external LED. With these 2 implementations available under Apache License, it would be easy to integrate in your device.

FAQ

What is the protocol followed by the LED? or What is the message data structure?

The LED is utilized to send binary data, in which if it is ON (lighted) it would be considered bit 1, if switched OFF then bit 0 is transmitted, it will have to maintain the state for 250ms.

Message Structure

This message consists of packets and a packet consists of a Byte preceded by a start bit (1) and suffixed by a stop bit (0).

Preamble

Error Code

1

1

1

1

0

0

0

0

Error code as an uint8

Preamble packet

Preamble is used to determine the start of message, the entire message is usually transmitted in a loop and the preamble helps to figure out the start of the message. The preamble used is 0xf0.

Error Code

This packet contains an error code loosely fashioned along the lines of errno.h from stdlib.