A Home Assistant custom integration that provides creative rejection reasons via the no-as-a-service API.
Perfect for when you need a creative excuse to say "no" - now integrated into your Home Assistant!
- 🎲 Random Rejection Reasons: Access to 1,000+ pre-written creative excuses
- 🔄 Auto-Update: Sensor automatically refreshes every hour
- 🎯 Manual Refresh: Service call to get a new reason on demand
- 📊 Sensor Integration: Full Home Assistant sensor with attributes
- Open HACS in your Home Assistant instance
- Click on "Integrations"
- Click the three dots in the top right corner
- Select "Custom repositories"
- Add this repository URL:
https://github.com/Diondk/ha_no_service - Select category: "Integration"
- Click "Add"
- Search for "HA No Service" and install
- Download the latest release from the releases page
- Copy the
custom_components/ha_no_servicefolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
All configuration is done via the Home Assistant UI:
- Go to Settings → Devices & Services
- Click + Add Integration
- Search for HA No Service
- Enter your API URL:
- Default/Public API:
https://naas.isalman.dev/no - Custom: Use your own no-as-a-service Docker instance (e.g.,
http://localhost:8080/no)
- Default/Public API:
- Click Submit
The integration will automatically create a sensor and start fetching rejection reasons.
To change the API URL:
- Go to Settings → Devices & Services → HA No Service
- Click the three dots (⋮) and select Configure
- Update the API URL
- Click Submit
Note: YAML configuration is deprecated and will be automatically migrated to the UI when Home Assistant restarts.
If you have existing YAML configuration like this:
sensor:
- platform: ha_no_service
api_url: "https://naas.isalman.dev/no"It will be automatically imported to the UI configuration. You can then remove it from your YAML files.
The sensor sensor.ha_no_service will be available with:
- State: The rejection reason text
- Attributes:
reason: The full rejection text
Call the service to manually get a new rejection reason:
service: ha_no_service.get_noDaily morning rejection:
automation:
- alias: "Daily No"
trigger:
- platform: time
at: "09:00:00"
action:
- service: ha_no_service.get_no
- service: notify.mobile_app
data:
title: "Today's Rejection Reason"
message: "{{ states('sensor.ha_no_service') }}"Use in your dashboard:
type: entities
entities:
- entity: sensor.ha_no_service
name: "Need an excuse?"This integration uses the No-as-a-Service API:
- Endpoint:
https://naas.isalman.dev/no - Rate Limit: 120 requests per minute per IP
- Response:
{"reason": "rejection reason text"}
- API Provider: no-as-a-service by @hotheadhacker
- API Endpoint: naas.isalman.dev
MIT License - see LICENSE for details.
This integration is not affiliated with or endorsed by the no-as-a-service project.