{"id":17066195,"url":"https://github.com/alignan/geeny-office-annoyatron","last_synced_at":"2026-05-10T05:05:12.740Z","repository":{"id":92886232,"uuid":"114371376","full_name":"alignan/geeny-office-annoyatron","owner":"alignan","description":"Hackathon Dec 2017 idea: annoy your coworkers","archived":false,"fork":false,"pushed_at":"2017-12-15T15:52:38.000Z","size":3779,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-28T15:49:38.164Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alignan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-15T13:03:50.000Z","updated_at":"2017-12-15T13:09:36.000Z","dependencies_parsed_at":"2023-05-05T17:15:23.710Z","dependency_job_id":null,"html_url":"https://github.com/alignan/geeny-office-annoyatron","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alignan%2Fgeeny-office-annoyatron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alignan%2Fgeeny-office-annoyatron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alignan%2Fgeeny-office-annoyatron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alignan%2Fgeeny-office-annoyatron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alignan","download_url":"https://codeload.github.com/alignan/geeny-office-annoyatron/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245079833,"owners_count":20557557,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T11:06:14.424Z","updated_at":"2026-05-10T05:05:12.706Z","avatar_url":"https://github.com/alignan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geeny's Hackathon\n\nThis is the log of our hacking adventures at Geeny's.\nTL;DR: we made an application which actually works\n\nThe solution we developed (rather a set of problems we came up with) is called the `Geeny's office annoyatron`, a.k.a. How to make friends in the office.\n\nThe `annoyatron` consists of two incredible helpful features:\n\n* A friendly reminder over the `team's slack channel` every time a window is opened and closed, lovely isn't?\n* Turn a light ON everytime someone is assigned to a new issue, fun! never miss out a Project Manager's ticket!\n\n\n## The implementation\n\nThe implementation is a joint effort from [Geeny](https://www.geeny.io) and [IFTTT](https://www.ifttt.com) to bring happiness over [Slack](https://geenyhackathon.slack.com) and [Github](https://github.com/alignan).\n\nA `Formula` has been deployed to Geeny's Docker registry, based on the [Geeny's Hackathon 2018 repository](https://github.com/geeny/Hackathon2018), with minor modifications:\n\n* Added a `last-msg` endpoint to retrieve the last message only (instead of the whole history at the `/msgs` endpoint)\n* Publish to `IFTTT's Webhook` trigger (see: https://ifttt.com/maker_webhooks) \n\nOverall this is what our architecture looks like:\n\n![img/arch.png](img/arch.png)\n\nThe `Formula` runs in a [Docker Machine](https://www.docker.com) deployed at Geeny.  The following `MessageTypes` are associated to the `Formula`:\n\n![img/msgtypes.png](img/msgtypes.png)\n\nAnd the `Formula` is deployed as:\n\n````bash\ndocker build -t \"registry.geeny.io/21b11b72-f1d8-44de-9972-caa248f6dcd1\" -f Dockerfile .\ndocker push \"registry.geeny.io/21b11b72-f1d8-44de-9972-caa248f6dcd1\"\n````\n\nThe following endpoints are exposed:\n\n* `/send-message`: used to send commands to subscribed devices\n* `/last-msg`: as explained before, shows the last message received\n\nThe `Develco` devices were associated to the local Gateway, its status is shown at the device's `IP:80` webserver:\n\n![img/develco.png](img/develco.png)\n\nAt the `IP:8000` webserver the Gateway can be registered to `Geeny`:\n\n![img/develco-geeny.png](img/develco-geeny.png)\n\nAnd now the devices are reachable over `Geeny`... here are our things:\n\n````bash\n{\n    \"meta\": {\n        \"offset\": 0,\n        \"limit\": 50\n    },\n    \"data\": [\n        {\n            \"id\": \"e705edaa-329a-42b7-96a9-64359d8859db\",\n            \"name\": \"Window Sensor\",\n            \"serial_number\": \"0015bc001e00322d\",\n            \"thing_type\": \"d6e479ea-c4fc-4204-9534-fc310a54ecd2\",\n            \"created\": \"2017-12-15T09:07:27.902Z\"\n        },\n        {\n            \"id\": \"953fc4fa-1a64-4cd8-ba9d-b43a3e095360\",\n            \"name\": \"Power Outlet\",\n            \"serial_number\": \"0015bc002f00208d\",\n            \"thing_type\": \"d5d51e47-34d0-418d-afe5-404b73c512b5\",\n            \"created\": \"2017-12-15T09:09:25.826Z\"\n        },\n        {\n            \"id\": \"8e227358-e309-4213-99de-89e3e4f2f3f8\",\n            \"name\": \"Motion Sensor\",\n            \"serial_number\": \"0015bc001a0069a1\",\n            \"thing_type\": \"db5c4e3e-4dab-4526-bd90-392971369b83\",\n            \"created\": \"2017-12-15T09:12:13.940Z\"\n        },\n        {\n            \"id\": \"2c662faa-7a69-4d94-ae81-b6ff9f2dd664\",\n            \"name\": \"Bulb\",\n            \"serial_number\": \"00158d000150c256\",\n            \"thing_type\": \"2db4d5b5-44d1-4f03-9aff-564a2785e8ff\",\n            \"created\": \"2017-12-15T09:13:01.866Z\"\n        }\n    ]\n}\n````\n\n### The window friend\n\nWhenever the `Develco's window sensor` detects a window/door has been opened or closed, our `Formula` will publish \n\n![img/window.png](img/window.png)\n\n\n### The Issue companion\n\nWhenever there is a new issue assigned by our lovely Project Managers, the light will go ON, quite handy to work those extra overtime hours at night!\n\n![img/github.png](img/github_on.png)\n\nAnd when it is closed, you can rest assured as the light will go OFF, it is time to go home and enjoy a good few hours of sleep.\n\n![img/github.png](img/github_on.png)\n\nWhenever there is a new issue, the following `GET request` will be triggered from `IFTTT` to `Geeny`:\n````bash\nhttp://21b11b72-f1d8-44de-9972-caa248f6dcd1-v-14.formula.geeny.io/send-message?thing=bulb\u0026cmd=cmd_on\n````\n\nAnd to turn the light OFF (when an issue is resolved):\n````bash\nhttp://21b11b72-f1d8-44de-9972-caa248f6dcd1-v-14.formula.geeny.io/send-message?thing=bulb\u0026cmd=cmd_on\n````\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falignan%2Fgeeny-office-annoyatron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falignan%2Fgeeny-office-annoyatron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falignan%2Fgeeny-office-annoyatron/lists"}