How Monday and Arduino light my desk

Shalom Carmel
4 min readMay 11, 2023

--

Monday is the best thing since sliced bread. No, not the day of the week, although there is nothing inherently wrong with Monday as a day. I am writing about Monday.com, the productivity tool. This article, however, is not meant to praise Monday as a tool but to show an interesting way to push notifications from Monday.com to your immediate attention.

A friend brought over an Arduino Uno and asked me how to make it do something whenever a new item is added to a Monday board.

This is a special challenge due to several constraints.

  • Arduino Uno lacks network capabilities. My friend does not have an ESP8266 or an ESP32 module available, so I had to connect the Arduino via an external device.
  • Due to security reasons, I did not want to expose the controlling device as a server to the internet.

After a short consideration between using MQTT and HTTP, I decided to use HTTP and instead of polling the Monday board for changes, use Monday webhooks to push events into the AWS Simple Queue Service as a storage place, and use SQS with AWS Lambda as a proxy between the desktop device and Monday. The reason is that at some point in the future I would like to actually use an ESP8266, and the Monday API is based on GraphQL which is a bit of an overkill to use on a device with a 30K memory. I ended up with a system like the one described in this schema:

AWS Icons by AWS, Python and Arduino icons from Iconscout, Monday logo by monday.com

The nice thing about it is that even with moderate usage, it all falls within the AWS free tier limits.

At the end, we settled for lighting a LED on the board instead of buzzing.

The entire project can be found on Github.

Installation overview:

  • The URLtoWrite value will be used in your Monday Webhook.
  • Download the Github repository to your PC.
  • Copy the config-example.py file into config.py
  • Open config.py with a text editor and modify it with the values from the Cloudformation output:
Authorization = "use the APIKEY value from the Cloudformation output"
URL = "use the URLtoRead value from the Cloudformation output, without the query string"
arduino_digital_pin = 4 # whichever pin you use
  • Copy the Cloudformation value of URLtoWrite, you will use it in the next steps.
  • Open the Monday board that you want to integrate, and click Board Power ups/Integrations
  • In the search box, type “webhooks” and select the webhooks integration. Select the event to trigger the webhook; in my case, I would like the webhook to fire when an item is created.
  • This is where you paste the webhook URL from the value of URLtoWrite, the one with /write at the end. Click Connect for the Lambda to verify the webhook. Do not forget to click “Add To Board” on the next screen.
  • The last thing to do is to run the check_events_activate_arduino.py script on a 3 minute schedule. To do that on Windows, see the scheduled_check_events_activate_arduino.bat file. Adjust the directory to point at the proper location, and add the file to the system scheduler.

--

--