├── validate_integrations ├── requirements.txt ├── run.sh ├── Dockerfile └── validate_integrations.py ├── templates ├── validate.template └── builder.template ├── validate_requirements ├── requirements.txt ├── run.sh ├── Dockerfile └── validate_requirements.py ├── .gitignore ├── .github ├── dependabot.yml └── workflows │ ├── wheels.yml │ └── ci.yaml ├── components ├── sureha.json ├── beoplay.json ├── winix.json ├── hasl.json ├── argon40.json ├── erse.json ├── gios.json ├── hacs.json ├── hasl3.json ├── indego.json ├── airly.json ├── nhc2.json ├── redfin.json ├── securifi.json ├── sunspec.json ├── aria2.json ├── consul.json ├── fpl_api.json ├── govee.json ├── loxone.json ├── myenergi.json ├── myq.json ├── sonoff.json ├── aarlo.json ├── egauge.json ├── heatzy.json ├── honor_x3.json ├── iparcelbox.json ├── ltss.json ├── luxtronik.json ├── lyric.json ├── nosnews.json ├── optus.json ├── s3.json ├── sia.json ├── beward.json ├── fpa.json ├── ipx800v4.json ├── lobe.json ├── nobo_hub.json ├── renault.json ├── tryfi.json ├── ultrasync.json ├── weatherbit.json ├── climate_ip.json ├── easee.json ├── hekr.json ├── hubitat.json ├── jellyfin.json ├── ocpp.json ├── openei.json ├── reaper.json ├── sql_json.json ├── uhoo.json ├── alarmdotcom.json ├── danfoss_ally.json ├── deltasol.json ├── ecodevices.json ├── fordpass.json ├── googlewifi.json ├── hpprinter.json ├── hx3.json ├── meteoalarmeu.json ├── meteobridge.json ├── mosoblgaz.json ├── openhab.json ├── powerpal.json ├── rki_covid.json ├── spacex.json ├── tns_energo.json ├── wattbox.json ├── zadnego_ale.json ├── alko.json ├── arris_dcx960.json ├── bosch_shc.json ├── dobiss.json ├── duolingo.json ├── georide.json ├── helios.json ├── helium.json ├── imaprotect.json ├── internode.json ├── jq300.json ├── kamstrup_403.json ├── mbapi2020.json ├── midea_ac_lan.json ├── moox_track.json ├── netia_player.json ├── nordigen.json ├── nordpool.json ├── o365.json ├── openrgb.json ├── pfsense.json ├── reversotts.json ├── rrd_recorder.json ├── ruuvi.json ├── tesla_custom.json ├── tgtg.json ├── toyota.json ├── ubee.json ├── usr_r16.json ├── weenect.json ├── xiaomi_miio_fan.json ├── xiaomi_miio_raw.json ├── yeelight_bt.json ├── zaptec.json ├── ams.json ├── auroraplus.json ├── awox.json ├── candy.json ├── cleverspa.json ├── damda_evcharger.json ├── damda_weather.json ├── hi_mama.json ├── homee.json ├── hslhrt.json ├── lamarzocco.json ├── morph_numbers.json ├── ngenic.json ├── plcbus.json ├── porscheconnect.json ├── salus.json ├── senseme.json ├── shelly.json ├── technicolor.json ├── vivint.json ├── wavinsentio.json ├── xiaomi_miio_plug.json ├── xiaomi_miot.json ├── xiaomi_miot_raw.json ├── airscape.json ├── amshan.json ├── balboa.json ├── dwd_weather.json ├── ge_kitchen.json ├── gecko.json ├── google_home.json ├── grocy.json ├── hive.json ├── jumbo.json ├── kia_uvo.json ├── mdadm_state.json ├── miio_yeelink.json ├── mintmobile.json ├── monitor_docker.json ├── novus300bus.json ├── plex_assistant.json ├── raincloud.json ├── redpocket.json ├── steam_wishlist.json ├── stihl_imow.json ├── svt_play.json ├── uvfive.json ├── veolia.json ├── wyzeapi.json ├── astroweather.json ├── casambi.json ├── ecodevices_rt2.json ├── enocean_custom.json ├── kef_connector.json ├── mitemp_bt2.json ├── mosenergosbyt.json ├── motioneye.json ├── multiscrape.json ├── nuvo_serial.json ├── opensprinkler.json ├── peloton.json ├── sagemcom_fast.json ├── xiaomi_gateway3.json ├── xiaomi_miio_cooker.json ├── adax.json ├── anniversaries.json ├── chargeamps.json ├── currentcost.json ├── ha_pyamdgpuinfo.json ├── livebox.json ├── metlink.json ├── pijuice.json ├── poolmath.json ├── saj_modbus.json ├── tahoma.json ├── thermal_vision.json ├── toshiba_ac.json ├── ukho_tides.json ├── uponor.json ├── casatunes.json ├── goecharger.json ├── heatmiser_wifi.json ├── huesyncbox.json ├── musiccast_yamaha.json ├── pioneer_async.json ├── powercalc.json ├── rocketlaunchlive.json ├── senec.json ├── skydance.json ├── skyq.json ├── tdameritrade.json ├── teufel_raumfeld.json ├── trackimo.json ├── viomise.json ├── wemportal.json ├── abalin_nameday.json ├── ecowitt.json ├── fullykiosk.json ├── ge_home.json ├── here_weather.json ├── lightwave2.json ├── lkcomu_interrao.json ├── miele.json ├── mikrotik_api.json ├── oppo_udp.json ├── osrm_travel_time.json ├── pirateweather.json ├── proscenic.json ├── satellitetracker.json ├── skodaconnect.json ├── slack_user.json ├── weight_gurus.json ├── xiaomi_miio_philipslight.json ├── avanza_stock.json ├── compal_wifi.json ├── duke_energy_gateway.json ├── homewizard_energy.json ├── litterrobot.json ├── open_route_service.json ├── pr_custom_component.json ├── switchbot_cloud.json ├── vulcan.json ├── worldtidesinfocustom.json ├── xiaomi_viomi.json ├── crownstone.json ├── digitalstrom.json ├── drone_mobile.json ├── elasticsearch.json ├── emscrss.json ├── hella_onyx.json ├── libratone_zipp.json ├── magicswitchbot.json ├── mikrotik_router.json ├── multimatic.json ├── openhasp.json ├── palazzetti.json ├── panasonic_cc.json ├── predistribuce.json ├── wort_des_tages.json ├── xiaomi_miio_airpurifier.json ├── carbon_intensity_uk.json ├── denonavr3806.json ├── husqvarna_automower.json ├── ical.json ├── nespresso.json ├── openweathermap_all.json ├── proof.json ├── teletask.json ├── yandex_music_browser.json ├── ytube_music_player.json ├── amberelectric.json ├── aws_codepipeline.json ├── eskom_loadshedding.json ├── homeeasy_local.json ├── nswcovid.json ├── plugwise_stick.json ├── tapo_control.json ├── victorsmartkill.json ├── alexa_media.json ├── bosch.json ├── brandstofprijzen.json ├── deebot.json ├── echonetlite.json ├── fireservicerota.json ├── foldingathomecontrol.json ├── garmin_connect.json ├── litetouch.json ├── phoenix_ev_charger.json ├── automate.json ├── ble_monitor.json ├── moat_temp_hum_ble.json ├── braviatv_psk.json ├── rct_power.json ├── creasoldombus.json ├── ecowater_softener.json ├── fortnite.json ├── linkplay.json ├── volkswagencarnet.json ├── waste_collection_schedule.json ├── abb_powerone_pvi_sunspec.json ├── omnik_inverter.json ├── gardena-smart-system.json ├── mail_and_packages.json ├── channels_dvr_recently_recorded.json ├── sensor.stadtreinigung_hamburg.json ├── tauron_amiplus.json ├── xiaomi_miio_airconditioningcompanion.json ├── midea_dehumidifier.json ├── ingv_centro_nazionale_terremoti.json ├── xiaomi_cloud_map_extractor.json └── nsw_rural_fire_service_fire_danger.json ├── README.md ├── requirements.json └── .devcontainer └── devcontainer.json /validate_integrations/requirements.txt: -------------------------------------------------------------------------------- 1 | voluptuous -------------------------------------------------------------------------------- /templates/validate.template: -------------------------------------------------------------------------------- 1 | {{range $val := .apk}}{{$val}} {{end}} -------------------------------------------------------------------------------- /validate_requirements/requirements.txt: -------------------------------------------------------------------------------- 1 | cython 2 | pipdeptree 3 | stdlib-list 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio Code 2 | .vscode/* 3 | requirements_raw.txt 4 | 5 | # python 6 | __pycache__ -------------------------------------------------------------------------------- /validate_requirements/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | cat /validate/files.json | jq -r '.[]' | /validate/validate_requirements.py -------------------------------------------------------------------------------- /validate_integrations/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | cat /validate/files.json | jq -r '.[]' | python3 /validate/validate_integrations.py -------------------------------------------------------------------------------- /templates/builder.template: -------------------------------------------------------------------------------- 1 | {{ $list := (.apk) }}{{ $len := (len $list) }}{{range $i, $e := $list}}{{$e}}{{ if ne (add $i 1) (len $list) }};{{end}}{{end}} -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "06:00" 8 | open-pull-requests-limit: 10 -------------------------------------------------------------------------------- /components/sureha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Sure Petcare", 3 | "owner": ["@benleb"], 4 | "manifest": "https://raw.githubusercontent.com/benleb/sureha/dev/manifest.json", 5 | "url": "https://github.com/benleb/sureha" 6 | } 7 | -------------------------------------------------------------------------------- /components/beoplay.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BeoPlay", 3 | "owner": ["@giachello"], 4 | "manifest": "https://raw.githubusercontent.com/giachello/beoplay/main/manifest.json", 5 | "url": "https://github.com/giachello/beoplay" 6 | } 7 | -------------------------------------------------------------------------------- /components/winix.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "winix", 3 | "owner": ["@iprak"], 4 | "manifest": "https://raw.githubusercontent.com/iprak/winix/main/custom_components/winix/manifest.json", 5 | "url": "https://github.com/iprak/winix" 6 | } -------------------------------------------------------------------------------- /components/hasl.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hasl", 3 | "owner": ["@DSorlov"], 4 | "manifest": "https://raw.githubusercontent.com/DSorlov/hasl-platform/master/custom_components/hasl/manifest.json", 5 | "url": "https://hasl.sorlov.com" 6 | } 7 | -------------------------------------------------------------------------------- /components/argon40.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Argon40", 3 | "owner": ["@Misiu"], 4 | "manifest": "https://raw.githubusercontent.com/Misiu/argon40/master/custom_components/argon40/manifest.json", 5 | "url": "https://github.com/Misiu/argon40" 6 | } -------------------------------------------------------------------------------- /components/erse.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "erse", 3 | "owner": ["@dgomes"], 4 | "manifest": "https://raw.githubusercontent.com/dgomes/ha_erse/master/custom_components/erse/manifest.json", 5 | "url": "https://github.com/dgomes/ha_erse" 6 | } 7 | -------------------------------------------------------------------------------- /components/gios.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GIOŚ", 3 | "owner": ["@bieniu"], 4 | "manifest": "https://raw.githubusercontent.com/bieniu/ha-gios/master/custom_components/gios/manifest.json", 5 | "url": "https://github.com/bieniu/ha-gios" 6 | } -------------------------------------------------------------------------------- /components/hacs.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hacs", 3 | "owner": ["@ludeeus"], 4 | "manifest": "https://raw.githubusercontent.com/hacs/integration/main/custom_components/hacs/manifest.json", 5 | "url": "https://github.com/hacs/integration" 6 | } 7 | -------------------------------------------------------------------------------- /components/hasl3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hasl3", 3 | "owner": ["@DSorlov"], 4 | "manifest": "https://raw.githubusercontent.com/hasl-sensor/integration/master/custom_components/hasl3/manifest.json", 5 | "url": "https://hasl.sorlov.com" 6 | } 7 | -------------------------------------------------------------------------------- /components/indego.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "indego", 3 | "owner": ["@jm73"], 4 | "manifest": "https://raw.githubusercontent.com/jm-73/indego/master/custom_components/indego/manifest.json", 5 | "url": "https://github.com/jm-73/Indego" 6 | } 7 | -------------------------------------------------------------------------------- /components/airly.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Airly", 3 | "owner": ["@bieniu"], 4 | "manifest": "https://raw.githubusercontent.com/bieniu/ha-airly/master/custom_components/airly/manifest.json", 5 | "url": "https://github.com/bieniu/ha-airly" 6 | } -------------------------------------------------------------------------------- /components/nhc2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nhc2", 3 | "owner": ["@filipvh"], 4 | "manifest": "https://raw.githubusercontent.com/filipvh/hass-nhc2/master/custom_components/nhc2/manifest.json", 5 | "url": "https://github.com/filipvh/hass-nhc2" 6 | } 7 | -------------------------------------------------------------------------------- /components/redfin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "redfin", 3 | "owner": ["@dreed47"], 4 | "manifest": "https://raw.githubusercontent.com/dreed47/redfin/main/custom_components/redfin/manifest.json", 5 | "url": "https://github.com/dreed47/redfin" 6 | } 7 | -------------------------------------------------------------------------------- /components/securifi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "securifi", 3 | "owner": ["@9rpp"], 4 | "manifest": "https://raw.githubusercontent.com/9rpp/securifi/master/custom_components/securifi/manifest.json", 5 | "url": "https://github.com/9rpp/securifi" 6 | } 7 | -------------------------------------------------------------------------------- /components/sunspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SunSpec", 3 | "owner": ["@CJNE"], 4 | "manifest": "https://raw.githubusercontent.com/CJNE/ha-sunspec/main/custom_components/sunspec/manifest.json", 5 | "url": "https://github.com/CJNE/ha-sunspec" 6 | } 7 | -------------------------------------------------------------------------------- /components/aria2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Aria2", 3 | "owner": ["@tdeblock"], 4 | "manifest": "https://raw.githubusercontent.com/deblockt/hass-aria2/main/custom_components/aria2/manifest.json", 5 | "url": "https://github.com/deblockt/hass-aria2" 6 | } 7 | -------------------------------------------------------------------------------- /components/consul.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "consul", 3 | "owner": ["@jadson179"], 4 | "manifest": "https://raw.githubusercontent.com/jadson179/consul/master/custom_components/consul/manifest.json", 5 | "url": "https://github.com/jadson179/consul" 6 | } 7 | -------------------------------------------------------------------------------- /components/fpl_api.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FPL Api", 3 | "owner": ["@Hojland"], 4 | "manifest": "https://raw.githubusercontent.com/Hojland/hass-fpl/main/custom_components/fpl_api/manifest.json", 5 | "url": "https://github.com/Hojland/hass-fpl" 6 | } 7 | -------------------------------------------------------------------------------- /components/govee.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Govee", 3 | "owner": ["@LaggAt"], 4 | "manifest": "https://raw.githubusercontent.com/LaggAt/hacs-govee/master/custom_components/govee/manifest.json", 5 | "url": "https://github.com/LaggAt/hacs-govee" 6 | } 7 | -------------------------------------------------------------------------------- /components/loxone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PyLoxone", 3 | "owner": ["@JoDehli"], 4 | "manifest": "https://raw.githubusercontent.com/JoDehli/PyLoxone/master/custom_components/loxone/manifest.json", 5 | "url": "https://github.com/JoDehli/PyLoxone" 6 | } 7 | -------------------------------------------------------------------------------- /components/myenergi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myenergi", 3 | "owner": ["@CJNE"], 4 | "manifest": "https://raw.githubusercontent.com/CJNE/ha-myenergi/main/custom_components/myenergi/manifest.json", 5 | "url": "https://github.com/CJNE/ha-myenergi" 6 | } 7 | -------------------------------------------------------------------------------- /components/myq.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "myQ", 3 | "owner": ["@ehendrix23"], 4 | "manifest": "https://raw.githubusercontent.com/ehendrix23/hass_myq/master/custom_components/myq/manifest.json", 5 | "url": "https://github.com/ehendrix23/hass_myq" 6 | } 7 | -------------------------------------------------------------------------------- /components/sonoff.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sonoff", 3 | "owner": ["@AlexxIT"], 4 | "manifest": "https://raw.githubusercontent.com/AlexxIT/SonoffLAN/master/custom_components/sonoff/manifest.json", 5 | "url": "https://github.com/AlexxIT/SonoffLAN" 6 | } 7 | -------------------------------------------------------------------------------- /components/aarlo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aarlo", 3 | "owner": ["@twrecked"], 4 | "manifest": "https://raw.githubusercontent.com/twrecked/hass-aarlo/master/custom_components/aarlo/manifest.json", 5 | "url": "https://github.com/twrecked/hass-aarlo" 6 | } 7 | -------------------------------------------------------------------------------- /components/egauge.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eGauge", 3 | "owner": ["@neggert"], 4 | "manifest": "https://raw.githubusercontent.com/neggert/hass-egauge/master/custom_components/egauge/manifest.json", 5 | "url": "https://github.com/neggert/hass-egauge" 6 | } 7 | -------------------------------------------------------------------------------- /components/heatzy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Heatzy", 3 | "owner": ["@cyr-ius"], 4 | "manifest": "https://raw.githubusercontent.com/cyr-ius/hass-heatzy/master/custom_components/heatzy/manifest.json", 5 | "url": "https://github.com/cyr-ius/hass-heatzy" 6 | } 7 | -------------------------------------------------------------------------------- /components/honor_x3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "honor_x3", 3 | "owner": ["@juacas"], 4 | "manifest": "https://raw.githubusercontent.com/juacas/honor_x3/master/custom_components/honor_x3/manifest.json", 5 | "url": "https://github.com/juacas/honor_x3" 6 | } 7 | -------------------------------------------------------------------------------- /components/iparcelbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iParcelBox", 3 | "owner": ["@gadget-man"], 4 | "manifest": "https://raw.githubusercontent.com/gadget-man/iparcelboxHA/main/manifest.json", 5 | "url": "https://github.com/gadget-man/iparcelboxHA" 6 | } 7 | -------------------------------------------------------------------------------- /components/ltss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LTSS", 3 | "owner": ["@freol35241"], 4 | "manifest": "https://raw.githubusercontent.com/freol35241/ltss/master/custom_components/ltss/manifest.json", 5 | "url": "https://github.com/freol35241/ltss" 6 | } 7 | -------------------------------------------------------------------------------- /components/luxtronik.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Luxtronik", 3 | "owner": ["@bouni"], 4 | "manifest": "https://raw.githubusercontent.com/Bouni/luxtronik/master/custom_components/luxtronik/manifest.json", 5 | "url": "https://github.com/Bouni/luxtronik" 6 | } 7 | -------------------------------------------------------------------------------- /components/lyric.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lyric", 3 | "owner": ["@bramkragten"], 4 | "manifest": "https://raw.githubusercontent.com/bramkragten/lyric/master/custom_components/lyric/manifest.json", 5 | "url": "https://github.com/bramkragten/lyric" 6 | } 7 | -------------------------------------------------------------------------------- /components/nosnews.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NosNews", 3 | "owner": ["@eelcob"], 4 | "manifest": "https://raw.githubusercontent.com/eelcob/nosnews/master/custom_components/nosnews/manifest.json", 5 | "url": "https://github.com/eelcob/nosnews" 6 | } 7 | -------------------------------------------------------------------------------- /components/optus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "optus", 3 | "owner": ["@itchannel"], 4 | "manifest": "https://raw.githubusercontent.com/itchannel/optus-ha/master/custom_components/optus/manifest.json", 5 | "url": "https://github.com/itchannel/optus-ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/s3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "S3", 3 | "owner": ["@robmarkcole"], 4 | "manifest": "https://raw.githubusercontent.com/robmarkcole/HASS-S3/master/custom_components/s3/manifest.json", 5 | "url": "https://github.com/robmarkcole/HASS-S3" 6 | } 7 | -------------------------------------------------------------------------------- /components/sia.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SIA", 3 | "owner": ["@eavanvalkenburg"], 4 | "manifest": "https://raw.githubusercontent.com/eavanvalkenburg/sia/beta/custom_components/sia/manifest.json", 5 | "url": "https://github.com/eavanvalkenburg/sia" 6 | } 7 | -------------------------------------------------------------------------------- /components/beward.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Beward Integration", 3 | "owner": ["@Limych"], 4 | "manifest": "https://raw.githubusercontent.com/Limych/ha-beward/dev/custom_components/beward/manifest.json", 5 | "url": "https://github.com/Limych/ha-beward" 6 | } 7 | -------------------------------------------------------------------------------- /components/fpa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Formula Pro Advanced WiFi", 3 | "owner": [ 4 | "@joncar" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/joncar/ha-fpa/main/manifest.json", 7 | "url": "https://github.com/joncar/ha-fpa" 8 | } 9 | -------------------------------------------------------------------------------- /components/ipx800v4.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GCE IPX800V4", 3 | "owner": ["@Aohzan"], 4 | "manifest": "https://raw.githubusercontent.com/Aohzan/ipx800/master/custom_components/ipx800v4/manifest.json", 5 | "url": "https://github.com/Aohzan/ipx800" 6 | } 7 | -------------------------------------------------------------------------------- /components/lobe.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lobe", 3 | "owner": ["@KTibow"], 4 | "manifest": "https://raw.githubusercontent.com/KTibow/lobe-home-assistant/main/custom_components/lobe/manifest.json", 5 | "url": "https://github.com/KTibow/lobe-home-assistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/nobo_hub.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nobo_hub", 3 | "owner": ["@echoromeo"], 4 | "manifest": "https://raw.githubusercontent.com/echoromeo/hanobo/master/custom_components/nobo_hub/manifest.json", 5 | "url": "https://github.com/echoromeo/hanobo" 6 | } 7 | -------------------------------------------------------------------------------- /components/renault.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Renault", 3 | "owner": ["@epenet"], 4 | "manifest": "https://raw.githubusercontent.com/epenet/hassRenaultZE/master/custom_components/renault/manifest.json", 5 | "url": "https://github.com/epenet/hassRenaultZE" 6 | } 7 | -------------------------------------------------------------------------------- /components/tryfi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tryfi", 3 | "owner": ["@sbabcock23"], 4 | "manifest": "https://raw.githubusercontent.com/sbabcock23/hass-tryfi/master/custom_components/tryfi/manifest.json", 5 | "url": "https://github.com/sbabcock23/hass-tryfi" 6 | } 7 | -------------------------------------------------------------------------------- /components/ultrasync.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ultrasync", 3 | "owner": ["@caronc"], 4 | "manifest": "https://raw.githubusercontent.com/caronc/ha-ultrasync/main/custom_components/ultrasync/manifest.json", 5 | "url": "https://github.com/caronc/ha-ultrasync" 6 | } 7 | -------------------------------------------------------------------------------- /components/weatherbit.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Weatherbit", 3 | "owner": ["@briis"], 4 | "manifest": "https://raw.githubusercontent.com/briis/weatherbit/master/custom_components/weatherbit/manifest.json", 5 | "url": "https://github.com/briis/weatherbit" 6 | } 7 | -------------------------------------------------------------------------------- /components/climate_ip.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Climate IP", 3 | "owner": ["@atxbyea"], 4 | "manifest": "https://raw.githubusercontent.com/atxbyea/samsungrac/master/custom_components/climate_ip/manifest.json", 5 | "url": "https://github.com/atxbyea/samsungrac" 6 | } 7 | -------------------------------------------------------------------------------- /components/easee.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Easee EV charger", 3 | "owner": ["@fondberg"], 4 | "manifest": "https://raw.githubusercontent.com/fondberg/easee_hass/master/custom_components/easee/manifest.json", 5 | "url": "https://github.com/fondberg/easee_hass" 6 | } 7 | -------------------------------------------------------------------------------- /components/hekr.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Hekr", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-hekr-component/master/custom_components/hekr/manifest.json", 5 | "url": "https://github.com/alryaz/hass-hekr-component" 6 | } 7 | -------------------------------------------------------------------------------- /components/hubitat.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Hubitat", 3 | "owner": ["@jason0x43"], 4 | "manifest": "https://raw.githubusercontent.com/jason0x43/hacs-hubitat/master/custom_components/hubitat/manifest.json", 5 | "url": "https://github.com/jason0x43/hacs-hubitat" 6 | } 7 | -------------------------------------------------------------------------------- /components/jellyfin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Jellyfin", 3 | "owner": ["@koying"], 4 | "manifest": "https://raw.githubusercontent.com/koying/jellyfin_ha/main/custom_components/jellyfin/manifest.json", 5 | "url": "https://github.com/koying/jellyfin_ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/ocpp.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Open Charge Point Protocol (OCPP)", 3 | "owner": ["@lbbrhzn"], 4 | "manifest": "https://raw.githubusercontent.com/lbbrhzn/ocpp/main/custom_components/ocpp/manifest.json", 5 | "url": "https://github.com/lbbrhzn/ocpp" 6 | } 7 | -------------------------------------------------------------------------------- /components/openei.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenEI", 3 | "owner": ["@firstof9"], 4 | "manifest": "https://raw.githubusercontent.com/firstof9/ha-openei/master/custom_components/openei/manifest.json", 5 | "url": "https://github.com/firstof9/ha-openei" 6 | } -------------------------------------------------------------------------------- /components/reaper.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Reaper DAW", 3 | "owner": ["@kubawolanin"], 4 | "manifest": "https://raw.githubusercontent.com/kubawolanin/ha-reaper/main/custom_components/reaper/manifest.json", 5 | "url": "https://github.com/kubawolanin/ha-reaper" 6 | } 7 | -------------------------------------------------------------------------------- /components/sql_json.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SQL (JSON)", 3 | "owner": ["@crowbarz"], 4 | "manifest": "https://raw.githubusercontent.com/crowbarz/ha-sql_json/main/custom_components/sql_json/manifest.json", 5 | "url": "https://github.com/crowbarz/ha-sql_json" 6 | } 7 | -------------------------------------------------------------------------------- /components/uhoo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uHoo", 3 | "owner": ["@csacca"], 4 | "manifest": "https://raw.githubusercontent.com/csacca/uhoo-homeassistant/master/custom_components/uhoo/manifest.json", 5 | "url": "https://github.com/csacca/uhoo-homeassistant" 6 | } -------------------------------------------------------------------------------- /components/alarmdotcom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Alarm.com", 3 | "owner": ["@uvjustin"], 4 | "manifest": "https://raw.githubusercontent.com/uvjustin/alarmdotcom/master/custom_components/alarmdotcom/manifest.json", 5 | "url": "https://github.com/uvjustin/alarmdotcom" 6 | } 7 | -------------------------------------------------------------------------------- /components/danfoss_ally.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Danfoss Ally", 3 | "owner": ["@mtrab"], 4 | "manifest": "https://raw.githubusercontent.com/MTrab/danfoss_ally/main/custom_components/danfoss_ally/manifest.json", 5 | "url": "https://github.com/MTrab/danfoss_ally" 6 | } 7 | -------------------------------------------------------------------------------- /components/deltasol.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Deltasol KM2", 3 | "owner": ["@dm82m"], 4 | "manifest": "https://raw.githubusercontent.com/dm82m/hass-Deltasol-KM2/master/custom_components/deltasol/manifest.json", 5 | "url": "https://github.com/dm82m/hass-Deltasol-KM2" 6 | } 7 | -------------------------------------------------------------------------------- /components/ecodevices.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GCE Eco-Devices", 3 | "owner": ["@Aohzan"], 4 | "manifest": "https://raw.githubusercontent.com/Aohzan/ecodevices/master/custom_components/ecodevices/manifest.json", 5 | "url": "https://github.com/Aohzan/ecodevices" 6 | } 7 | -------------------------------------------------------------------------------- /components/fordpass.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fordpass", 3 | "owner": ["@itchannel"], 4 | "manifest": "https://raw.githubusercontent.com/itchannel/fordpass-ha/master/custom_components/fordpass/manifest.json", 5 | "url": "https://github.com/itchannel/fordpass-ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/googlewifi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Google WiFi", 3 | "owner": ["@djtimca"], 4 | "manifest": "https://raw.githubusercontent.com/djtimca/hagooglewifi/main/custom_components/googlewifi/manifest.json", 5 | "url": "https://github.com/djtimca/hagooglewifi" 6 | } 7 | -------------------------------------------------------------------------------- /components/hpprinter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HP Printer", 3 | "owner": ["@elad-bar"], 4 | "manifest": "https://raw.githubusercontent.com/elad-bar/ha-hpprinter/master/custom_components/hpprinter/manifest.json", 5 | "url": "https://github.com/elad-bar/ha-hpprinter" 6 | } 7 | -------------------------------------------------------------------------------- /components/hx3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hx3", 3 | "owner": ["@jaredhobbs"], 4 | "manifest": "https://raw.githubusercontent.com/jaredhobbs/home-assistant-hx3/master/custom_components/hx3/manifest.json", 5 | "url": "https://github.com/jaredhobbs/home-assistant-hx3" 6 | } 7 | -------------------------------------------------------------------------------- /components/meteoalarmeu.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "meteoalarmeu", 3 | "owner": ["@xlcnd"], 4 | "manifest": "https://raw.githubusercontent.com/xlcnd/meteoalarmeu/main/custom_components/meteoalarmeu/manifest.json", 5 | "url": "https://github.com/xlcnd/meteoalarmeu" 6 | } 7 | -------------------------------------------------------------------------------- /components/meteobridge.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "meteobridge", 3 | "owner": ["@briis"], 4 | "manifest": "https://raw.githubusercontent.com/briis/meteobridge/master/custom_components/meteobridge/manifest.json", 5 | "url": "https://github.com/briis/meteobridge" 6 | } -------------------------------------------------------------------------------- /components/mosoblgaz.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mosoblgaz", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-mosoblgaz/master/custom_components/mosoblgaz/manifest.json", 5 | "url": "https://github.com/alryaz/hass-mosoblgaz" 6 | } 7 | -------------------------------------------------------------------------------- /components/openhab.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "openHAB", 3 | "owner": ["@kubawolanin"], 4 | "manifest": "https://raw.githubusercontent.com/kubawolanin/ha-openhab/master/custom_components/openhab/manifest.json", 5 | "url": "https://github.com/kubawolanin/ha-openhab" 6 | } 7 | -------------------------------------------------------------------------------- /components/powerpal.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "powerpal", 3 | "owner": ["@mindmelting"], 4 | "manifest": "https://raw.githubusercontent.com/mindmelting/hass-powerpal/main/custom_components/powerpal/manifest.json", 5 | "url": "https://github.com/mindmelting/hass-powerpal" 6 | } -------------------------------------------------------------------------------- /components/rki_covid.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RKI Covid numbers", 3 | "owner": ["@thebino"], 4 | "manifest": "https://raw.githubusercontent.com/thebino/rki_covid/master/custom_components/rki_covid/manifest.json", 5 | "url": "https://github.com/thebino/rki_covid" 6 | } 7 | -------------------------------------------------------------------------------- /components/spacex.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SpaceX Launches and Starman", 3 | "owner": ["@djtimca"], 4 | "manifest": "https://raw.githubusercontent.com/djtimca/HASpaceX/master/custom_components/spacex/manifest.json", 5 | "url": "https://github.com/djtimca/haspacex" 6 | } 7 | -------------------------------------------------------------------------------- /components/tns_energo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TNS Energo", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-tns-energo/main/custom_components/tns_energo/manifest.json", 5 | "url": "https://github.com/alryaz/hass-tns-energo" 6 | } 7 | -------------------------------------------------------------------------------- /components/wattbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WattBox", 3 | "owner": [ 4 | "@eseglem" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/eseglem/hass-wattbox/master/custom_components/wattbox/manifest.json", 7 | "url": "https://github.com/eseglem/hass-wattbox" 8 | } -------------------------------------------------------------------------------- /components/zadnego_ale.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Żadnego Ale", 3 | "owner": ["@bieniu"], 4 | "manifest": "https://raw.githubusercontent.com/bieniu/ha-zadnego-ale/main/custom_components/zadnego_ale/manifest.json", 5 | "url": "https://github.com/bieniu/ha-zadnego-ale" 6 | } 7 | -------------------------------------------------------------------------------- /components/alko.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "alko", 3 | "owner": [ 4 | "@jonkristian" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/jonkristian/alko/master/custom_components/alko/manifest.json", 7 | "url": "https://github.com/jonkristian/alko" 8 | } -------------------------------------------------------------------------------- /components/arris_dcx960.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Arris DCX960", 3 | "owner": ["@Sholofly"], 4 | "manifest": "https://raw.githubusercontent.com/Sholofly/arrisdcx960/dev/custom_components/arris_dcx960/manifest.json", 5 | "url": "https://github.com/Sholofly/arrisdcx960" 6 | } 7 | -------------------------------------------------------------------------------- /components/bosch_shc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Bosch SHC", 3 | "owner": ["@tschamm"], 4 | "manifest": "https://raw.githubusercontent.com/tschamm/boschshc-hass/master/custom_components/bosch_shc/manifest.json", 5 | "url": "https://github.com/tschamm/boschshc-hass" 6 | } 7 | -------------------------------------------------------------------------------- /components/dobiss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dobiss", 3 | "owner": ["@kesteraernoudt"], 4 | "manifest": "https://raw.githubusercontent.com/kesteraernoudt/dobiss/master/custom_components/dobiss/manifest.json", 5 | "url": "https://github.com/kesteraernoudt/dobiss" 6 | } 7 | -------------------------------------------------------------------------------- /components/duolingo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Duolinguist", 3 | "owner": ["@sphanley"], 4 | "manifest": "https://raw.githubusercontent.com/sphanley/Duolinguist/master/custom_components/duolingo/manifest.json", 5 | "url": "https://github.com/sphanley/Duolinguist" 6 | } -------------------------------------------------------------------------------- /components/georide.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GeoRide", 3 | "owner": [ 4 | "@ptimatth" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/ptimatth/GeorideHA/master/custom_components/georide/manifest.json", 7 | "url": "https://github.com/ptimatth/GeorideHA" 8 | } 9 | -------------------------------------------------------------------------------- /components/helios.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Helios ventilation", 3 | "owner": ["@asev"], 4 | "manifest": "https://raw.githubusercontent.com/asev/homeassistant-helios/master/custom_components/helios/manifest.json", 5 | "url": "https://github.com/asev/homeassistant-helios" 6 | } 7 | -------------------------------------------------------------------------------- /components/helium.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Helium Blockchain", 3 | "owner": ["@rsnodgrass"], 4 | "manifest": "https://raw.githubusercontent.com/rsnodgrass/hass-helium/main/custom_components/helium/manifest.json", 5 | "url": "https://github.com/rsnodgrass/hass-helium" 6 | } 7 | -------------------------------------------------------------------------------- /components/imaprotect.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "IMA Protect Alarm", 3 | "owner": ["@pcourbin"], 4 | "manifest": "https://raw.githubusercontent.com/pcourbin/imaprotect/master/custom_components/imaprotect/manifest.json", 5 | "url": "https://github.com/pcourbin/imaprotect" 6 | } 7 | -------------------------------------------------------------------------------- /components/internode.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "internode", 3 | "owner": ["@LeighCurran"], 4 | "manifest": "https://raw.githubusercontent.com/LeighCurran/InternodeHA/main/custom_components/internode/manifest.json", 5 | "url": "https://github.com/LeighCurran/InternodeHA" 6 | } 7 | -------------------------------------------------------------------------------- /components/jq300.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JQ-300/200/100 Indoor Air Quality Meter", 3 | "owner": ["@Limych"], 4 | "manifest": "https://raw.githubusercontent.com/Limych/ha-jq300/dev/custom_components/jq300/manifest.json", 5 | "url": "https://github.com/Limych/ha-jq300" 6 | } 7 | -------------------------------------------------------------------------------- /components/kamstrup_403.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kamstrup 403", 3 | "owner": ["@golles"], 4 | "manifest": "https://raw.githubusercontent.com/golles/ha-kamstrup_403/main/custom_components/kamstrup_403/manifest.json", 5 | "url": "https://github.com/golles/ha-kamstrup_403" 6 | } 7 | -------------------------------------------------------------------------------- /components/mbapi2020.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mbapi2020", 3 | "owner": ["@ReneNulschDE"], 4 | "manifest": "https://raw.githubusercontent.com/ReneNulschDE/mbapi2020/master/custom_components/mbapi2020/manifest.json", 5 | "url": "https://github.com/ReneNulschDE/mbapi2020" 6 | } 7 | -------------------------------------------------------------------------------- /components/midea_ac_lan.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Midea AC on LAN", 3 | "owner": ["@wyapx"], 4 | "manifest": "https://raw.githubusercontent.com/wyapx/hass_midea_acc/master/custom_components/midea_lan/manifest.json", 5 | "url": "https://github.com/wyapx/hass_midea_acc" 6 | } 7 | -------------------------------------------------------------------------------- /components/moox_track.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MOOX Track", 3 | "owner": ["@moox-it"], 4 | "manifest": "https://raw.githubusercontent.com/moox-it/hass-moox-track/master/custom_components/moox_track/manifest.json", 5 | "url": "https://github.com/moox-it/hass-moox-track" 6 | } 7 | -------------------------------------------------------------------------------- /components/netia_player.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Netia Player", 3 | "owner": ["@korasinski"], 4 | "manifest": "https://raw.githubusercontent.com/korasinski/ha-netia/master/custom_components/netia_player/manifest.json", 5 | "url": "https://github.com/korasinski/ha-netia" 6 | } 7 | -------------------------------------------------------------------------------- /components/nordigen.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Nordigen", 3 | "owner": ["@dogmatic69"], 4 | "manifest": "https://raw.githubusercontent.com/dogmatic69/nordigen-homeassistant/master/manifest.json", 5 | "url": "https://github.com/dogmatic69/nordigen-homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/nordpool.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nordpool", 3 | "owner": ["@Hellowlol"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/nordpool/master/custom_components/nordpool/manifest.json", 5 | "url": "https://github.com/custom-components/nordpool/" 6 | } -------------------------------------------------------------------------------- /components/o365.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "o365", 3 | "owner": ["@rogerselwyn"], 4 | "manifest": "https://raw.githubusercontent.com/RogerSelwyn/O365-HomeAssistant/master/custom_components/o365/manifest.json", 5 | "url": "https://github.com/RogerSelwyn/O365-HomeAssistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/openrgb.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenRGB", 3 | "owner": ["@bahorn", "@koying"], 4 | "manifest": "https://raw.githubusercontent.com/koying/openrgb_ha/master/custom_components/openrgb/manifest.json", 5 | "url": "https://github.com/koying/openrgb_ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/pfsense.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hacs", 3 | "owner": ["@travisghansen"], 4 | "manifest": "https://raw.githubusercontent.com/travisghansen/hass-pfsense/main/custom_components/pfsense/manifest.json", 5 | "url": "https://github.com/travisghansen/hass-pfsense" 6 | } 7 | -------------------------------------------------------------------------------- /components/reversotts.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Reverso TTS", 3 | "owner": ["@yuval_mejahez"], 4 | "manifest": "https://raw.githubusercontent.com/rt400/ReversoTTS-HA/master/custom_components/reversotts/manifest.json", 5 | "url": "https://github.com/rt400/ReversoTTS-HA" 6 | } 7 | -------------------------------------------------------------------------------- /components/rrd_recorder.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RRD Recorder", 3 | "owner": ["@dgomes"], 4 | "manifest": "https://raw.githubusercontent.com/dgomes/rrd_recorder/master/custom_components/rrd/manifest.json", 5 | "url": "https://github.com/dgomes/rrd_recorder/" 6 | } 7 | -------------------------------------------------------------------------------- /components/ruuvi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ruuvi", 3 | "owner": ["@smaisidoro"], 4 | "manifest": "https://raw.githubusercontent.com/ruuvi-friends/ruuvi-hass.io/master/custom_components/ruuvi/manifest.json", 5 | "url": "https://github.com/ruuvi-friends/ruuvi-hass.io" 6 | } -------------------------------------------------------------------------------- /components/tesla_custom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tesla Custom Integration", 3 | "owner": ["@alandtse"], 4 | "manifest": "https://raw.githubusercontent.com/alandtse/tesla/main/custom_components/tesla_custom/manifest.json", 5 | "url": "https://github.com/alandtse/tesla" 6 | } 7 | -------------------------------------------------------------------------------- /components/tgtg.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "name": "TooGoodToGo", 4 | "owner": ["@chouffy"], 5 | "manifest": "https://raw.githubusercontent.com/Chouffy/home_assistant_tgtg/main/custom_components/tgtg/manifest.json", 6 | "url": "https://github.com/Chouffy/home_assistant_tgtg" 7 | } 8 | -------------------------------------------------------------------------------- /components/toyota.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Toyota", 3 | "owner": ["@DurgNomis-drol"], 4 | "manifest": "https://raw.githubusercontent.com/DurgNomis-drol/ha_toyota/master/custom_components/toyota/manifest.json", 5 | "url": "https://github.com/DurgNomis-drol/ha_toyota" 6 | } 7 | -------------------------------------------------------------------------------- /components/ubee.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ubee Router", 3 | "owner": ["@mzdrale", "@kevinhaendel"], 4 | "manifest": "https://raw.githubusercontent.com/kevinhaendel/ha-ubee/main/custom_components/ubee/manifest.json", 5 | "url": "https://github.com/kevinhaendel/ha-ubee" 6 | } 7 | -------------------------------------------------------------------------------- /components/usr_r16.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "USR-R16", 3 | "owner": ["@blindlight"], 4 | "manifest": "https://raw.githubusercontent.com/blindlight86/HA_USR-R16/master/custom_components/usr_r16/manifest.json", 5 | "url": "https://github.com/blindlight86/HA_USR-R16" 6 | } -------------------------------------------------------------------------------- /components/weenect.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weenect", 3 | "owner": ["@eifinger"], 4 | "manifest": "https://raw.githubusercontent.com/eifinger/hass-weenect/master/custom_components/weenect/manifest.json", 5 | "url": "https://github.com/eifinger/hass-weenect" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_fan.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_fan", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomi_fan/develop/custom_components/xiaomi_miio_fan/manifest.json", 5 | "url": "https://github.com/syssi/xiaomi_fan" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_raw", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomi_raw/develop/custom_components/xiaomi_miio_raw/manifest.json", 5 | "url": "https://github.com/syssi/xiaomi_raw" 6 | } 7 | -------------------------------------------------------------------------------- /components/yeelight_bt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yeelight_bt", 3 | "owner": ["@hcoohb"], 4 | "manifest": "https://raw.githubusercontent.com/hcoohb/hass-yeelightbt/master/custom_components/yeelight_bt/manifest.json", 5 | "url": "https://github.com/hcoohb/hass-yeelightbt" 6 | } 7 | -------------------------------------------------------------------------------- /components/zaptec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zaptec", 3 | "owner": ["@Hellowlol"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/zaptec/master/custom_components/zaptec/manifest.json", 5 | "url": "https://github.com/custom-components/zaptec" 6 | } 7 | -------------------------------------------------------------------------------- /components/ams.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Norwegian AMS HAN meter reader", 3 | "owner": ["@turbokongen"], 4 | "manifest": "https://raw.githubusercontent.com/turbokongen/hass-AMS/master/custom_components/ams/manifest.json", 5 | "url": "https://github.com/turbokongen/hass-AMS" 6 | } 7 | -------------------------------------------------------------------------------- /components/auroraplus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auroraplus", 3 | "owner": ["@LeighCurran"], 4 | "manifest": "https://raw.githubusercontent.com/LeighCurran/AuroraPlusHA/main/custom_components/auroraplus/manifest.json", 5 | "url": "https://github.com/LeighCurran/AuroraPlusHA" 6 | } 7 | -------------------------------------------------------------------------------- /components/awox.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AwoX MESH control", 3 | "owner": ["@fsaris"], 4 | "manifest": "https://raw.githubusercontent.com/fsaris/home-assistant-awox/main/custom_components/awox/manifest.json", 5 | "url": "https://github.com/fsaris/home-assistant-awox" 6 | } 7 | -------------------------------------------------------------------------------- /components/candy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Candy Simply-Fi", 3 | "owner": ["@ofalvai"], 4 | "manifest": "https://raw.githubusercontent.com/ofalvai/home-assistant-candy/main/custom_components/candy/manifest.json", 5 | "url": "https://github.com/ofalvai/home-assistant-candy" 6 | } 7 | -------------------------------------------------------------------------------- /components/cleverspa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cleverspa", 3 | "owner": ["@Wh1terat"], 4 | "manifest": "https://raw.githubusercontent.com/Wh1terat/cleverspa-component/main/custom_components/cleverspa/manifest.json", 5 | "url": "https://github.com/Wh1terat/cleverspa-component" 6 | } 7 | -------------------------------------------------------------------------------- /components/damda_evcharger.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Damda EV", 3 | "owner": ["@GuGu927"], 4 | "manifest": "https://raw.githubusercontent.com/GuGu927/damda_evcharger/main/custom_components/damda_evcharger/manifest.json", 5 | "url": "https://github.com/GuGu927/damda_evcharger" 6 | } 7 | -------------------------------------------------------------------------------- /components/damda_weather.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Damda Weather", 3 | "owner": ["@GuGu927"], 4 | "manifest": "https://raw.githubusercontent.com/GuGu927/damda_weather/main/custom_components/damda_weather/manifest.json", 5 | "url": "https://github.com/GuGu927/damda_weather" 6 | } 7 | -------------------------------------------------------------------------------- /components/hi_mama.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hi_mama", 3 | "owner": ["@jcgoette"], 4 | "manifest": "https://raw.githubusercontent.com/jcgoette/hi_mama_homeassistant/main/custom_components/hi_mama/manifest.json", 5 | "url": "https://github.com/jcgoette/hi_mama_homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/homee.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "homee", 3 | "owner": ["@FreshlyBrewedCode"], 4 | "manifest": "https://raw.githubusercontent.com/FreshlyBrewedCode/hacs-homee/master/custom_components/homee/manifest.json", 5 | "url": "https://github.com/FreshlyBrewedCode/hacs-homee" 6 | } 7 | -------------------------------------------------------------------------------- /components/hslhrt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Helsinki Regional Transport", 3 | "owner": ["@anand-p-r"], 4 | "manifest": "https://raw.githubusercontent.com/anand-p-r/hslhrt-hass-custom/main/manifest.json", 5 | "url": "https://github.com/anand-p-r/hslhrt-hass-custom" 6 | } 7 | -------------------------------------------------------------------------------- /components/lamarzocco.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lamarzocco", 3 | "owner": ["@rccoleman"], 4 | "manifest": "https://raw.githubusercontent.com/rccoleman/lamarzocco/master/custom_components/lamarzocco/manifest.json", 5 | "url": "https://github.com/rccoleman/lamarzocco" 6 | } 7 | -------------------------------------------------------------------------------- /components/morph_numbers.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Morph Numbers", 3 | "owner": ["@AlexxIT"], 4 | "manifest": "https://raw.githubusercontent.com/AlexxIT/MorphNumbers/master/custom_components/morph_numbers/manifest.json", 5 | "url": "https://github.com/AlexxIT/MorphNumbers" 6 | } 7 | -------------------------------------------------------------------------------- /components/ngenic.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngenic", 3 | "owner": ["@sfalkman"], 4 | "manifest": "https://raw.githubusercontent.com/sfalkman/ngenic-hass-platform/master/custom_components/ngenic/manifest.json", 5 | "url": "https://github.com/sfalkman/ngenic-hass-platform" 6 | } -------------------------------------------------------------------------------- /components/plcbus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PLCBus", 3 | "owner": ["@tikismoke"], 4 | "manifest": "https://raw.githubusercontent.com/tikismoke/home-assistant-plcbus/master/custom_components/plcbus/manifest.json", 5 | "url": "https://github.com/tikismoke/home-assistant-plcbus" 6 | } 7 | -------------------------------------------------------------------------------- /components/porscheconnect.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Porsche Connect", 3 | "owner": ["@CJNE"], 4 | "manifest": "https://raw.githubusercontent.com/CJNE/ha-porscheconnect/main/custom_components/porscheconnect/manifest.json", 5 | "url": "https://github.com/CJNE/ha-porscheconnect" 6 | } 7 | -------------------------------------------------------------------------------- /components/salus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "salus", 3 | "owner": ["@jvitkauskas"], 4 | "manifest": "https://raw.githubusercontent.com/jvitkauskas/homeassistant_salus/master/custom_components/salus/manifest.json", 5 | "url": "https://github.com/jvitkauskas/homeassistant_salus" 6 | } 7 | -------------------------------------------------------------------------------- /components/senseme.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SenseME", 3 | "owner": ["@mikelawrence"], 4 | "manifest": "https://raw.githubusercontent.com/mikelawrence/senseme-hacs/master/custom_components/senseme/manifest.json", 5 | "url": "https://github.com/mikelawrence/senseme-hacs" 6 | } -------------------------------------------------------------------------------- /components/shelly.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ShellyForHass", 3 | "owner": ["@StyraHem", "@hakana"], 4 | "manifest": "https://raw.githubusercontent.com/StyraHem/ShellyForHASS/master/custom_components/shelly/manifest.json", 5 | "url": "https://github.com/StyraHem/ShellyForHASS" 6 | } 7 | -------------------------------------------------------------------------------- /components/technicolor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Technicolor Custom Integration", 3 | "owner": ["@shaiu"], 4 | "manifest": "https://raw.githubusercontent.com/shaiu/technicolor/main/custom_components/technicolor/manifest.json", 5 | "url": "https://github.com/shaiu/technicolor" 6 | } 7 | -------------------------------------------------------------------------------- /components/vivint.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Vivint", 3 | "owner": [ 4 | "@natekspencer" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/natekspencer/hacs-vivint/main/custom_components/vivint/manifest.json", 7 | "url": "https://github.com/natekspencer/hacs-vivint" 8 | } -------------------------------------------------------------------------------- /components/wavinsentio.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Wavin Sentio", 3 | "owner": ["@djerik"], 4 | "manifest": "https://raw.githubusercontent.com/djerik/wavinsentio-ha/master/custom_components/wavinsentio/manifest.json", 5 | "url": "https://github.com/djerik/wavinsentio-ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_plug.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_plug", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomiplug/develop/custom_components/xiaomi_miio_plug/manifest.json", 5 | "url": "https://github.com/syssi/xiaomiplug" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miot.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miot", 3 | "owner": ["@al-one"], 4 | "manifest": "https://raw.githubusercontent.com/al-one/hass-xiaomi-miot/master/custom_components/xiaomi_miot/manifest.json", 5 | "url": "https://github.com/al-one/hass-xiaomi-miot" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miot_raw.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miot_raw", 3 | "owner": ["@ha0y"], 4 | "manifest": "https://raw.githubusercontent.com/ha0y/xiaomi_miot_raw/master/custom_components/xiaomi_miot_raw/manifest.json", 5 | "url": "https://github.com/ha0y/xiaomi_miot_raw" 6 | } 7 | -------------------------------------------------------------------------------- /components/airscape.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Airscape Whole House Fan", 3 | "owner": ["@quielb"], 4 | "manifest": "https://raw.githubusercontent.com/quielb/hass-airscape/master/custom_components/airscape/manifest.json", 5 | "url": "https://github.com/quielb/hass-airscape" 6 | } 7 | -------------------------------------------------------------------------------- /components/amshan.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMS HAN meter", 3 | "owner": ["@toreamun"], 4 | "manifest": "https://raw.githubusercontent.com/toreamun/amshan-homeassistant/master/custom_components/amshan/manifest.json", 5 | "url": "https://github.com/toreamun/amshan-homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/balboa.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Balboa Spa", 3 | "owner": ["@garbled1"], 4 | "manifest": "https://raw.githubusercontent.com/garbled1/balboa_homeassistan/master/custom_components/balboa/manifest.json", 5 | "url": "https://github.com/garbled1/balboa_homeassistan" 6 | } 7 | -------------------------------------------------------------------------------- /components/dwd_weather.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Deutscher Wetterdienst", 3 | "owner": ["@FL550"], 4 | "manifest": "https://raw.githubusercontent.com/FL550/dwd_weather/master/custom_components/dwd_weather/manifest.json", 5 | "url": "https://github.com/FL550/dwd_weather" 6 | } 7 | -------------------------------------------------------------------------------- /components/ge_kitchen.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GE Kitchen", 3 | "owner": ["@ajmarks"], 4 | "manifest": "https://raw.githubusercontent.com/ajmarks/ha_components/master/ge_kitchen/manifest.json", 5 | "url": "https://github.com/ajmarks/ha_components/tree/master/ge_kitchen" 6 | } 7 | -------------------------------------------------------------------------------- /components/gecko.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Gecko Spa", 3 | "owner": ["@gazoodle"], 4 | "manifest": "https://raw.githubusercontent.com/gazoodle/gecko-home-assistant/master/custom_components/gecko/manifest.json", 5 | "url": "https://github.com/gazoodle/gecko-home-assistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/google_home.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Google Home", 3 | "owner": ["@leikoilja"], 4 | "manifest": "https://raw.githubusercontent.com/leikoilja/ha-google-home/master/custom_components/google_home/manifest.json", 5 | "url": "https://github.com/leikoilja/ha-google-home" 6 | } 7 | -------------------------------------------------------------------------------- /components/grocy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Grocy", 3 | "owner": ["@SebRut", "@isabellaalstrom"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/grocy/master/custom_components/grocy/manifest.json", 5 | "url": "https://github.com/custom-components/grocy/" 6 | } -------------------------------------------------------------------------------- /components/hive.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hive", 3 | "owner": ["@Rendili", "@KJonline"], 4 | "manifest": "https://raw.githubusercontent.com/Pyhive/HA-Hive-Custom-Component/master/custom_components/hive/manifest.json", 5 | "url": "https://github.com/Pyhive/HA-Hive-Custom-Component" 6 | } 7 | -------------------------------------------------------------------------------- /components/jumbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Jumbo", 3 | "owner": ["@peternijssen"], 4 | "manifest": "https://raw.githubusercontent.com/peternijssen/home-assistant-jumbo/master/custom_components/jumbo/manifest.json", 5 | "url": "https://github.com/peternijssen/home-assistant-jumbo" 6 | } 7 | -------------------------------------------------------------------------------- /components/kia_uvo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kia UVO / Hyundai Bluelink", 3 | "owner": ["@fuatakgun"], 4 | "manifest": "https://raw.githubusercontent.com/fuatakgun/kia_uvo/master/custom_components/kia_uvo/manifest.json", 5 | "url": "https://github.com/fuatakgun/kia_uvo" 6 | } 7 | -------------------------------------------------------------------------------- /components/mdadm_state.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RAID Status - MDADM", 3 | "owner": ["@LorenzoVasi"], 4 | "manifest": "https://raw.githubusercontent.com/LorenzoVasi/HA_mdadm/main/custom_components/mdadm_state/manifest.json", 5 | "url": "https://github.com/LorenzoVasi/HA_mdadm" 6 | } 7 | -------------------------------------------------------------------------------- /components/miio_yeelink.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "miio_yeelink", 3 | "owner": ["@al-one"], 4 | "manifest": "https://raw.githubusercontent.com/al-one/hass-miio-yeelink/master/custom_components/miio_yeelink/manifest.json", 5 | "url": "https://github.com/al-one/hass-miio-yeelink" 6 | } 7 | -------------------------------------------------------------------------------- /components/mintmobile.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mint Mobile", 3 | "owner": ["@ryanmac8"], 4 | "manifest": "https://raw.githubusercontent.com/ryanmac8/HA-Mint-Mobile/master/custom_components/mintmobile/manifest.json", 5 | "url": "https://github.com/ryanmac8/HA-Mint-Mobile" 6 | } 7 | -------------------------------------------------------------------------------- /components/monitor_docker.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Monitor Docker", 3 | "owner": ["@ualex73"], 4 | "manifest": "https://raw.githubusercontent.com/ualex73/monitor_docker/master/custom_components/monitor_docker/manifest.json", 5 | "url": "https://github.com/ualex73/monitor_docker" 6 | } 7 | -------------------------------------------------------------------------------- /components/novus300bus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Paul Novus 300 RS-485 Bus", 3 | "owner": ["@BenPru"], 4 | "manifest": "https://raw.githubusercontent.com/BenPru/novus300_Rs485/main/custom_components/novus300bus/manifest.json", 5 | "url": "https://github.com/BenPru/novus300_Rs485" 6 | } 7 | -------------------------------------------------------------------------------- /components/plex_assistant.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "plex_assistant", 3 | "owner": ["@maykar"], 4 | "manifest": "https://raw.githubusercontent.com/maykar/plex_assistant/master/custom_components/plex_assistant/manifest.json", 5 | "url": "https://github.com/maykar/plex_assistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/raincloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "raincloud", 3 | "owner": ["@vanstinator"], 4 | "manifest": "https://raw.githubusercontent.com/vanstinator/hass-raincloud/master/custom_components/raincloud/manifest.json", 5 | "url": "https://github.com/vanstinator/hass-raincloud" 6 | } 7 | -------------------------------------------------------------------------------- /components/redpocket.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RedPocket Mobile", 3 | "owner": ["@mbillow"], 4 | "manifest": "https://raw.githubusercontent.com/mbillow/ha-redpocket/master/custom_components/ha-redpocket/manifest.json", 5 | "url": "https://github.com/mbillow/ha-redpocket" 6 | } 7 | -------------------------------------------------------------------------------- /components/steam_wishlist.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "steam_wishlist", 3 | "owner": ["@boralyl"], 4 | "manifest": "https://raw.githubusercontent.com/boralyl/steam-wishlist/master/custom_components/steam_wishlist/manifest.json", 5 | "url": "https://github.com/boralyl/steam-wishlist" 6 | } 7 | -------------------------------------------------------------------------------- /components/stihl_imow.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stihl_imow", 3 | "owner": ["@ChrisHaPunkt"], 4 | "manifest": "https://raw.githubusercontent.com/ChrisHaPunkt/ha-stihl-imow/main/custom_components/stihl_imow/manifest.json", 5 | "url": "https://github.com/ChrisHaPunkt/ha-stihl-imow" 6 | } 7 | -------------------------------------------------------------------------------- /components/svt_play.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SVT Play", 3 | "owner": ["@lindell"], 4 | "manifest": "https://raw.githubusercontent.com/lindell/home-assistant-svt-play/master/custom_components/svt_play/manifest.json", 5 | "url": "https://github.com/lindell/home-assistant-svt-play" 6 | } 7 | -------------------------------------------------------------------------------- /components/uvfive.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uvFive MIoT device", 3 | "owner": ["@vaughan-zeng"], 4 | "manifest": "https://raw.githubusercontent.com/vaughan-zeng/uvfive_miot/master/custom_components/uvfive/manifest.json", 5 | "url": "https://github.com/vaughan-zeng/uvfive_miot" 6 | } 7 | -------------------------------------------------------------------------------- /components/veolia.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Veolia", 3 | "owner": ["@tetienne"], 4 | "manifest": "https://raw.githubusercontent.com/tetienne/veolia-custom-component/master/custom_components/veolia/manifest.json", 5 | "url": "https://github.com/tetienne/veolia-custom-component" 6 | } 7 | -------------------------------------------------------------------------------- /components/wyzeapi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Wyze Integration", 3 | "owner": ["@JoshuaMulliken"], 4 | "manifest": "https://raw.githubusercontent.com/JoshuaMulliken/ha-wyzeapi/master/custom_components/wyzeapi/manifest.json", 5 | "url": "https://github.com/JoshuaMulliken/ha-wyzeapi" 6 | } 7 | -------------------------------------------------------------------------------- /components/astroweather.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AstroWeather", 3 | "owner": ["@mawinkler"], 4 | "manifest": "https://raw.githubusercontent.com/mawinkler/astroweather/main/custom_components/astroweather/manifest.json", 5 | "url": "https://github.com/mawinkler/astroweather" 6 | } 7 | -------------------------------------------------------------------------------- /components/casambi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "casambi", 3 | "owner": ["@hellqvio86"], 4 | "manifest": "https://raw.githubusercontent.com/hellqvio86/home_assistant_casambi/master/custom_components/casambi/manifest.json", 5 | "url": "https://github.com/hellqvio86/home_assistant_casambi" 6 | } 7 | -------------------------------------------------------------------------------- /components/ecodevices_rt2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ecodevices RT2", 3 | "owner": ["@pcourbin"], 4 | "manifest": "https://raw.githubusercontent.com/pcourbin/ecodevices_rt2/master/custom_components/ecodevices_rt2/manifest.json", 5 | "url": "https://github.com/pcourbin/ecodevices_rt2" 6 | } 7 | -------------------------------------------------------------------------------- /components/enocean_custom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EnOcean custom", 3 | "owner": ["@pierrecle"], 4 | "manifest": "https://raw.githubusercontent.com/pierrecle/enocean_custom/main/custom_components/enocean_custom/manifest.json", 5 | "url": "https://github.com/pierrecle/enocean_custom" 6 | } 7 | -------------------------------------------------------------------------------- /components/kef_connector.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kef Connector", 3 | "owner": ["@n0ciple"], 4 | "manifest": "https://raw.githubusercontent.com/N0ciple/hass-kef-connector/main/custom_components/kef_connector/manifest.json", 5 | "url": "https://github.com/N0ciple/hass-kef-connector" 6 | } 7 | -------------------------------------------------------------------------------- /components/mitemp_bt2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Xiaomi Mijia BLE Temperature Hygrometer 2", 3 | "owner": ["@leonxi"], 4 | "manifest": "https://raw.githubusercontent.com/leonxi/mitemp_bt2/main/custom_components/mitemp_bt2/manifest.json", 5 | "url": "https://github.com/leonxi/mitemp_bt2" 6 | } 7 | -------------------------------------------------------------------------------- /components/mosenergosbyt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mosenergosbyt", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-mosenergosbyt/master/custom_components/mosenergosbyt/manifest.json", 5 | "url": "https://github.com/alryaz/hass-mosenergosbyt" 6 | } 7 | -------------------------------------------------------------------------------- /components/motioneye.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "motionEye", 3 | "owner": ["@dermotduffy"], 4 | "manifest": "https://raw.githubusercontent.com/dermotduffy/hass-motioneye/master/custom_components/motioneye/manifest.json", 5 | "url": "https://github.com/dermotduffy/hass-motioneye" 6 | } 7 | -------------------------------------------------------------------------------- /components/multiscrape.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HA Multiscrape", 3 | "owner": ["@danieldotnl"], 4 | "manifest": "https://raw.githubusercontent.com/danieldotnl/ha-multiscrape/master/custom_components/multiscrape/manifest.json", 5 | "url": "https://github.com/danieldotnl/ha-multiscrape" 6 | } 7 | -------------------------------------------------------------------------------- /components/nuvo_serial.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nuvo_serial", 3 | "owner": ["@sprocket-9"], 4 | "manifest": "https://raw.githubusercontent.com/sprocket-9/hacs-nuvo-serial/main/custom_components/nuvo_serial/manifest.json", 5 | "url": "https://github.com/sprocket-9/hacs-nuvo-serial" 6 | } 7 | -------------------------------------------------------------------------------- /components/opensprinkler.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenSprinkler", 3 | "owner": ["@vinteo"], 4 | "manifest": "https://raw.githubusercontent.com/vinteo/hass-opensprinkler/master/custom_components/opensprinkler/manifest.json", 5 | "url": "https://github.com/vinteo/hass-opensprinkler" 6 | } 7 | -------------------------------------------------------------------------------- /components/peloton.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Peloton", 3 | "owner": ["@edwork"], 4 | "manifest": "https://raw.githubusercontent.com/edwork/homeassistant-peloton-sensor/master/custom_components/peloton/manifest.json", 5 | "url": "https://github.com/edwork/homeassistant-peloton-sensor" 6 | } 7 | -------------------------------------------------------------------------------- /components/sagemcom_fast.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Sagemcom F@st", 3 | "owner": ["@imicknl"], 4 | "manifest": "https://raw.githubusercontent.com/iMicknl/ha-sagemcom-fast/master/custom_components/sagemcom_fast/manifest.json", 5 | "url": "https://github.com/iMicknl/ha-sagemcom-fast" 6 | } -------------------------------------------------------------------------------- /components/xiaomi_gateway3.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_gateway3", 3 | "owner": ["@AlexxIT"], 4 | "manifest": "https://raw.githubusercontent.com/AlexxIT/XiaomiGateway3/master/custom_components/xiaomi_gateway3/manifest.json", 5 | "url": "https://github.com/AlexxIT/XiaomiGateway3" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_cooker.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_cooker", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomi_cooker/develop/custom_components/xiaomi_miio_cooker/manifest.json", 5 | "url": "https://github.com/syssi/xiaomi_cooker" 6 | } 7 | -------------------------------------------------------------------------------- /components/adax.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Adax", 3 | "owner": ["@danielhiversen"], 4 | "manifest": "https://raw.githubusercontent.com/Danielhiversen/home_assistant_adax/master/custom_components/adax/manifest.json", 5 | "url": "https://github.com/Danielhiversen/home_assistant_adax/" 6 | } 7 | -------------------------------------------------------------------------------- /components/anniversaries.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "anniversaries", 3 | "owner": ["@pinkywafer"], 4 | "manifest": "https://raw.githubusercontent.com/pinkywafer/Anniversaries/master/custom_components/anniversaries/manifest.json", 5 | "url": "https://github.com/pinkywafer/Anniversaries" 6 | } 7 | -------------------------------------------------------------------------------- /components/chargeamps.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chargeamps", 3 | "owner": [ 4 | "@kirei", 5 | "@jschlyter" 6 | ], 7 | "manifest": "https://raw.githubusercontent.com/kirei/hass-chargeamps/develop/custom_components/chargeamps/manifest.json", 8 | "url": "https://github.com/kirei/hass-chargeamps" 9 | } -------------------------------------------------------------------------------- /components/currentcost.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Current Cost", 3 | "owner": ["@lolouk44"], 4 | "manifest": "https://raw.githubusercontent.com/lolouk44/CurrentCost_HA_CC/master/custom_components/currentcost/manifest.json", 5 | "url": "https://github.com/lolouk44/CurrentCost_HA_CC" 6 | } 7 | -------------------------------------------------------------------------------- /components/ha_pyamdgpuinfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AMDGPU sensors", 3 | "owner": ["@deadended"], 4 | "manifest": "https://raw.githubusercontent.com/DeadEnded/ha-pyamdgpuinfo/main/custom_components/ha-pyamdgpuinfo/manifest.json", 5 | "url": "https://github.com/DeadEnded/ha-pyamdgpuinfo" 6 | } 7 | -------------------------------------------------------------------------------- /components/livebox.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "name": "Orange Livebox", 4 | "owner": ["@cyr-ius"], 5 | "manifest": "https://raw.githubusercontent.com/cyr-ius/hass-livebox-component/master/custom_components/livebox/manifest.json", 6 | "url": "https://github.com/cyr-ius/hass-livebox-component" 7 | } 8 | -------------------------------------------------------------------------------- /components/metlink.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Metlink Wellington Transport", 3 | "owner": ["@make-all"], 4 | "manifest": "https://raw.githubusercontent.com/make-all/metlink-nz/main/custom_components/metlink/manifest.json", 5 | "url": "https://github.com/make-all/metlink-nz" 6 | } 7 | -------------------------------------------------------------------------------- /components/pijuice.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PiJuice UPS HAT", 3 | "owner": ["@racailloux"], 4 | "manifest": "https://raw.githubusercontent.com/Racailloux/home-assistant-pijuice/main/custom_components/pijuice/manifest.json", 5 | "url": "https://github.com/Racailloux/home-assistant-pijuice" 6 | } 7 | -------------------------------------------------------------------------------- /components/poolmath.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Pool Math (Trouble Free Pool)", 3 | "owner": ["@rsnodgrass"], 4 | "manifest": "https://raw.githubusercontent.com/rsnodgrass/hass-poolmath/master/custom_components/poolmath/manifest.json", 5 | "url": "https://github.com/rsnodgrass/hass-poolmath" 6 | } 7 | -------------------------------------------------------------------------------- /components/saj_modbus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SAJ Inverter Modbus", 3 | "owner": ["@wimb0"], 4 | "manifest": "https://raw.githubusercontent.com/wimb0/home-assistant-saj-modbus/main/custom_components/saj_modbus/manifest.json", 5 | "url": "https://github.com/wimb0/home-assistant-saj-modbus" 6 | } 7 | -------------------------------------------------------------------------------- /components/tahoma.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Somfy TaHoma", 3 | "owner": ["@philklei", "@imicknl", "@vlebourl", "@tetienne"], 4 | "manifest": "https://raw.githubusercontent.com/iMicknl/ha-tahoma/master/custom_components/tahoma/manifest.json", 5 | "url": "https://github.com/imicknl/ha-tahoma" 6 | } 7 | -------------------------------------------------------------------------------- /components/thermal_vision.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Thermal Vision", 3 | "owner": ["@TheRealWaldo"], 4 | "manifest": "https://raw.githubusercontent.com/TheRealWaldo/thermal/main/custom_components/thermal_vision/manifest.json", 5 | "url": "https://github.com/TheRealWaldo/thermal" 6 | } 7 | -------------------------------------------------------------------------------- /components/toshiba_ac.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "toshiba_ac", 3 | "owner": ["@h4de5"], 4 | "manifest": "https://raw.githubusercontent.com/h4de5/home-assistant-toshiba_ac/main/custom_components/toshiba_ac/manifest.json", 5 | "url": "https://github.com/h4de5/home-assistant-toshiba_ac" 6 | } 7 | -------------------------------------------------------------------------------- /components/ukho_tides.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ukho_tides", 3 | "owner": ["@ianByrne"], 4 | "manifest": "https://raw.githubusercontent.com/ianByrne/HASS-ukho_tides/main/custom_components/ukho_tides/manifest.json", 5 | "url": "https://github.com/ianByrne/HASS_Integration_UKHOTides" 6 | } 7 | -------------------------------------------------------------------------------- /components/uponor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Uponor Smatrix Pulse X-265 heating", 3 | "owner": ["@asev"], 4 | "manifest": "https://raw.githubusercontent.com/asev/homeassistant-uponor/master/custom_components/uponor/manifest.json", 5 | "url": "https://github.com/asev/homeassistant-uponor" 6 | } 7 | -------------------------------------------------------------------------------- /components/casatunes.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "casatunes", 3 | "owner": [ 4 | "@jonkristian" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/jonkristian/casatunes/master/custom_components/casatunes/manifest.json", 7 | "url": "https://github.com/jonkristian/casatunes" 8 | } -------------------------------------------------------------------------------- /components/goecharger.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "go-eCharger", 3 | "owner": ["@cathiele"], 4 | "manifest": "https://raw.githubusercontent.com/cathiele/homeassistant-goecharger/master/custom_components/goecharger/manifest.json", 5 | "url": "https://github.com/cathiele/homeassistant-goecharger" 6 | } 7 | -------------------------------------------------------------------------------- /components/heatmiser_wifi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "heatmiser_wifi", 3 | "owner": ["@midstar"], 4 | "manifest": "https://raw.githubusercontent.com/midstar/heatmiser_wifi_ha/master/custom_components/heatmiser_wifi/manifest.json", 5 | "url": "https://github.com/midstar/heatmiser_wifi_ha/" 6 | } 7 | -------------------------------------------------------------------------------- /components/huesyncbox.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Philips Hue Play HDMI Sync Box", 3 | "owner": ["@mvdwetering"], 4 | "manifest": "https://raw.githubusercontent.com/mvdwetering/huesyncbox/master/custom_components/huesyncbox/manifest.json", 5 | "url": "https://github.com/mvdwetering/huesyncbox" 6 | } -------------------------------------------------------------------------------- /components/musiccast_yamaha.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "musiccast_yamaha", 3 | "owner": ["@ppanagiotis"], 4 | "manifest": "https://raw.githubusercontent.com/ppanagiotis/pymusiccast/master/custom_components/musiccast_yamaha/manifest.json", 5 | "url": "https://github.com/ppanagiotis/pymusiccast" 6 | } 7 | -------------------------------------------------------------------------------- /components/pioneer_async.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "name": "Pioneer AVR (async)", 4 | "owner": ["@crowbarz"], 5 | "manifest": "https://raw.githubusercontent.com/crowbarz/ha-pioneer_async/master/custom_components/pioneer_async/manifest.json", 6 | "url": "https://github.com/crowbarz/ha-pioneer_async" 7 | } 8 | -------------------------------------------------------------------------------- /components/powercalc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Powercalc", 3 | "owner": ["@bramstroker"], 4 | "manifest": "https://raw.githubusercontent.com/bramstroker/homeassistant-powercalc/master/custom_components/powercalc/manifest.json", 5 | "url": "https://github.com/bramstroker/homeassistant-powercalc" 6 | } 7 | -------------------------------------------------------------------------------- /components/rocketlaunchlive.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Rocket Launch Live", 3 | "owner": ["@djtimca"], 4 | "manifest": "https://raw.githubusercontent.com/djtimca/harocketlaunchlive/master/custom_components/rocketlaunchlive/manifest.json", 5 | "url": "https://github.com/djtimca/harocketlaunchlive" 6 | } 7 | -------------------------------------------------------------------------------- /components/senec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Senec solar system", 3 | "owner": ["@mchwalisz"], 4 | "manifest": "https://raw.githubusercontent.com/mchwalisz/home-assistant-senec/master/custom_components/senec/manifest.json", 5 | "url": "https://github.com/mchwalisz/home-assistant-senec" 6 | } 7 | -------------------------------------------------------------------------------- /components/skydance.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skydance", 3 | "owner": ["@tomasbedrich"], 4 | "manifest": "https://raw.githubusercontent.com/tomasbedrich/home-assistant-skydance/master/custom_components/skydance/manifest.json", 5 | "url": "https://github.com/tomasbedrich/home-assistant-skydance" 6 | } 7 | -------------------------------------------------------------------------------- /components/skyq.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skyq", 3 | "owner": ["@rogerselwyn"], 4 | "manifest": "https://raw.githubusercontent.com/RogerSelwyn/Home_Assistant_SkyQ_MediaPlayer/master/custom_components/skyq/manifest.json", 5 | "url": "https://github.com/RogerSelwyn/Home_Assistant_SkyQ_MediaPlayer" 6 | } 7 | -------------------------------------------------------------------------------- /components/tdameritrade.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TDAmeritrade", 3 | "owner": ["@prairiesnpr"], 4 | "manifest": "https://raw.githubusercontent.com/prairiesnpr/hass-tdameritrade/master/custom_components/tdameritrade/manifest.json", 5 | "url": "https://github.com/prairiesnpr/hass-tdameritrade" 6 | } 7 | -------------------------------------------------------------------------------- /components/teufel_raumfeld.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Teufel Raumfeld", 3 | "owner": ["@B5r1oJ0A9G"], 4 | "manifest": "https://raw.githubusercontent.com/B5r1oJ0A9G/teufel_raumfeld/master/custom_components/teufel_raumfeld/manifest.json", 5 | "url": "https://github.com/B5r1oJ0A9G/teufel_raumfeld" 6 | } 7 | -------------------------------------------------------------------------------- /components/trackimo.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Trackimo", 3 | "owner": [ 4 | "@troykelly" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/troykelly/hacs-trackimo/main/custom_components/trackimo/manifest.json", 7 | "url": "https://github.com/troykelly/hacs-trackimo" 8 | } 9 | -------------------------------------------------------------------------------- /components/viomise.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "viomise", 3 | "owner": ["@marotoweb"], 4 | "manifest": "https://raw.githubusercontent.com/marotoweb/home-assistant-vacuum-viomise/master/custom_components/viomise/manifest.json", 5 | "url": "https://github.com/marotoweb/home-assistant-vacuum-viomise" 6 | } 7 | -------------------------------------------------------------------------------- /components/wemportal.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Weishaupt WEM Portal", 3 | "owner": ["@erikkastelec"], 4 | "manifest": "https://raw.githubusercontent.com/erikkastelec/hass-WEM-Portal/master/custom_components/wemportal/manifest.json", 5 | "url": "https://github.com/erikkastelec/hass-WEM-Portal" 6 | } 7 | -------------------------------------------------------------------------------- /components/abalin_nameday.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Abalin Name Day API", 3 | "owner": ["@viktak"], 4 | "manifest": "https://raw.githubusercontent.com/viktak/ha-cc-abalin-nameday/main/custom_components/abalin_nameday/manifest.json", 5 | "url": "https://github.com/viktak/ha-cc-abalin-nameday" 6 | } 7 | -------------------------------------------------------------------------------- /components/ecowitt.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ecowitt Weather Station", 3 | "owner": ["@garbled1"], 4 | "manifest": "https://raw.githubusercontent.com/garbled1/homeassistant_ecowitt/master/custom_components/ecowitt/manifest.json", 5 | "url": "https://github.com/garbled1/homeassistant_ecowitt" 6 | } 7 | -------------------------------------------------------------------------------- /components/fullykiosk.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fully Kiosk Browser", 3 | "owner": ["@cgarwood"], 4 | "manifest": "https://raw.githubusercontent.com/cgarwood/homeassistant-fullykiosk/master/custom_components/fullykiosk/manifest.json", 5 | "url": "https://github.com/cgarwood/homeassistant-fullykiosk" 6 | } 7 | -------------------------------------------------------------------------------- /components/ge_home.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GE Home (SmartHQ)", 3 | "owner": ["@simbaja"], 4 | "manifest": "https://raw.githubusercontent.com/simbaja/ha_gehome/master/custom_components/ge_home/manifest.json", 5 | "url": "https://github.com/simbaja/ha_gehome/tree/master/custom_components/ge_home" 6 | } 7 | -------------------------------------------------------------------------------- /components/here_weather.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "here_weather", 3 | "owner": ["@eifinger"], 4 | "manifest": "https://raw.githubusercontent.com/eifinger/hass-here-weather/master/custom_components/here_weather/manifest.json", 5 | "url": "https://github.com/eifinger/hass-here-weather" 6 | } 7 | -------------------------------------------------------------------------------- /components/lightwave2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lightwave2", 3 | "owner": ["@bigbadblunt"], 4 | "manifest": "https://raw.githubusercontent.com/bigbadblunt/homeassistant-lightwave2/master/custom_components/lightwave2/manifest.json", 5 | "url": "https://github.com/bigbadblunt/homeassistant-lightwave2" 6 | } 7 | -------------------------------------------------------------------------------- /components/lkcomu_interrao.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Inter RAO Personal Cabinet", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-lkcomu-interrao/main/custom_components/lkcomu_interrao/manifest.json", 5 | "url": "https://github.com/alryaz/hass-lkcomu-interrao" 6 | } 7 | -------------------------------------------------------------------------------- /components/miele.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "miele", 3 | "owner": ["@kloknibor"], 4 | "manifest": "https://raw.githubusercontent.com/HomeAssistant-Mods/home-assistant-miele/master/custom_components/miele/manifest.json", 5 | "url": "https://github.com/HomeAssistant-Mods/home-assistant-miele" 6 | } 7 | -------------------------------------------------------------------------------- /components/mikrotik_api.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mikrotik API", 3 | "owner": ["@pilotak"], 4 | "manifest": "https://raw.githubusercontent.com/pilotak/homeassistant-mikrotik-api/master/custom_components/mikrotik_api/manifest.json", 5 | "url": "https://github.com/pilotak/homeassistant-mikrotik-api" 6 | } 7 | -------------------------------------------------------------------------------- /components/oppo_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Oppo UDP-20x", 3 | "owner": ["@simbaja"], 4 | "manifest": "https://raw.githubusercontent.com/simbaja/ha_oppoudp/master/custom_components/oppo_udp/manifest.json", 5 | "url": "https://github.com/simbaja/ha_oppoudp/tree/master/custom_components/oppo_udp" 6 | } 7 | -------------------------------------------------------------------------------- /components/osrm_travel_time.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "osrm_travel_time", 3 | "owner": ["@edekeijzer"], 4 | "manifest": "https://raw.githubusercontent.com/edekeijzer/osrm_travel_time/master/custom_components/osrm_travel_time/manifest.json", 5 | "url": "https://github.com/edekeijzer/osrm_travel_time" 6 | } 7 | -------------------------------------------------------------------------------- /components/pirateweather.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PirateWeather", 3 | "owner": ["@alexander0042"], 4 | "manifest": "https://raw.githubusercontent.com/alexander0042/pirate-weather-ha/master/custom_components/pirateweather/manifest.json", 5 | "url": "https://github.com/alexander0042/pirate-weather-ha" 6 | } 7 | -------------------------------------------------------------------------------- /components/proscenic.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "proscenic 790T", 3 | "owner": ["@tdeblock"], 4 | "manifest": "https://raw.githubusercontent.com/deblockt/hass-proscenic-790T-vacuum/master/custom_components/proscenic/manifest.json", 5 | "url": "https://github.com/deblockt/hass-proscenic-790T-vacuum" 6 | } 7 | -------------------------------------------------------------------------------- /components/satellitetracker.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Satellite Tracker (N2YO)", 3 | "owner": ["@djtimca"], 4 | "manifest": "https://raw.githubusercontent.com/djtimca/hasatellitetracker/main/custom_components/satellitetracker/manifest.json", 5 | "url": "https://github.com/djtimca/satellitetracker" 6 | } 7 | -------------------------------------------------------------------------------- /components/skodaconnect.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Skoda Connect", 3 | "owner": ["@lendy007"], 4 | "manifest": "https://raw.githubusercontent.com/lendy007/homeassistant-skodaconnect/main/custom_components/skodaconnect/manifest.json", 5 | "url": "https://github.com/lendy007/homeassistant-skodaconnect" 6 | } 7 | -------------------------------------------------------------------------------- /components/slack_user.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest": "https://raw.githubusercontent.com/GeorgeSG/ha-slack-user/master/custom_components/slack_user/manifest.json", 3 | "name": "slack_user", 4 | "owner": [ 5 | "@GeorgeSG" 6 | ], 7 | "url": "https://github.com/GeorgeSG/ha-slack-user" 8 | } 9 | 10 | -------------------------------------------------------------------------------- /components/weight_gurus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weight_gurus", 3 | "owner": ["@jcgoette"], 4 | "manifest": "https://raw.githubusercontent.com/jcgoette/weight_gurus_homeassistant/master/custom_components/weight_gurus/manifest.json", 5 | "url": "https://github.com/jcgoette/weight_gurus_homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_philipslight.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_philipslight", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/philipslight/develop/custom_components/xiaomi_miio_philipslight/manifest.json", 5 | "url": "https://github.com/syssi/philipslight" 6 | } 7 | -------------------------------------------------------------------------------- /components/avanza_stock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Avanza Stock", 3 | "owner": ["@claha"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/sensor.avanza_stock/master/custom_components/avanza_stock/manifest.json", 5 | "url": "https://github.com/custom-components/sensor.avanza_stock" 6 | } 7 | -------------------------------------------------------------------------------- /components/compal_wifi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Compal WiFi", 3 | "owner": [ 4 | "@frimtec" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/frimtec/hass-compal-wifi/main/custom_components/compal_wifi/manifest.json", 7 | "url": "https://github.com/frimtec/hass-compal-wifi" 8 | } 9 | -------------------------------------------------------------------------------- /components/duke_energy_gateway.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Duke Energy Gateway", 3 | "owner": ["@mjmeli"], 4 | "manifest": "https://raw.githubusercontent.com/mjmeli/ha-duke-energy-gateway/main/custom_components/duke_energy_gateway/manifest.json", 5 | "url": "https://github.com/mjmeli/ha-duke-energy-gateway" 6 | } 7 | -------------------------------------------------------------------------------- /components/homewizard_energy.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "HomeWizard Energy", 3 | "owner": ["@DCSBL", "@unsigus"], 4 | "manifest": "https://raw.githubusercontent.com/DCSBL/ha-homewizard-energy/main/custom_components/homewizard_energy/manifest.json", 5 | "url": "https://github.com/DCSBL/ha-homewizard-energy" 6 | } 7 | -------------------------------------------------------------------------------- /components/litterrobot.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Litter-Robot Connect", 3 | "owner": ["@natekspencer"], 4 | "manifest": "https://raw.githubusercontent.com/natekspencer/hacs-litterrobot/main/custom_components/litterrobot/manifest.json", 5 | "url": "https://github.com/natekspencer/hacs-litterrobot" 6 | } 7 | -------------------------------------------------------------------------------- /components/open_route_service.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "open_route_service", 3 | "owner": ["@eifinger"], 4 | "manifest": "https://raw.githubusercontent.com/eifinger/open_route_service/master/custom_components/open_route_service/manifest.json", 5 | "url": "https://github.com/eifinger/open_route_service" 6 | } 7 | -------------------------------------------------------------------------------- /components/pr_custom_component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PR Custom Component", 3 | "owner": ["@alandtse"], 4 | "manifest": "https://raw.githubusercontent.com/alandtse/pr_custom_component/main/custom_components/pr_custom_component/manifest.json", 5 | "url": "https://github.com/alandtse/pr_custom_component" 6 | } 7 | -------------------------------------------------------------------------------- /components/switchbot_cloud.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "switchbot_cloud", 3 | "owner": ["@stuart-c"], 4 | "manifest": "https://raw.githubusercontent.com/stuart-c/homeassistant-switchbot/master/custom_components/switchbot_cloud/manifest.json", 5 | "url": "https://github.com/stuart-c/homeassistant-switchbot" 6 | } 7 | -------------------------------------------------------------------------------- /components/vulcan.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Uonet+ Vulcan", 3 | "owner": ["@Antoni-Czaplicki"], 4 | "manifest": "https://raw.githubusercontent.com/Antoni-Czaplicki/vulcan-for-hassio/master/custom_components/vulcan/manifest.json", 5 | "url": "https://github.com/Antoni-Czaplicki/vulcan-for-hassio" 6 | } 7 | -------------------------------------------------------------------------------- /components/worldtidesinfocustom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WorldTidesInfoCustom", 3 | "owner": ["@jugla"], 4 | "manifest": "https://raw.githubusercontent.com/jugla/worldtidesinfocustom/main/custom_components/worldtidesinfocustom/manifest.json", 5 | "url": "https://github.com/jugla/worldtidesinfocustom" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_viomi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Xiaomi Viomi", 3 | "owner": ["@nergal"], 4 | "manifest": "https://raw.githubusercontent.com/nergal/homeassistant-vacuum-viomi/master/custom_components/xiaomi_viomi/manifest.json", 5 | "url": "https://github.com/nergal/homeassistant-vacuum-viomi" 6 | } 7 | -------------------------------------------------------------------------------- /components/crownstone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Crownstone", 3 | "owner": ["@Crownstone","@RicArch97"], 4 | "manifest": "https://raw.githubusercontent.com/crownstone/crownstone-home-assistant/master/custom_components/crownstone/manifest.json", 5 | "url": "https://github.com/crownstone/crownstone-home-assistant" 6 | } -------------------------------------------------------------------------------- /components/digitalstrom.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "digitalstrom", 3 | "owner": ["@lociii"], 4 | "manifest": "https://raw.githubusercontent.com/lociii/homeassistant-digitalstrom/master/custom_components/digitalstrom/manifest.json", 5 | "url": "https://github.com/lociii/homeassistant-digitalstrom" 6 | } 7 | -------------------------------------------------------------------------------- /components/drone_mobile.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "drone_mobile", 3 | "owner": ["@bjhiltbrand"], 4 | "manifest": "https://raw.githubusercontent.com/bjhiltbrand/drone_mobile_home_assistant/main/custom_components/drone_mobile/manifest.json", 5 | "url": "https://github.com/bjhiltbrand/drone_mobile_home_assistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/elasticsearch.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Elasticsearch", 3 | "owner": ["@legrego"], 4 | "manifest": "https://raw.githubusercontent.com/legrego/homeassistant-elasticsearch/master/custom_components/elasticsearch/manifest.json", 5 | "url": "https://github.com/legrego/homeassistant-elasticsearch" 6 | } 7 | -------------------------------------------------------------------------------- /components/emscrss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EMSC Earthquake RSS Feed", 3 | "owner": ["@msekoranja"], 4 | "manifest": "https://raw.githubusercontent.com/msekoranja/emsc-hacs-repository/master/custom_components/emscrss/manifest.json", 5 | "url": "https://github.com/msekoranja/emsc-hacs-repository" 6 | } 7 | 8 | -------------------------------------------------------------------------------- /components/hella_onyx.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Hella ONYX.CENTER", 3 | "owner": ["@muhlba91"], 4 | "manifest": "https://raw.githubusercontent.com/muhlba91/onyx-homeassistant-integration/next/custom_components/hella_onyx/manifest.json", 5 | "url": "https://github.com/muhlba91/onyx-homeassistant-integration" 6 | } 7 | -------------------------------------------------------------------------------- /components/libratone_zipp.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Libratone Zipp", 3 | "owner": ["@chouffy"], 4 | "manifest": "https://raw.githubusercontent.com/Chouffy/home_assistant_libratone_zipp/master/custom_components/libratone_zipp/manifest.json", 5 | "url": "https://github.com/Chouffy/home_assistant_libratone_zipp" 6 | } 7 | -------------------------------------------------------------------------------- /components/magicswitchbot.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Magic Switchbot", 3 | "owner": ["@ec-blaster"], 4 | "manifest": "https://raw.githubusercontent.com/ec-blaster/magicswitchbot-homeassistant/main/custom_components/magicswitchbot/manifest.json", 5 | "url": "https://github.com/ec-blaster/magicswitchbot-homeassistant" 6 | } -------------------------------------------------------------------------------- /components/mikrotik_router.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Mikrotik Router", 3 | "owner": ["@tomaae"], 4 | "manifest": "https://raw.githubusercontent.com/tomaae/homeassistant-mikrotik_router/master/custom_components/mikrotik_router/manifest.json", 5 | "url": "https://github.com/tomaae/homeassistant-mikrotik_router" 6 | } 7 | -------------------------------------------------------------------------------- /components/multimatic.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Multimatic", 3 | "owner": [ 4 | "@thomasgermain" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/thomasgermain/vaillant-component/master/custom_components/multimatic/manifest.json", 7 | "url": "https://github.com/thomasgermain/vaillant-component" 8 | } 9 | -------------------------------------------------------------------------------- /components/openhasp.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "openHASP", 3 | "owner": [ 4 | "@dgomes" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/HASwitchPlate/openHASP-custom-component/main/custom_components/openhasp/manifest.json", 7 | "url": "https://github.com/HASwitchPlate/openHASP-custom-component/" 8 | } 9 | -------------------------------------------------------------------------------- /components/palazzetti.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Palazzetti", 3 | "owner": ["@marcopal74"], 4 | "manifest": "https://raw.githubusercontent.com/marcopal74/home-assistant-palazzetti/master/custom_components/palazzetti/manifest.json", 5 | "url": "https://github.com/marcopal74/home-assistant-palazzetti" 6 | } 7 | -------------------------------------------------------------------------------- /components/panasonic_cc.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Panasonic Comfort Cloud", 3 | "owner": ["@sockless-coding"], 4 | "manifest": "https://raw.githubusercontent.com/sockless-coding/panasonic_cc/master/custom_components/panasonic_cc/manifest.json", 5 | "url": "https://github.com/sockless-coding/panasonic_cc" 6 | } -------------------------------------------------------------------------------- /components/predistribuce.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "PRE Distribuce", 3 | "owner": ["@slesinger"], 4 | "manifest": "https://raw.githubusercontent.com/slesinger/HomeAssistant-PREdistribuce/master/custom_components/predistribuce/manifest.json", 5 | "url": "https://github.com/slesinger/HomeAssistant-PREdistribuce" 6 | } 7 | -------------------------------------------------------------------------------- /components/wort_des_tages.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "name": "Wort des Tages", 4 | "owner": ["@Ludy87"], 5 | "manifest": "https://raw.githubusercontent.com/Ludy87/astra_germany_wort_des_tages/main/custom_components/wort_des_tages/manifest.json", 6 | "url": "https://github.com/Ludy87/astra_germany_wort_des_tages" 7 | } 8 | -------------------------------------------------------------------------------- /components/xiaomi_miio_airpurifier.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_airpurifier", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomi_airpurifier/develop/custom_components/xiaomi_miio_airpurifier/manifest.json", 5 | "url": "https://github.com/syssi/xiaomi_airpurifier" 6 | } 7 | -------------------------------------------------------------------------------- /validate_integrations/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM homeassistant/amd64-homeassistant-base 2 | 3 | COPY ./components /validate/components 4 | COPY ./validate_integrations /validate 5 | 6 | RUN \ 7 | python3 -m pip --disable-pip-version-check install -r /validate/requirements.txt 8 | 9 | ENTRYPOINT [ "sh", "/validate/run.sh" ] -------------------------------------------------------------------------------- /components/carbon_intensity_uk.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Carbon Intensity UK", 3 | "owner": ["@jscruz"], 4 | "manifest": "https://raw.githubusercontent.com/jscruz/sensor.carbon_intensity_uk/master/custom_components/carbon_intensity_uk/manifest.json", 5 | "url": "https://github.com/jscruz/sensor.carbon_intensity_uk" 6 | } 7 | -------------------------------------------------------------------------------- /components/denonavr3806.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "denonavr3806", 3 | "owner": [ 4 | "@troykelly" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/troykelly/hacs-denonavr3806/main/custom_components/denonavr3806/manifest.json", 7 | "url": "https://github.com/troykelly/hacs-denonavr3806" 8 | } 9 | -------------------------------------------------------------------------------- /components/husqvarna_automower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Husqvarna Automower", 3 | "owner": ["@Thomas55555"], 4 | "manifest": "https://raw.githubusercontent.com/Thomas55555/husqvarna_automower/main/custom_components/husqvarna_automower/manifest.json", 5 | "url": "https://github.com/Thomas55555/husqvarna_automower" 6 | } 7 | -------------------------------------------------------------------------------- /components/ical.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iCal Sensor", 3 | "owner": ["@Olen", "@TyBritten"], 4 | "manifest": "https://raw.githubusercontent.com/tybritten/ical-sensor-homeassistant/master/custom_components/ical/manifest.json", 5 | "url": "https://github.com/tybritten/ical-sensor-homeassistant/" 6 | } 7 | 8 | -------------------------------------------------------------------------------- /components/nespresso.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Nespresso BLE coffee machine", 3 | "owner": ["@tikismoke"], 4 | "manifest": "https://raw.githubusercontent.com/tikismoke/home-assistant-nespressoble/master/custom_components/nespresso/manifest.json", 5 | "url": "https://github.com/tikismoke/home-assistant-nespressoble" 6 | } 7 | -------------------------------------------------------------------------------- /components/openweathermap_all.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenWeatherMap All", 3 | "owner": ["@viktak"], 4 | "manifest": "https://raw.githubusercontent.com/viktak/ha-cc-openweathermap_all/main/custom_components/openweathermap_all/manifest.json", 5 | "url": "https://github.com/viktak/ha-cc-openweathermap_all" 6 | } 7 | -------------------------------------------------------------------------------- /components/proof.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Proof Dashcam Integration", 3 | "owner": ["@dimagoltsman"], 4 | "manifest": "https://raw.githubusercontent.com/dimagoltsman/ha-proof-dashcam-integration/main/custom_components/proof/manifest.json", 5 | "url": "https://github.com/dimagoltsman/ha-proof-dashcam-integration" 6 | } 7 | -------------------------------------------------------------------------------- /components/teletask.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "teletask", 3 | "owner": [ 4 | "@tiemooowh" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/Tiemooowh/homeassistant-teletask/main/custom_components/teletask/manifest.json", 7 | "url": "https://github.com/Tiemooowh/homeassistant-teletask" 8 | } 9 | -------------------------------------------------------------------------------- /components/yandex_music_browser.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Yandex Music Browser", 3 | "owner": ["@alryaz"], 4 | "manifest": "https://raw.githubusercontent.com/alryaz/hass-yandex-music-browser/main/custom_components/yandex_music_browser/manifest.json", 5 | "url": "https://github.com/alryaz/hass-yandex-music-browser" 6 | } 7 | -------------------------------------------------------------------------------- /components/ytube_music_player.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ytube_music_player", 3 | "owner": ["@KoljaWindeler"], 4 | "manifest": "https://raw.githubusercontent.com/KoljaWindeler/ytube_music_player/main/custom_components/ytube_music_player/manifest.json", 5 | "url": "https://github.com/KoljaWindeler/ytube_music_player" 6 | } 7 | -------------------------------------------------------------------------------- /components/amberelectric.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Amber Electric", 3 | "owner": [ 4 | "@madpilot" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/madpilot/hass-amber-electric/master/custom_components/amberelectric/manifest.json", 7 | "url": "https://github.com/madpilot/hass-amber-electric" 8 | } 9 | -------------------------------------------------------------------------------- /components/aws_codepipeline.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AWS Codepipeline", 3 | "owner": ["@rj175"], 4 | "manifest": "https://raw.githubusercontent.com/rj175/home-assistant-aws-codepipeline/master/custom_components/aws_codepipeline/manifest.json", 5 | "url": "https://github.com/rj175/home-assistant-aws-codepipeline" 6 | } -------------------------------------------------------------------------------- /components/eskom_loadshedding.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Eskom Loadshedding Interface", 3 | "owner": ["@swartjean"], 4 | "manifest": "https://raw.githubusercontent.com/swartjean/ha-eskom-loadshedding/master/custom_components/eskom_loadshedding/manifest.json", 5 | "url": "https://github.com/swartjean/ha-eskom-loadshedding" 6 | } -------------------------------------------------------------------------------- /components/homeeasy_local.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Home Easy HVAC Local", 3 | "owner": [ 4 | "@ki0ki0" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/ki0ki0/homeeasy_ha_local/master/custom_components/homeeasy_local/manifest.json", 7 | "url": "https://github.com/ki0ki0/homeeasy_ha_local" 8 | } 9 | -------------------------------------------------------------------------------- /components/nswcovid.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NSW Covid", 3 | "owner": [ 4 | "@troykelly" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/troykelly/homeassistant-au-nsw-covid/main/custom_components/nswcovid/manifest.json", 7 | "url": "https://github.com/troykelly/homeassistant-au-nsw-covid" 8 | } 9 | -------------------------------------------------------------------------------- /components/plugwise_stick.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Plugwise USB-stick", 3 | "owner": ["@brefra"], 4 | "manifest": "https://raw.githubusercontent.com/brefra/home-assistant-plugwise-stick/master/custom_components/plugwise_stick/manifest.json", 5 | "url": "https://github.com/brefra/home-assistant-plugwise-stick" 6 | } 7 | -------------------------------------------------------------------------------- /components/tapo_control.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tapo: Cameras Control", 3 | "owner": ["@JurajNyiri"], 4 | "manifest": "https://raw.githubusercontent.com/JurajNyiri/HomeAssistant-Tapo-Control/main/custom_components/tapo_control/manifest.json", 5 | "url": "https://github.com/JurajNyiri/HomeAssistant-Tapo-Control" 6 | } -------------------------------------------------------------------------------- /components/victorsmartkill.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Victor Smart-Kill", 3 | "owner": ["@toreamun"], 4 | "manifest": "https://raw.githubusercontent.com/toreamun/victorsmartkill-homeassistant/master/custom_components/victorsmartkill/manifest.json", 5 | "url": "https://github.com/toreamun/victorsmartkill-homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/alexa_media.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Alexa Media Player", 3 | "owner": ["@keatontaylor", "@alandtse"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/alexa_media_player/master/custom_components/alexa_media/manifest.json", 5 | "url": "https://github.com/custom-components/alexa_media_player" 6 | } 7 | -------------------------------------------------------------------------------- /components/bosch.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Bosch", 3 | "owner": ["@pszafer"], 4 | "manifest": "https://raw.githubusercontent.com/bosch-thermostat/home-assistant-bosch-custom-component/master/custom_components/bosch/manifest.json", 5 | "url": "https://github.com/bosch-thermostat/home-assistant-bosch-custom-component" 6 | } 7 | -------------------------------------------------------------------------------- /components/brandstofprijzen.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Brandstofprijzen", 3 | "owner": ["@metbril"], 4 | "manifest": "https://raw.githubusercontent.com/metbril/home-assistant-brandstofprijzen/main/custom_components/brandstofprijzen/manifest.json", 5 | "url": "https://github.com/metbril/home-assistant-brandstofprijzen" 6 | } 7 | -------------------------------------------------------------------------------- /components/deebot.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Deebot 4 Home Assistant", 3 | "owner": ["@DeebotUniverse", "@edenhaus"], 4 | "manifest": "https://raw.githubusercontent.com/DeebotUniverse/Deebot-4-Home-Assistant/main/custom_components/deebot/manifest.json", 5 | "url": "https://github.com/DeebotUniverse/Deebot-4-Home-Assistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/echonetlite.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ECHONETLite", 3 | "owner": ["@scottyphillips"], 4 | "manifest": "https://raw.githubusercontent.com/scottyphillips/echonetlite_homeassistant/master/custom_components/echonetlite/manifest.json", 5 | "url": "https://github.com/scottyphillips/echonetlite_homeassistant" 6 | } 7 | -------------------------------------------------------------------------------- /components/fireservicerota.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fireservicerota", 3 | "owner": ["@cyberjunky"], 4 | "manifest": "https://raw.githubusercontent.com/cyberjunky/home-assistant-fireservicerota/master/custom_components/fireservicerota/manifest.json", 5 | "url": "https://github.com/cyberjunky/home-assistant-fireservicerota" 6 | } 7 | -------------------------------------------------------------------------------- /components/foldingathomecontrol.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "foldingathomecontrol", 3 | "owner": ["@eifinger"], 4 | "manifest": "https://raw.githubusercontent.com/eifinger/hass-foldingathomecontrol/master/custom_components/foldingathomecontrol/manifest.json", 5 | "url": "https://github.com/eifinger/hass-foldingathomecontrol" 6 | } 7 | -------------------------------------------------------------------------------- /components/garmin_connect.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Garmin Connect", 3 | "owner": ["@cyberjunky"], 4 | "manifest": "https://raw.githubusercontent.com/cyberjunky/home-assistant-garmin_connect/main/custom_components/garmin_connect/manifest.json", 5 | "url": "https://github.com/cyberjunky/home-assistant-garmin_connect" 6 | } 7 | -------------------------------------------------------------------------------- /components/litetouch.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LiteTouch", 3 | "owner": ["@patmann03"], 4 | "manifest": "https://raw.githubusercontent.com/patmann03/custom_components/master/custom_components/litetouch/manifest.json", 5 | "url": "https://github.com/patmann03/custom_components/tree/master/custom_components/litetouch" 6 | } 7 | -------------------------------------------------------------------------------- /components/phoenix_ev_charger.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Phoenix EV Charger", 3 | "owner": ["@abrlox"], 4 | "manifest": "https://raw.githubusercontent.com/abrlox/home-assistant-phoenix-ev-charger/main/custom_components/phoenix_ev_charger/manifest.json", 5 | "url": "https://github.com/abrlox/home-assistant-phoenix-ev-charger" 6 | } 7 | -------------------------------------------------------------------------------- /components/automate.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Rollease Acmeda Automate Pulse Hub v2", 3 | "owner": [ 4 | "@sillyfrog" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/sillyfrog/Automate-Pulse-v2/master/custom_components/automate/manifest.json", 7 | "url": "https://github.com/sillyfrog/Automate-Pulse-v2" 8 | } -------------------------------------------------------------------------------- /components/ble_monitor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Passive BLE monitor integration", 3 | "owner": ["@Magalex2x14", "@Ernst79"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/ble_monitor/master/custom_components/ble_monitor/manifest.json", 5 | "url": "https://github.com/custom-components/ble_monitor" 6 | } 7 | -------------------------------------------------------------------------------- /components/moat_temp_hum_ble.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Moat Temperature/Humidity BLE Sensors", 3 | "owner": ["@SteveOnorato"], 4 | "manifest": "https://raw.githubusercontent.com/SteveOnorato/moat_temp_hum_ble/master/custom_components/moat_temp_hum_ble/manifest.json", 5 | "url": "https://github.com/SteveOnorato/moat_temp_hum_ble" 6 | } 7 | -------------------------------------------------------------------------------- /components/braviatv_psk.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest": "https://raw.githubusercontent.com/custom-components/media_player.braviatv_psk/master/custom_components/braviatv_psk/manifest.json", 3 | "name": "braviatv_psk", 4 | "owner": [ 5 | "@gerard33" 6 | ], 7 | "url": "https://github.com/custom-components/media_player.braviatv_psk" 8 | } 9 | -------------------------------------------------------------------------------- /components/rct_power.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RCT Power", 3 | "owner": [ 4 | "@weltenwort" 5 | ], 6 | "manifest": "https://raw.githubusercontent.com/weltenwort/home-assistant-rct-power-integration/main/custom_components/rct_power/manifest.json", 7 | "url": "https://github.com/weltenwort/home-assistant-rct-power-integration" 8 | } 9 | -------------------------------------------------------------------------------- /components/creasoldombus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Creasol DomBus RS485 modules", 3 | "owner": ["@CreasolTech"], 4 | "manifest": "https://raw.githubusercontent.com/CreasolTech/home-assistant-creasol-dombus/main/custom_components/creasoldombus/manifest.json", 5 | "url": "https://github.com/CreasolTech/home-assistant-creasol-dombus" 6 | } 7 | -------------------------------------------------------------------------------- /components/ecowater_softener.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ecowater Softener", 3 | "owner": ["@barleybobs"], 4 | "manifest": "https://raw.githubusercontent.com/barleybobs/homeassistant-ecowater-softener/main/custom_components/ecowater_softener/manifest.json", 5 | "url": "https://github.com/barleybobs/homeassistant-ecowater-softener/" 6 | } -------------------------------------------------------------------------------- /components/fortnite.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Fortnite Stats", 3 | "owner": ["@michaellunzer"], 4 | "manifest": "https://raw.githubusercontent.com/michaellunzer/Home-Assistant-Custom-Component-Fortnite/master/custom_components/fortnite/manifest.json", 5 | "url": "https://github.com/michaellunzer/Home-Assistant-Custom-Component-Fortnite" 6 | } 7 | -------------------------------------------------------------------------------- /components/linkplay.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LinkPlay devices", 3 | "owner": ["@nicjo814", "@nagyrobi"], 4 | "manifest": "https://raw.githubusercontent.com/nagyrobi/home-assistant-custom-components-linkplay/master/custom_components/linkplay/manifest.json", 5 | "url": "https://github.com/nagyrobi/home-assistant-custom-components-linkplay" 6 | } 7 | -------------------------------------------------------------------------------- /components/volkswagencarnet.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Volkswagen WeConnect", 3 | "owner": ["@robinostlund"], 4 | "manifest": "https://raw.githubusercontent.com/robinostlund/homeassistant-volkswagencarnet/master/custom_components/volkswagencarnet/manifest.json", 5 | "url": "https://github.com/robinostlund/homeassistant-volkswagencarnet" 6 | } 7 | -------------------------------------------------------------------------------- /components/waste_collection_schedule.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Waste Collection Schedule", 3 | "owner": ["@mampfes"], 4 | "manifest": "https://raw.githubusercontent.com/mampfes/hacs_waste_collection_schedule/master/custom_components/waste_collection_schedule/manifest.json", 5 | "url": "https://github.com/mampfes/hacs_waste_collection_schedule" 6 | } 7 | -------------------------------------------------------------------------------- /components/abb_powerone_pvi_sunspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ABB Power-One PVI SunSpec", 3 | "owner": ["@alexdelprete"], 4 | "manifest": "https://raw.githubusercontent.com/alexdelprete/ha-abb-powerone-pvi-sunspec/master/custom_components/abb_powerone_pvi_sunspec/manifest.json", 5 | "url": "https://github.com/alexdelprete/ha-abb-powerone-pvi-sunspec" 6 | } 7 | -------------------------------------------------------------------------------- /components/omnik_inverter.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Omnik Inverter", 3 | "owner": ["@klaasnicolaas","@robbinjanssen"], 4 | "manifest": "https://raw.githubusercontent.com/robbinjanssen/home-assistant-omnik-inverter/master/custom_components/omnik_inverter/manifest.json", 5 | "url": "https://github.com/robbinjanssen/home-assistant-omnik-inverter" 6 | } 7 | -------------------------------------------------------------------------------- /components/gardena-smart-system.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Gardena Smart System integration", 3 | "owner": ["@py-smart-gardena"], 4 | "manifest": "https://raw.githubusercontent.com/py-smart-gardena/hass-gardena-smart-system/master/custom_components/gardena_smart_system/manifest.json", 5 | "url": "https://github.com/py-smart-gardena/hass-gardena-smart-system" 6 | } 7 | -------------------------------------------------------------------------------- /components/mail_and_packages.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mail_and_packages", 3 | "owner": ["@moralmunky", "@firstof9"], 4 | "manifest": "https://raw.githubusercontent.com/moralmunky/Home-Assistant-Mail-And-Packages/master/custom_components/mail_and_packages/manifest.json", 5 | "url": "https://github.com/moralmunky/Home-Assistant-Mail-And-Packages" 6 | } 7 | -------------------------------------------------------------------------------- /components/channels_dvr_recently_recorded.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Channels DVR Recently Recorded", 3 | "owner": ["@rccoleman"], 4 | "manifest": "https://raw.githubusercontent.com/rccoleman/channels_dvr_recently_recorded/master/custom_components/channels_dvr_recently_recorded/manifest.json", 5 | "url": "https://github.com/rccoleman/channels_dvr_recently_recorded" 6 | } 7 | -------------------------------------------------------------------------------- /components/sensor.stadtreinigung_hamburg.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Stadtreinigung Hamburg", 3 | "owner": ["@vigonotion"], 4 | "manifest": "https://raw.githubusercontent.com/custom-components/sensor.stadtreinigung_hamburg/master/custom_components/stadtreinigung_hamburg/manifest.json", 5 | "url": "https://github.com/custom-components/sensor.stadtreinigung_hamburg" 6 | } 7 | -------------------------------------------------------------------------------- /components/tauron_amiplus.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Tauron AMIplus", 3 | "owner": ["@PiotrMachowski"], 4 | "manifest": "https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Tauron-AMIplus/master/custom_components/tauron_amiplus/manifest.json", 5 | "url": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Tauron-AMIplus" 6 | } 7 | -------------------------------------------------------------------------------- /components/xiaomi_miio_airconditioningcompanion.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xiaomi_miio_airconditioningcompanion", 3 | "owner": ["@syssi"], 4 | "manifest": "https://raw.githubusercontent.com/syssi/xiaomi_airconditioningcompanion/develop/custom_components/xiaomi_miio_airconditioningcompanion/manifest.json", 5 | "url": "https://github.com/syssi/xiaomi_airconditioningcompanion" 6 | } 7 | -------------------------------------------------------------------------------- /components/midea_dehumidifier.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "EVA II PRO WiFi Midea Inventor Dehumidifier custom integration", 3 | "owner": ["@barban-dev"], 4 | "manifest": "https://raw.githubusercontent.com/barban-dev/homeassistant-midea-dehumidifier/master/custom_components/midea_dehumidifier/manifest.json", 5 | "url": "https://github.com/barban-dev/homeassistant-midea-dehumidifier" 6 | } 7 | -------------------------------------------------------------------------------- /components/ingv_centro_nazionale_terremoti.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "INGV Centro Nazionale Terremoti", 3 | "owner": ["@exxamalte", "@caiosweet"], 4 | "manifest": "https://raw.githubusercontent.com/caiosweet/Home-Assistant-custom-components-INGV/main/custom_components/ingv_centro_nazionale_terremoti/manifest.json", 5 | "url": "https://github.com/caiosweet/Home-Assistant-custom-components-INGV" 6 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Custom Integration Wheels 2 | Custom integration wheels hosted by Home Assistant repository 3 | 4 | ## Custom component provider 5 | 6 | Add a custom_integration.json to components folder like: 7 | 8 | ```json 9 | { 10 | "name": "Name of integration", 11 | "owner": ["@owner"], 12 | "manifest": "https://url/of/manifest.json", 13 | "url": "https://url/of/integration" 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /components/xiaomi_cloud_map_extractor.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Xiaomi Cloud Map Extractor", 3 | "owner": ["@PiotrMachowski"], 4 | "manifest": "https://raw.githubusercontent.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor/master/custom_components/xiaomi_cloud_map_extractor/manifest.json", 5 | "url": "https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor" 6 | } 7 | -------------------------------------------------------------------------------- /components/nsw_rural_fire_service_fire_danger.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NSW Rural Fire Service - Fire Danger", 3 | "owner": ["@exxamalte"], 4 | "manifest": "https://raw.githubusercontent.com/exxamalte/home-assistant-custom-components-nsw-rural-fire-service-fire-danger/main/custom_components/nsw_rural_fire_service_fire_danger/manifest.json", 5 | "url": "https://github.com/exxamalte/home-assistant-custom-components-nsw-rural-fire-service-fire-danger" 6 | } 7 | -------------------------------------------------------------------------------- /validate_requirements/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM homeassistant/amd64-homeassistant-base 2 | 3 | COPY ./components /validate/components 4 | COPY ./validate_requirements /validate 5 | COPY ./templates/validate.template /validate/validate.template 6 | COPY ./requirements.json /validate/requirements.json 7 | 8 | RUN \ 9 | tempio -conf /validate/requirements.json -template /validate/validate.template -out /validate/apk.list \ 10 | && apk add $(cat /validate/apk.list) \ 11 | && python3 -m pip --disable-pip-version-check install -r /validate/requirements.txt 12 | 13 | ENTRYPOINT [ "sh", "/validate/run.sh" ] -------------------------------------------------------------------------------- /requirements.json: -------------------------------------------------------------------------------- 1 | { 2 | "apk": [ 3 | "autoconf", 4 | "automake", 5 | "bluez-dev", 6 | "build-base", 7 | "cmake", 8 | "cups-dev", 9 | "eudev-dev", 10 | "ffmpeg-dev", 11 | "gammu-dev", 12 | "gcc", 13 | "git", 14 | "glib-dev", 15 | "gmp-dev", 16 | "libdrm-dev", 17 | "libexecinfo-dev", 18 | "libffi-dev", 19 | "libjpeg-turbo-dev", 20 | "libpng-dev", 21 | "libxml2-dev", 22 | "libxslt-dev", 23 | "linux-headers", 24 | "mpc1-dev", 25 | "mpfr-dev", 26 | "musl-dev", 27 | "openssl-dev", 28 | "postgresql-dev", 29 | "rrdtool-dev", 30 | "rust", 31 | "tiff-dev" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Custom Integration Wheels", 3 | "image": "mcr.microsoft.com/vscode/devcontainers/python:0-3", 4 | "settings": { 5 | "files.eol": "\n", 6 | "editor.tabSize": 4, 7 | "terminal.integrated.shell.linux": "/bin/bash", 8 | "python.pythonPath": "/usr/local/bin/python", 9 | "python.linting.enabled": true, 10 | "python.linting.pylintEnabled": true, 11 | "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", 12 | "python.formatting.blackPath": "/usr/local/py-utils/bin/black", 13 | "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", 14 | "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", 15 | "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", 16 | "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", 17 | "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", 18 | "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", 19 | "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" 20 | }, 21 | "extensions": [ 22 | "ms-python.python", 23 | "ms-python.vscode-pylance" 24 | ], 25 | "remoteUser": "vscode" 26 | } 27 | -------------------------------------------------------------------------------- /validate_integrations/validate_integrations.py: -------------------------------------------------------------------------------- 1 | """Validate the structure of an integration file.""" 2 | import json 3 | from pathlib import Path 4 | from typing import List, Set 5 | import voluptuous as vol 6 | import sys 7 | 8 | 9 | def owner(value): 10 | """Validate owner""" 11 | if not isinstance(value, list): 12 | raise AssertionError("The owner key is not a list") 13 | 14 | if not value: 15 | raise AssertionError("The owner list is empty") 16 | 17 | for entry in value: 18 | if not entry.startswith("@"): 19 | raise AssertionError(f"The entry {entry} does not start with @") 20 | return value 21 | 22 | 23 | def manifest(value): 24 | """Validate manifest URL.""" 25 | if "github" in value and not "raw.githubusercontent.com" in value: 26 | raise AssertionError("The URL for the manifest key is not a raw URL") 27 | return value 28 | 29 | 30 | INTEGRATION = vol.Schema( 31 | { 32 | vol.Required("name"): str, 33 | vol.Required("owner"): owner, 34 | vol.Required("manifest"): manifest, 35 | vol.Required("url"): str, 36 | } 37 | ) 38 | 39 | 40 | def validate(): 41 | """Run the validation.""" 42 | piped_input = sys.stdin.read() 43 | input_files = piped_input.split("\n") 44 | for filepath in collect_integration_files(input_files): 45 | print(f"Validating {filepath.as_posix().split('/')[-1]}") 46 | with open(filepath) as integration_file: 47 | INTEGRATION(json.loads(integration_file.read())) 48 | 49 | 50 | def collect_integration_files(input_files: List[str]) -> Set[Path]: 51 | """Collect integration files from changed files in the pull request.""" 52 | integration_dir = Path("/validate", "components") 53 | integration_files = set(integration_dir.glob("**/*.json")) 54 | changed_integration_files = set( 55 | [ 56 | integration_dir / fil.split("/")[-1] 57 | for fil in input_files 58 | if "components" in fil 59 | ] 60 | ).intersection(integration_files) 61 | return changed_integration_files 62 | 63 | 64 | validate() 65 | -------------------------------------------------------------------------------- /.github/workflows/wheels.yml: -------------------------------------------------------------------------------- 1 | name: Build wheels 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | paths: 8 | - "components/*" 9 | schedule: 10 | - cron: "0 0 * * *" 11 | 12 | jobs: 13 | init: 14 | runs-on: ubuntu-latest 15 | name: Init 16 | outputs: 17 | apk: ${{ steps.apk.outputs.packages }} 18 | steps: 19 | - name: Check out code from GitHub 20 | uses: actions/checkout@v2.4.0 21 | 22 | - name: Generate requirements.txt 23 | run: | 24 | for component in components/*; do 25 | manifest=$(jq --raw-output ".manifest" "${component}") 26 | 27 | echo "Process: ${component} -> ${manifest}" 28 | curl -sSL -f "${manifest}" | jq --raw-output '.requirements | join("\n")' >> ./requirements_raw.txt 29 | done 30 | 31 | sort -u ./requirements_raw.txt > ./requirements.txt 32 | 33 | echo "List:" 34 | cat ./requirements.txt 35 | 36 | - name: Get constraints 37 | run: wget -O constraints.txt https://raw.githubusercontent.com/home-assistant/core/dev/homeassistant/package_constraints.txt 38 | 39 | - name: Upload requirements.txt 40 | uses: actions/upload-artifact@v2 41 | with: 42 | name: requirements 43 | path: ./requirements.txt 44 | 45 | - name: Upload constraints.txt 46 | uses: actions/upload-artifact@v2 47 | with: 48 | name: constraints 49 | path: ./constraints.txt 50 | 51 | - name: Setup tempio 52 | uses: home-assistant/tempio@main 53 | 54 | - name: Generate APK list 55 | id: apk 56 | run: | 57 | tempio -conf requirements.json -template templates/builder.template -out apk.list 58 | packages=$(cat apk.list) 59 | echo "::set-output name=packages::${packages}" 60 | 61 | wheels: 62 | runs-on: ubuntu-latest 63 | needs: init 64 | name: Prepare wheels for ${{ matrix.tag }} with ${{ matrix.arch }} 65 | strategy: 66 | fail-fast: false 67 | matrix: 68 | arch: ["aarch64", "armhf", "armv7", "amd64", "i386"] 69 | tag: 70 | - "3.9-alpine3.13" 71 | - "3.9-alpine3.14" 72 | group: ["a", "b", "c", "d"] 73 | 74 | steps: 75 | - name: Check out code from GitHub 76 | uses: actions/checkout@v2.4.0 77 | 78 | - name: Download requirements.txt 79 | uses: actions/download-artifact@v2 80 | with: 81 | name: requirements 82 | 83 | - name: Download constraints.txt 84 | uses: actions/download-artifact@v2 85 | with: 86 | name: constraints 87 | 88 | - name: Limit requirements 89 | run: split -n l/4 requirements.txt -a 1 requirements. 90 | 91 | - name: Write env-file 92 | shell: bash 93 | run: | 94 | ( 95 | echo "GRPC_BUILD_WITH_BORING_SSL_ASM=false" 96 | echo "GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true" 97 | echo "GRPC_PYTHON_BUILD_WITH_CYTHON=true" 98 | echo "GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=true" 99 | ) > .env_file 100 | 101 | - name: Build wheels 102 | uses: home-assistant/wheels@2021.05.3 103 | with: 104 | tag: ${{ matrix.tag }} 105 | arch: ${{ matrix.arch }} 106 | wheels-key: ${{ secrets.WHEELS_KEY }} 107 | apk: ${{ needs.init.outputs.apk }} 108 | pip: "Cython;numpy" 109 | env-file: true 110 | skip-binary: aiohttp 111 | single: True 112 | constraints: "constraints.txt" 113 | requirements: "requirements.${{ matrix.group }}" 114 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | lint: 13 | runs-on: ubuntu-latest 14 | name: Lint 15 | outputs: 16 | requirements: ${{ steps.requirements.outputs.exist }} 17 | apk: ${{ steps.apk.outputs.packages }} 18 | steps: 19 | - name: Check out code from GitHub 20 | uses: actions/checkout@v2.4.0 21 | 22 | - name: Lint with JQ 23 | uses: home-assistant/actions/helpers/jq@master 24 | 25 | - name: Get changed files 26 | id: changed_files 27 | uses: jitterbit/get-changed-files@v1 28 | 29 | - name: Check integration files 30 | id: integrations 31 | run: | 32 | for component in components/*; do 33 | if [[ "${{ steps.changed_files.outputs.all }}" =~ $component ]]; then 34 | if [ "${component##*.}" != "json" ];then 35 | echo "::error::${component} does not end with '.json'" 36 | exit 1 37 | fi 38 | manifestlink=$(jq --raw-output ".manifest" "${component}") 39 | 40 | echo "Process: ${component} -> ${manifestlink}" 41 | manifest=$(curl -sSL -f "${manifestlink}" | jq -e --raw-output .) 42 | if [[ "$?" != 0 ]]; then 43 | echo "Unable to read the manifest file at ${manifestlink}" 44 | echo "The URL might be wrong or is not a raw URL." 45 | exit 1 46 | fi 47 | 48 | echo "${manifest}" | jq -e --raw-output '.requirements[0]' 49 | if [[ "$?" != 0 ]]; then 50 | echo "The integration in $component, does not seem to have any Python requirements." 51 | echo "Adding it to this repository has no use, since there are nothing to build for it." 52 | exit 1 53 | fi 54 | 55 | echo "${manifest}" | jq -e --raw-output '.requirements[]' >> requirements_raw.txt 56 | fi 57 | done 58 | 59 | - name: Check if requirements.txt has content 60 | id: requirements 61 | run: | 62 | if [[ -f ./requirements_raw.txt ]]; then 63 | sort -u ./requirements_raw.txt > ./requirements.txt 64 | cat ./requirements.txt 65 | echo "::set-output name=exist::true" 66 | fi 67 | 68 | - name: Get constraints 69 | if: steps.requirements.outputs.exist == 'true' 70 | run: wget -O constraints.txt https://raw.githubusercontent.com/home-assistant/core/dev/homeassistant/package_constraints.txt 71 | 72 | - name: Upload requirements.txt 73 | if: steps.requirements.outputs.exist == 'true' 74 | uses: actions/upload-artifact@v2 75 | with: 76 | name: requirements 77 | path: ./requirements.txt 78 | 79 | - name: Upload constraints.txt 80 | if: steps.requirements.outputs.exist == 'true' 81 | uses: actions/upload-artifact@v2 82 | with: 83 | name: constraints 84 | path: ./constraints.txt 85 | 86 | - name: Setup tempio 87 | uses: home-assistant/tempio@main 88 | 89 | - name: Generate APK list 90 | id: apk 91 | run: | 92 | tempio -conf requirements.json -template templates/builder.template -out apk.list 93 | packages=$(cat apk.list) 94 | echo "::set-output name=packages::${packages}" 95 | 96 | integration: 97 | needs: lint 98 | runs-on: ubuntu-latest 99 | name: Validate integration 100 | steps: 101 | - name: Check out code from GitHub 102 | uses: actions/checkout@v2.4.0 103 | 104 | - uses: lots0logs/gh-action-get-changed-files@2.1.4 105 | with: 106 | token: ${{ secrets.GITHUB_TOKEN }} 107 | 108 | - name: Build the container 109 | run: | 110 | cp ${HOME}/files.json validate_integrations/files.json 111 | docker build -t validate -f validate_integrations/Dockerfile . 112 | 113 | - name: Validate integrations 114 | run: docker run --rm validate 115 | 116 | requirements: 117 | needs: integration 118 | runs-on: ubuntu-latest 119 | name: Validate Python requirements 120 | steps: 121 | - name: Check out code from GitHub 122 | uses: actions/checkout@v2.4.0 123 | 124 | - uses: lots0logs/gh-action-get-changed-files@2.1.4 125 | with: 126 | token: ${{ secrets.GITHUB_TOKEN }} 127 | 128 | - name: Build the container 129 | run: | 130 | cp ${HOME}/files.json validate_requirements/files.json 131 | docker build -t validate -f validate_requirements/Dockerfile . 132 | 133 | - name: Validate requirements 134 | run: docker run --rm -e CRYPTOGRAPHY_DONT_BUILD_RUST=1 validate 135 | 136 | wheels: 137 | needs: [lint, requirements] 138 | if: needs.lint.outputs.requirements == 'true' 139 | runs-on: ubuntu-latest 140 | name: Verify that we can build wheels 141 | strategy: 142 | matrix: 143 | arch: ["aarch64", "armhf", "armv7", "amd64", "i386"] 144 | alpine: ["3.12"] 145 | python: ["3.8"] 146 | 147 | steps: 148 | - name: Check out code from GitHub 149 | uses: actions/checkout@v2.4.0 150 | 151 | - name: Download requirements.txt 152 | uses: actions/download-artifact@v2 153 | with: 154 | name: requirements 155 | 156 | - name: Download constraints.txt 157 | uses: actions/download-artifact@v2 158 | with: 159 | name: constraints 160 | 161 | - name: Build wheels 162 | uses: home-assistant/wheels@master 163 | with: 164 | tag: ${{ matrix.python }}-alpine${{ matrix.alpine }} 165 | arch: ${{ matrix.arch }} 166 | wheels-host: ${{ secrets.WHEELS_HOST }} 167 | apk: ${{ needs.lint.outputs.apk }} 168 | pip: "Cython;numpy" 169 | skip-binary: aiohttp 170 | test: True 171 | single: True 172 | constraints: "constraints.txt" 173 | requirements: "requirements.txt" -------------------------------------------------------------------------------- /validate_requirements/validate_requirements.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """Validate custom wheels package requirements.""" 3 | import json 4 | import os 5 | from pathlib import Path 6 | import re 7 | from select import select 8 | import subprocess 9 | import sys 10 | from typing import Any, Dict, List, Optional, Set 11 | from urllib import request 12 | from urllib.error import URLError 13 | 14 | from stdlib_list import stdlib_list 15 | 16 | DEFAULT_PYTHON = os.environ.get("DEFAULT_PYTHON", "") 17 | PACKAGE_REGEX = re.compile(r"^(?:--.+\s)?([-_\.\w\d]+).*(?:==|>=|<=|~=|!=|<|>|===)?.*$") 18 | PIP_REGEX = re.compile(r"^(--.+\s)?([-_\.\w\d]+.*(?:==|>=|<=|~=|!=|<|>|===)?.*$)") 19 | SUPPORTED_PYTHON_VERSIONS = [str(DEFAULT_PYTHON) or "3.8"] 20 | STD_LIBS = {version: set(stdlib_list(version)) for version in SUPPORTED_PYTHON_VERSIONS} 21 | 22 | 23 | def main() -> int: 24 | """Run main function.""" 25 | return 0 if validate() else 1 26 | 27 | 28 | def validate() -> bool: 29 | """Do the validation.""" 30 | timeout = 1 31 | read, _, _ = select([sys.stdin], [], [], timeout) 32 | if not read: 33 | print("Nothing was piped to stdin") 34 | return False 35 | 36 | print("Validating requirements") 37 | print() 38 | piped_input = sys.stdin.read() 39 | input_files = piped_input.split("\n") 40 | input_component_files = collect_component_files(input_files) 41 | validated_ok = True 42 | print("Integrations to validate:", len(input_component_files)) 43 | 44 | for fil in sorted(input_component_files): 45 | manifest = get_manifest(fil) 46 | if not manifest: 47 | validated_ok = False 48 | continue 49 | print() 50 | print(f"Validating {manifest['domain']}:") 51 | requirements = set(manifest["requirements"]) 52 | requirements_ok = validate_requirements(requirements) 53 | if requirements_ok: 54 | print("OK!") 55 | validated_ok = validated_ok and requirements_ok 56 | 57 | return validated_ok 58 | 59 | 60 | def collect_component_files(input_files: List[str]) -> Set[Path]: 61 | """Collect component files from changed files in the pull request.""" 62 | component_dir = Path("/validate", "components") 63 | component_files = set(component_dir.glob("**/*.json")) 64 | changed_component_files = set([component_dir / fil.split("/")[-1] for fil in input_files if "components" in fil]).intersection( 65 | component_files 66 | ) 67 | return changed_component_files 68 | 69 | 70 | def get_manifest(component_file: Path) -> Optional[Dict[str, Any]]: 71 | """Return the integration manifest.""" 72 | component_data = json.loads(component_file.read_text()) 73 | manifest_address = component_data["manifest"] 74 | try: 75 | with request.urlopen(manifest_address, timeout=10) as url: 76 | manifest = json.loads(url.read().decode()) 77 | except URLError as exc: 78 | print(f"Failed to fetch manifest from {manifest_address}: {exc}") 79 | return None 80 | 81 | return manifest 82 | 83 | 84 | def validate_requirements(requirements: Set[str]) -> bool: 85 | """Validate requirements.""" 86 | install_ok = install_requirements(requirements) 87 | 88 | if not install_ok: 89 | return False 90 | 91 | all_integration_requirements = get_requirements(requirements) 92 | 93 | if requirements and not all_integration_requirements: 94 | print(f"Failed to resolve requirements {requirements}") 95 | return False 96 | 97 | validated_ok = True 98 | 99 | # Check for requirements incompatible with standard library. 100 | for version, std_libs in STD_LIBS.items(): 101 | for req in all_integration_requirements: 102 | if req in std_libs: 103 | print( 104 | f"Package {req} is not compatible " 105 | f"with Python {version} standard library", 106 | ) 107 | validated_ok = False 108 | 109 | return validated_ok 110 | 111 | 112 | def get_requirements(requirements: Set[str]) -> Set[str]: 113 | """Return all (recursively) requirements for an integration.""" 114 | all_requirements = set() 115 | 116 | for req in requirements: 117 | match = PACKAGE_REGEX.search(req) 118 | if not match: 119 | print(f"Failed to parse requirement {req}") 120 | return set() 121 | 122 | # pipdeptree needs lowercase and dash instead of underscore as separator 123 | package = match.group(1).lower().replace("_", "-") 124 | try: 125 | result = subprocess.run( 126 | ["pipdeptree", "-w", "silence", "--packages", package], 127 | check=True, 128 | capture_output=True, 129 | text=True, 130 | ) 131 | except subprocess.SubprocessError: 132 | print(f"Failed to resolve requirements for {req}") 133 | return set() 134 | 135 | # parse output to get a set of package names 136 | output = result.stdout 137 | lines = output.split("\n") 138 | parent = lines[0].split("==")[0] # the first line is the parent package 139 | if parent: 140 | all_requirements.add(parent) 141 | 142 | for line in lines[1:]: # skip the first line which we already processed 143 | line = line.strip() 144 | line = line.lstrip("- ") 145 | package = line.split("[")[0] 146 | package = package.strip() 147 | if not package: 148 | continue 149 | all_requirements.add(package) 150 | 151 | return all_requirements 152 | 153 | 154 | def install_requirements(requirements: Set[str]) -> bool: 155 | """Install integration requirements. 156 | 157 | Return True if successful. 158 | """ 159 | install_ok = True 160 | 161 | for req in requirements: 162 | match = PIP_REGEX.search(req) 163 | 164 | if not match: 165 | print(f"Failed to parse requirement {req} before installation") 166 | install_ok = False 167 | continue 168 | 169 | install_args = match.group(1) 170 | requirement_arg = match.group(2) 171 | 172 | args = [sys.executable, "-m", "pip", "--disable-pip-version-check", "install", "--quiet", "--no-warn-script-location", "--index", "https://wheels.home-assistant.io/alpine-3.12/amd64", "--extra-index-url", "https://pypi.python.org/simple"] 173 | if install_args: 174 | args.append(install_args) 175 | args.append(requirement_arg) 176 | 177 | try: 178 | subprocess.run(args, check=True) 179 | except subprocess.SubprocessError: 180 | print(f"Requirement {req} failed to install") 181 | install_ok = False 182 | 183 | return install_ok 184 | 185 | 186 | if __name__ == "__main__": 187 | sys.exit(main()) 188 | --------------------------------------------------------------------------------