{"id":18709953,"url":"https://github.com/jprusik/mini-ticker","last_synced_at":"2026-04-28T12:03:45.448Z","repository":{"id":47200229,"uuid":"266822609","full_name":"jprusik/mini-ticker","owner":"jprusik","description":"A mini ticker display for your desk; written in Python for the Raspberry Pi Zero ","archived":false,"fork":false,"pushed_at":"2023-10-03T23:07:34.000Z","size":2150,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-28T07:44:11.769Z","etag":null,"topics":["bme280","bmp280","check-in","checkin","desk","dht11","dht22","display","nfc","office","oled","python","raspberry-pi","raspberrypi","raspbian","rc522","rfid","rpi","ssd1306","workplace"],"latest_commit_sha":null,"homepage":"https://www.classynemesis.com/blog/desk-display/","language":"Python","has_issues":false,"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/jprusik.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":"2020-05-25T16:03:50.000Z","updated_at":"2023-02-27T19:00:53.000Z","dependencies_parsed_at":"2024-11-07T12:33:26.692Z","dependency_job_id":"a3b6dc17-69e2-49b8-8c62-de3ac6a94ad1","html_url":"https://github.com/jprusik/mini-ticker","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/jprusik%2Fmini-ticker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jprusik%2Fmini-ticker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jprusik%2Fmini-ticker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jprusik%2Fmini-ticker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jprusik","download_url":"https://codeload.github.com/jprusik/mini-ticker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239572902,"owners_count":19661439,"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":["bme280","bmp280","check-in","checkin","desk","dht11","dht22","display","nfc","office","oled","python","raspberry-pi","raspberrypi","raspbian","rc522","rfid","rpi","ssd1306","workplace"],"created_at":"2024-11-07T12:29:40.699Z","updated_at":"2026-04-28T12:03:40.410Z","avatar_url":"https://github.com/jprusik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mini Ticker\n\nThis project is a purpose-built solution for retrieving and displaying various information that is important to the author.\n\nAdditionally, it has configured interfaces (button presses, NFC/RFID card/tag scan) which can trigger arbitrary actions (e.g. send magic packet). It aims to have a small footprint, with minimal maintenance.\n\nThe code provided here is based on examples ([1](https://github.com/adafruit/Adafruit_CircuitPython_SSD1306/tree/master/examples), [2](https://github.com/ondryaso/pi-rc522/tree/master/examples)) from the [pi-rc522](https://github.com/ondryaso/pi-rc522) and [adafruit-circuitpython-ssd1306](https://github.com/adafruit/Adafruit_CircuitPython_SSD1306) projects.\n\n## Requirements\n\n- Raspberry Pi computer with installed header pins and power source\n- [compatible](https://www.raspberrypi.org/documentation/installation/sd-cards.md) microSD/SD card\n- SSD1306-based 128x64 or 128x32 pixel OLED display (I2C)\n- (Optional) RC522 module (for RFID/NFC communication)\n\n## Setup\n\n- [Install Raspbian (Lite)](https://www.raspberrypi.org/downloads/raspbian/) on a microSD/SD card\n- Set up the Raspberry Pi to run headless and connect it to your network ([guide](https://www.raspberrypi.org/documentation/configuration/wireless/headless.md))\n- [ssh into the Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ssh/):\n- Do `sudo raspi-config` and set up:\n  - \"Interfacing Options\" \u003e \"Interfacing Options\" \u003e \"I2C\" \u003e select \"Yes\"\n  - (Optional) \"Localisation Options\"\n  - (Optional) \"Change User Password\"\n    **Important!** Because we're using a Raspberry Pi, the default user is `pi` with a password of `raspberry` - it is strongly advised to change the password, at minimum.\n- Install dependencies:\n\n  ```shell\n  sudo apt update \u0026\u0026 sudo apt-get install git python3-pip python3-dev libtiff5-dev libopenjp2-7-dev\n  ```\n\n- (Optional) Enable Wake-on-LAN packet sending `sudo apt-get install etherwake`\n- (Optional) If using a Temperature / Humidity sensor, do `sudo apt-get install libgpiod2`\n- Clone this repo and `cd mini-ticker`\n- Install required packages with `pip3 install -r requirements.txt`\n- (Optional) Edit `/boot/config.txt` at the line `dtparam=i2c_arm=on` and replace it with:\n\n  ```shell\n  dtparam=i2c_arm=on,i2c_arm_baudrate=400000\n  ```\n\n- (Optional) If using an RC522 module for RFID/NFC communication, edit `/boot/config.txt` to include the following settings:\n\n  ```settings\n  device_tree_param=spi=on\n  dtoverlay=spi-bcm2708\n  dtparam=spi=on\n  ```\n\n- Edit or create `.env` in the same directory as `status_display.py` with the following contents:\n\n  ```shell\n  DHT11_PIN=4\n  ```\n\n## Running the code\n\nOnce the `ticker.py` script is executed, it will continue to run until the process is terminated. You can manually execute the script on demand, or automatically execute on shell start by editing `/etc/profile` and appending the following to the end of the file (update the file path as needed):\n\n```shell\npython3 /home/pi/mini-ticker\n```\n\nAlternatively, run any given script as a service:\n\n- Run `sudo systemctl --force --full edit mini-ticker.service` and enter the config:\n\n  ```config\n  [Unit]\n  Description=Mini Ticker\n  Requires=network.target\n  After=multi-user.target\n\n  [Service]\n  WorkingDirectory=/home/pi/mini-ticker\n  User=pi\n  ExecStart=python3 .\n  ExecStopPost=python3 -c 'import ticker; ticker.shutdown()'\n\n  [Install]\n  WantedBy=multi-user.target\n  ```\n\n- Enable the service with `sudo systemctl enable --now mini-ticker.service`, and start it with `sudo systemctl start mini-ticker.service`\n\nOther scripts that listen for triggers (e.g. card scan, button press) can be executed in the same way.\n\n## Notes\n\n- This build assumes Raspberry Pi Zero hardware - no other Raspberry Pi hardware has been tested with this code.\n- [Ubuntu Font Family](https://design.ubuntu.com/font/) is included in `/fonts` by default. If you wish to use a different font, add them to the `/fonts` directory and update the import references in `ticker.py` (note, line spacing currently presumes Ubuntu fonts and may require adjustments when using other fonts).\n- Tip: You can access the the target pi on your network using the pi's network DNS reference (`raspberrypi` by default). This is particularly useful if your network has dynamic IP address assignment; you can simply `ssh pi@raspberrypi.local`)\n\n### Supported Hardware\n\n| name | description |\n| --- | --- |\n| bme280 | measures temperature, pressure, altitude, and relative humidity |\n| bmp280 | measures temperature, pressure, and altitude |\n| dht11 | measures temperature and relative humidity |\n| dht22 | measures temperature and relative humidity |\n| RC522 | Near-Field Communication (NFC) module |\n| SSD1306 | 128 x 64 dot matrix OLED |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjprusik%2Fmini-ticker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjprusik%2Fmini-ticker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjprusik%2Fmini-ticker/lists"}