{"id":25490064,"url":"https://github.com/carsonfenimore/racker-stacker","last_synced_at":"2026-04-13T21:32:22.086Z","repository":{"id":276061127,"uuid":"928085829","full_name":"carsonfenimore/racker-stacker","owner":"carsonfenimore","description":"Home assistant card allowing for the creation and monitoring of rack elevations","archived":false,"fork":false,"pushed_at":"2025-03-18T16:45:47.000Z","size":4594,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-23T06:40:30.759Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/carsonfenimore.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2025-02-06T03:14:34.000Z","updated_at":"2025-03-18T16:45:51.000Z","dependencies_parsed_at":"2025-03-10T15:22:50.396Z","dependency_job_id":"dc747d53-4c96-45d8-b423-0bc7de6b76fd","html_url":"https://github.com/carsonfenimore/racker-stacker","commit_stats":null,"previous_names":["carsonfenimore/racker-stacker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/carsonfenimore/racker-stacker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fracker-stacker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fracker-stacker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fracker-stacker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fracker-stacker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carsonfenimore","download_url":"https://codeload.github.com/carsonfenimore/racker-stacker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carsonfenimore%2Fracker-stacker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31771824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: 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":[],"created_at":"2025-02-18T21:19:53.613Z","updated_at":"2026-04-13T21:32:22.069Z","avatar_url":"https://github.com/carsonfenimore.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nThis is a lovelace plugin for home assistant that allows you to monitor racked equipment.  \n\n# Installation\nIn order to use this plugin you need to install the 'racker-stacker.js' inside the 'www/racker-stacker/' in HA. There must also be 'racks' and 'models' subdirs inside the 'racker-stacker' directory.\n\n# Card Creation\nOnce you have populated all the rack and equipment yamls you can use them on a card as follows:\n\n```yaml\ntype: custom:racker-stacker\nname: Rack 41 (front)\nflip: false\nrack: rack41\n```\n\nThis produces something like the following: ![state with no errors](img/racker_stacker_no_errors.jpg)\n\nEach equipment can track any number of sensors.  If any of these sensors are bad the following occurs in order to alert you:\n  - the \"bad\" equipment pulses red\n  - the rack containing the \"bad\" equipment also pulses red\n  - if you hover over the bad equipment it will show sensor(s) are causing the error\n\nAn example of this is shown here: ![state with errors](img/racker_stacker_errors2.jpg)\n\n# Dark Mode\nWe also support dark mode: ![dark mode](img/racker_dark.jpg)\n\n\n## Other Card Options\nYou can also specify an initial scroll offset which is useful if you want to focus on a specific section of the racks on load.  Just add \"scrollx\" and/or \"scrolly\" attributes to the card.\n\n\n# Rack Models\nRack models are yaml files placed in \"www/racker-stacker/racks/[rackname].yaml\" relative to the HA configuration dir. Once the yaml is created, a card can reference [rackname] can as shown above. Rack models are refreshed, without caching, once per second.   An example rack is shown below:\n\n```yaml\nfacing: \"rear\" # optional; defaults to \"front\"\nrack_height: 42  # optional: defaults to 48\nequipment:\n  - hostname: switch-1-1\n    entity: binary_sensor.switch-1-1-rollup \n    model: cisco_3890U\n    rack_u: 48\n    url: \"https://netapp-1-1\"\n  - hostname: server-1-1\n    entity: \n      - binary_sensor.server-1-1-raid-integrity = 'on'\n      - sensor.server-1-1-power-supplies-healthy  = 2\n      - sensor.server-1-1-root-percent-full \u003c 90\n    model: dell_r7625\n  ... \n```\n\n## Entities and Thresholds\nIn the example shown above each instance of a model can have an \"entity\" attribute containing one or more sensor expressions.  The sensor expression is of the form [entityName] [op] [threshold].  The entity can be any entity in HA.  The op can be one of \u003e, \u003e=, \u003c, \u003c=, =, or !=.  The types of the entity must match those of the threshold - in other words, both must be numbers or both must be strings.   If the ha state is a string, the threshold must be surrounded with single quotes.\n\n\n\nA few notes:\n  - url is optional - if provided, a corresponding link will be shown as you hover over the equipment\n  - Equipment orientation is inherited from the rack - however you can override this on individual items by adding a \"facing\" property (acceptable values are \"rear\" or \"front\")\n\n# Equipment Models \n\nEquipment models are placed inside HA in www/racker-stacker/models/ as follows:\n  - Model metadata: \"[modelname].yaml\"\n  - Front image: \"[modelname]_front.jpg\"\n  - Rear image: \"[modelname]_rear.jpg\"\n\nAll three files must be present for the model to be considered good. Any image format for the front and rear is supported - but jpg is the default.  A few sample models are included in this repo - including a NetApp C250 and a Time Machine NTP box.  \n\n## Model Metadata \nEach model's metadata is a yaml containing the following:\n  - width_inches (required) - equipment width in inches\n  - rack_u (required) - equipment height in U\n  - img_type (optional) - gives the image suffix of each equipment; if not provided defaults to \"jpg\"\n\n## Model Images\nThe front and rear images must both be provided.  Images can be any resolution, although in practice a single u, full-width item will be 410x40px.  Thus it is recommended your image be no larger than 410 wide and some multiple of 40px, per rack U.  If the equipment is less than a full width, that is fine, just specify the width in inches in the model file.\n\n\n\n# Future Work\nWe're tracking the following future work items:\n  - multiple racks - Right now this card works really well for one or two racks.  More than that and you have some UI problems arise - namely, how to show everything? Need to look into panel mode, and see if we can get some better horizontal space.  Needless to say right now this isn't meant for modelling [Colossus](https://www.supermicro.com/CaseStudies/Success_Story_xAI_Colossus_Cluster.pdf)\n  - ACK pulsing red - if you see something going wrong, but cannot fix it immediately, you might want to stop the pulsing for that equipment; we might add an \"ACK\" state to let you suppress the pulsing\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarsonfenimore%2Fracker-stacker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarsonfenimore%2Fracker-stacker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarsonfenimore%2Fracker-stacker/lists"}