Github Action Tracker with light and dark mode
Tags: actionshackathon21, flutter, iot, github
Published: 2021-12-08 22:46:28

### My Workflow
[.github/workflows/workflow.yml](https://github.com/bleakview/actionshackathon21/blob/master/.github/workflows/workflow.yml)

### Submission Category: 
Interesting IoT


### Yaml File or Link to Code
{% github bleakview/actionshackathon21%}

### Additional Resources / Info

{% youtube fFYOSs4JaHg %}

We watch our how the work progress through screens big small rectangle, square but do we have to squish our view of the world through a window.
We don't have to we can watch the progress with what ever way we want. (and it began to become boring after a while) So I designed a system which show the progress with both cell phone and an IOT device connecting with Bluetooth Low Power or BLE in short. 

Requirements:

- A CloudAMQP account (you need a AMQP server it can be AWS,AZURE ...)
- A system ready for development for flutter ( I tested in Android 
  IOS should also be fine but I did not test it.) 

For Iot:
Light mode:

- A needle ( I got mine from starbucks :-) )
- A micro servo
- ESP32 development board installed with micropython
- jumpers usb connection cable and breadboard

Dark mode: 

- A led strip with SPI support like APA102
- ESP32 development board installed with micropython
- jumpers usb connection cable and breadboard

How it works
![System Workflow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h2cuqbhsl91mhbsdxxls.jpg)

Github action sends message to CloudAMQP queue named "github". Since we use a queue Authentication ,storage and API interface is handled automatically. Then our mobile app gets this message it handles it and draw a image on screen. And direct the message to IOT device connected with BLE. And it also handles it. Why BLE ? if we use wifi then user has to enter credentials. Since most IOT devices do not have screen its hard to enter credentials. Also Apple do not require BLE devices with known profiles with MFI program. 

How to use

![App Screen](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2yzaxo0307878bf9ih5v.jpg)
This is the main screen in you can interact with it through the bottom buttons.

![Search Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pn2szuw40cgicf70wjxh.jpg) Search Button
when you click this button the device automatically enters into search mode it looks for BLE devices which advertise a specific name "GITHUB_ACTION_IOT" when it finds the device it enables connect button.


![Connection Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3833gx6gv7c9xqno4nfa.jpg) Connection Button
When this button is clicked phone makes connection to prespecified service with Guid "6E400001-B5A3-F393-E0A9-E50E24DCCA9E" and connection point "6E400002-B5A3-F393-E0A9-E50E24DCCA9E" message is sent to the connection point.


![Reset Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6nu5jbzspcdntpxi7pl3.jpg) Reset Button
When this button is clicked the state is reset.


![Sound Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zomjhcy1sgp90dcnej6g.jpg) Sound Button
When clicked sound is enabled or disabled 



PS: I know most people in dev.to do not have experience in electronics. If you have any questions on this project don't hesitate to ask questions. And If you see something wrong both in project or the text please inform me. I'm an introvert extreme edition so writing is new and frightening adventure to me.