{"id":21962932,"url":"https://github.com/dominiczedler/snips-wecker","last_synced_at":"2026-05-03T05:32:16.821Z","repository":{"id":158849016,"uuid":"132297996","full_name":"dominiczedler/Snips-Wecker","owner":"dominiczedler","description":"An app for Snips.ai with a fully controllable alarm clock :alarm_clock:","archived":false,"fork":false,"pushed_at":"2019-11-19T23:02:05.000Z","size":908,"stargazers_count":0,"open_issues_count":3,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-31T14:21:55.031Z","etag":null,"topics":["alarm-clock","multi-room","snips","snips-app","snips-skill"],"latest_commit_sha":null,"homepage":"https://console.snips.ai/store/de/skill_61Vz8lVkXQbM","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/dominiczedler.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":"2018-05-06T01:45:27.000Z","updated_at":"2020-01-27T21:56:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"67ad59ed-67ef-45be-9f03-029fdb6ad939","html_url":"https://github.com/dominiczedler/Snips-Wecker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dominiczedler/Snips-Wecker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominiczedler%2FSnips-Wecker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominiczedler%2FSnips-Wecker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominiczedler%2FSnips-Wecker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominiczedler%2FSnips-Wecker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dominiczedler","download_url":"https://codeload.github.com/dominiczedler/Snips-Wecker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominiczedler%2FSnips-Wecker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32559714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T03:21:47.309Z","status":"ssl_error","status_checked_at":"2026-05-03T03:21:43.884Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["alarm-clock","multi-room","snips","snips-app","snips-skill"],"created_at":"2024-11-29T10:57:33.124Z","updated_at":"2026-05-03T05:32:16.807Z","avatar_url":"https://github.com/dominiczedler.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snips-Wecker :alarm_clock:\nAn app for [Snips.ai](https://snips.ai/) with a fully controllable alarm clock.\n\n##### Table of Contents  \n[Features](#i-features)  \n[Installation](#ii-installation)  \n[Configuration](#iii-configuration)  \n[Usage](#iv-usage)  \n[Troubleshooting](#v-troubleshooting)  \n[Coming soon](#vi-coming-soon)  \n[Contribution](#vii-contribution)  \n\n\n## I. Features\n\n- Full multi-room support :house:\n- context-awareness: it detects what room you're in :speech_balloon:\n- customizable (ringtone sound, volume, ringing timeout, rooms) :wrench:\n\n\n## II. Installation\n\n:exclamation: The following instructions assume that [Snips](https://snips.gitbook.io/documentation/snips-basics) is\nalready configured and running on your device (e.g. a Raspberry Pi 3 from the \n[Snips Maker Kit](https://makers.snips.ai/kit/) with \n[Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Stretch Lite). \n[SAM](https://docs.snips.ai/getting-started/quick-start-raspberry-pi) should\nalso already be set up and connected to your device and your account.\n\n1. In the German [app store](https://console.snips.ai/) add the\napp `Wecker \u0026 Alarme` (by domi; [this](https://console.snips.ai/store/de/skill_61Vz8lVkXQbM)) to\nyour *German* assistant.\n\n2. You want to have a more unique alarmclock? Take a look at the section [Configuration](#iii-configuration) below and\nsee what you can change.\n    \n3. If you already have the same assistant on your platform, update it with:\n      ```bash\n      sam update-assistant\n      ```\n      \n   Otherwise install the assistant on the platform with the following command to\n   choose it (if you have multiple assistants in your Snips console):\n      ```bash\n      sam install assistant\n      ```\n   \n   You may change some parameter values of the alarmclock during installation.\n    \n## III. Configuration\n\n### 1. Normal (single-room specific)\n\nIn the Snips console or manually in the file `/var/lib/snips/skills/Snips-Wecker/config.ini` you can change\nsome parameters that influence the behaviour of the alarm clock app:\n\n| Parameter name  | Default | Range   | Description                                                                    |\n|-----------------|---------|---------|--------------------------------------------------------------------------------|\n| ringing_volume  | 50      | 0 - 100 | Volume of the ringtone                                                         |\n| ringing_timeout | 30     | 3 - 8000| Time in seconds for the ringing timeout                                        |\n| restore_alarms  | on      | on/off  | Whether the alarms should be restored after reboot                             |\n| ringtone_status | on      | on/off  | Describes the state of the ringtone. If it's off, only a MQTT message will be sent when the alarm is ringing |\n\n### 2. Advanced (multi-room specific)\n\n- **Parameter** `ringing_volume` for different ringing volume in each room:\u003cbr/\u003e\n\n  Scheme: ```siteId1: volume1, siteId2: volume2, siteId3: volume3, [...]``` \u003cbr/\u003e \n  Unit: Volume in _%_ with range 0 - 100\n  \n  Example: ```kitchen: 20, bedroom: 70, bathroom: 100```\n  \n- **Parameter** `ringing_timeout` for different ringing timeout in each room:\u003cbr/\u003e\n  \n  Scheme: ```siteId1: timeout1, siteId2: timeout2, siteId3: timeout3, [...]``` \u003cbr/\u003e \n  Unit: Timeout in _seconds_ with range 3 to 8000\n  \n  Example: ```kitchen: 50, bedroom: 120, bathroom: 300```\n\n- **Parameter** `ringtone_status` for different ringtone status in each room:\u003cbr/\u003e\n  \n  Scheme: ```siteId1: status1, siteId2: status2, siteId3: status3, [...]``` \u003cbr/\u003e \n  Unit: Status with _on_ or _off_\n  \n  Example: ```kitchen: off, bedroom: on, bathroom: on```\n\n- **Parameter** `dict_siteIds`:\u003cbr/\u003e\n  Important if you have a multi-room setup of Snips! These are pairs of room names and siteIds of these rooms.\n  \n  Scheme: ```room1: siteId1, room2: siteId2, room3: siteId3, [...]```\u003cbr/\u003e\n  Default: `Schlafzimmer:default`\n\n- **Parameter** `default_room`:\u003cbr/\u003e\n  Important if you have a multi-room setup of Snips!\u003cbr/\u003e\n  Here must be the name of the room in which the alarm is to be set, if no room was said in the command.\n  \n  Scheme: ```roomname```\u003cbr/\u003e\n  Default: `Schlafzimmer`\n\n#### Examples of multi-room configurations\n\n##### Example 1\n\n![Example 1](resources/MultiroomExample1.png)\n\nParameters values in the [Snips console](https://console.snips.ai/) in this app:\n\n- dict_site-id: `Wohnzimmer:main, Küche:kitchen, Büro:office, Schlafzimmer:bedroom`\n- default_room: `Schlafzimmer`\n\n## IV. Usage\n\n### 1. Example sentences\n\n**New alarm:**\n\n- *Wecke mich `in neun Stunden`.*\n- *Kannst du mich `morgen um 8 Uhr 30` wecken?*\n- *Bitte wecke mich `in drei Tagen um 5 Uhr`.*\n- *Stelle einen Alarm `in zwei Minuten`.*\n- *Alarmiere mich `hier` `in 15 Minuten`.*\n- *Stelle im `Schlafzimmer` einen Alarm auf `10 Uhr 20`.*\n- *Stelle einen Alarm in der `Küche` auf `18 Uhr 50`.*\n- *Ich möchte `morgen um 7 Uhr` in `diesem Raum` geweckt werden.*\n- *`Morgen` soll mich ein Wecker `um 10 Uhr` wecken.*\n\n**Get alarms:**\n\n- *Gibt es einen Alarm `um 12 Uhr`?*\n- *Gibt es einen Wecker `um 1 Uhr` in `diesem Zimmer`?*\n- *Sage alle Alarme `hier` `zwischen 21 Uhr und 23 Uhr`.*\n- *Bitte zähle die Alarme von der `Küche` `bis zwanzig Uhr` auf.*\n- *Wird `heute um Mitternacht` der Wecker im `Kinderzimmer` losgehen?*\n- *Ist für `heute Abend neunzehn Uhr` ein Wecker aktiv?*\n- *Ich will alle Alarme wissen, die `heute` in `diesem Zimmer` klingeln.*\n- *Welche Alarme werden `am Mittwoch in zwei Wochen` klingeln?*\n\n**Get next alarm:**\n\n- *Wann klingelt in der `Küche` der nächste Alarm?*\n- *Was ist der nächste Alarm?*\n- *Kannst du mir sagen wann der nächste Alarm klingelt?*\n- *In wie vielen Stunden klingelt `hier` der nächste Alarm?*\n- *Sage mir wann der nächste Alarm klingelt.*\n- *Wann ist der nächste Wecker gestellt?*\n- *Wann klingelt der nächste Alarm im `Bad`?*\n- *Ich will wissen wann im `Schlafzimmer` der nächste Alarm los geht.*\n\n**Delete alarms:**\n\n- *Lösche alle Alarme `morgen um neun Uhr` im `Foyer`.*\n- *Kannst du bitte den Wecker `morgen um neun Uhr` im `Foyer` entfernen.*\n- *Kannst du den Wecker `in zwei Tagen um achtzehn Uhr` im `Eingangsbereich` löschen.*\n- *Alarm `um neun Uhr zehn` im `Esszimmer` löschen.*\n- *Bitte den Alarm im `Wohnzimmer` `um 8 Uhr zwanzig` entfernen.*\n- *Entferne den Alarm `heute um zehn Uhr` auf dem `Dachboden`.*\n- *Lösche den Alarm `heute um drei Uhr` in `diesem Raum`.*\n- *Entferne den Wecker im `Klo` `um acht Uhr`.*\n\n**Get missed alarms:**\n\n- *Habe ich Alarme `heute` `hier` verpasst?*\n- *Habe ich in der Vergangenheit `hier` Alarme verpasst?*\n- *Sage bitte die nicht gehörten Wecker vom `Eingang`.*\n- *Kannst du die nicht gehörten Alarme sagen.*\n- *Bitte lese alle verpassten Alarme von `gestern` vor.*\n- *Kannst du alle verpassten Wecker von der `Küche` sagen.*\n- *Sage alle verpassten Alarme von `diesem Mittwoch`.*\n- *Habe ich `letzte Woche` im `Kinderzimmer` einen Alarm verpasst?*\n\n\n### 2. While ringing\n\nWhile an alarm is ringing in a room you can say a hotword in this room, which is by default \"Hey Snips!\".\nThe ringtone\n\n![img](resources/Snips-Alarmclock-ringing.png)\n\n### 3. MQTT messages\n\n#### In messages\n\n##### external/alarmclock/in/getAllAlarms\n\nYou should subscribe to `external/alarmclock/out/allAlarms` before publishing this message. Then you will get all\nalarms.\n\nNo JSON Payload required.\n\n##### hermes/external/alarmclock/in/stopRinging\n\nJSON Payload (I'm working on it):\n\n| Key | Value |\n|-----|-------|\n|siteId\t| *String* - Site where the alarmclock should stop ringing|\n\n#### Out messages\n\n##### external/alarmclock/out/newAlarm\n\nJSON Payload: `data` (example access name)\n\n| Key | Value |\n|-----|-------|\n|new|*JSON Object* - Alarm details: datetime object and siteId (see below: 'new')|\n|all|*Dictionary* - Includes all alarms (with the new one; see below: 'all')|\n\n'new' - JSON Object: `data['new']`\n\n| Key | Value |\n|-----|-------|\n|datetime|*String* - Python object which includes date and time|\n|siteId|*String* - Site where the user created the alarm|\n\n'all' - Dictionary: `data['all']`\n\n| Dict-Keys (description) | Dict-Values (description)|\n|-----|-------|\n|datetime (*String* - Includes date and time; can be parsed into `datetime` object with `strptime` from module `datetime` (see below))|siteId (*String* - Site where the user created the alarm)|\n\nAn example parsing with Python is in `examples/exaple_parsing_newAlarm.py`\n\n\n##### external/alarmclock/out/allAlarms\n\ntodo\n\n\n##### external/alarmclock/out/ringing\n\nJSON Payload:\n\n| Key | Value |\n|-----|-------|\n|siteId|*String* - Site where the alarmclock is ringing|\n|room|*String* - Room name where the alarmclock is ringing|\n\n## V. Troubleshooting\n\n- I can't receive some MQTT messages from the Alarmclock.\n\n    Some MQTT clients may have a package size limit, so you won be able to receive messages with a larger\n    payload than the limit size until you increase this. E.g. in the library `PubSubClient` for the Arduino the package\n    limit is 128 bytes. In the file `\u003cArduino libraries folder\u003e/PubSubClient/src/PubSubClient.h` the constant \n    `MQTT_MAX_PACKET_SIZE` must be increased. How much? This depends on how many alarms you will create.\n\n- The time is wrong on my device.\n\n    Make sure that the time and date are correct on your device.\n\n## VI. Coming :soon:\n\n- Ask for missed alarms [############_]\n- New setting: snooze en/disabled (then don't end session)\n- Captcha exercises against oversleeping [______________________]\n- Internationalisation [############__]\n- Nice README [#######__________]\n- Send alarm data over MQTT [###_________________]\n- Maybe: periodical alarms (daily, weekly); before: change clock thread to schedule module\n\n\n## VII. Contribution\n\nPlease report errors and bugs (you can see them with `sam service log snips-skill-server` or on the Pi\nwith `sudo tail -f /var/log/syslog`) by opening\na [new issue](https://github.com/MrJohnZoidberg/Snips-Wecker/issues/new).\nYou can also write other ideas for this app. Thank you for your contribution.\n\nMade with :blue_heart:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominiczedler%2Fsnips-wecker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdominiczedler%2Fsnips-wecker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominiczedler%2Fsnips-wecker/lists"}