With the great migration coming to an end, it's time to track the final tasks and make sure they are done before 0.91.
component: hue to integration: hueplatform: light.hue -> integration: hue. (let's not do all PRs or we hit all the rate limits)integration: hue labels (this function)The documentation update is a separate discussion which should probably be done in that repo. Migrating the docs for an integration from many platform pages into the component page is under way. But it doesn't scale for large integrations that need details for their platforms. See eg https://github.com/home-assistant/home-assistant.io/pull/8593.
It won't be necessary to merge all the docs, as long as we just treat the component as an entrypoint to the docs for that integration. The page itself will actually show its platforms.
don't laugh at my janky modern js skills
script to update component labels:
const Octokit = require('@octokit/rest')
const octokit = new Octokit({
auth: 'token TOKEN_HERE'
});
const options = octokit.issues.listLabelsForRepo.endpoint.merge({
owner: 'home-assistant',
repo: 'home-assistant',
per_page: 100,
})
octokit.paginate(options)
.then(data => {
data.forEach(existing_label => {
if(existing_label.name.indexOf('component: ') !== -1) {
console.log('rename', existing_label.name, 'to', existing_label.name.replace('component: ', 'integration: '));
octokit.issues.updateLabel({
owner: 'home-assistant',
repo: 'home-assistant',
current_name: existing_label.name,
name: existing_label.name.replace('component: ', 'integration: '),
}).then(updated_label => {
console.log('Updated', existing_label.name, 'to', updated_label.name);
})
}
});
});
script to update platform labels:
const Octokit = require('@octokit/rest')
const octokit = new Octokit({
auth: 'token TOKEN_HERE'
});
const options = octokit.pulls.list.endpoint.merge({
owner: 'home-assistant',
repo: 'home-assistant',
state: 'open',
per_page: 100,
})
octokit.paginate(options).then(data => {
data.forEach(pull_request => {
var needsLabelUpdate = false;
var newLabels = [];
pull_request.labels.forEach(label => {
if(label.name.indexOf('platform: ') !== -1) {
needsLabelUpdate = true;
var splitName = label.name.split('.');
label.name = 'integration: '+splitName[1];
}
newLabels.push(label.name);
});
if(needsLabelUpdate) {
console.log('newLabels', pull_request.number, newLabels);
octokit.issues.update({
owner: 'home-assistant',
repo: 'home-assistant',
number: pull_request.number,
labels: newLabels,
}).then(({data, headers, status}) => {
console.log('Updated labels for PR', data.number);
})
}
});
});
Here's one related helpful script to get a detailed breakdown of label usage in a repo. It output these stats.
const graphql = require('@octokit/graphql').defaults({
headers: {
authorization: `token TOKEN_HERE`
}
})
async function getCounts(owner, repoName, labelMap, cursor){
if(!labelMap) labelMap = {};
const labelsWithCursor = await graphql(`query labelsWithCursor($owner: String!, $repoName: String! $after: String = null) {
repository(owner:$owner, name:$repoName) {
labels(first: 100, after:$after) {
edges {
cursor
node {
name
openIssues: issues(states: [OPEN]) {
totalCount
}
closedIssues: issues(states: [CLOSED]) {
totalCount
}
openPRs: pullRequests(states: [OPEN]) {
totalCount
}
mergedPRs: pullRequests(states: [MERGED]) {
totalCount
}
closedPRs: pullRequests(states: [CLOSED]) {
totalCount
}
}
}
}
}
}`, {
owner: owner,
repoName: repoName,
after: cursor
});
labelsWithCursor.repository.labels.edges.forEach(edge => {
if(!labelMap[edge.node.name]) {
labelMap[edge.node.name] = {
'Open Issues': edge.node.openIssues.totalCount,
'Closed Issues': edge.node.closedIssues.totalCount,
'Open Pull Requests': edge.node.openPRs.totalCount,
'Merged Pull Requests': edge.node.mergedPRs.totalCount,
'Closed Pull Requests': edge.node.closedPRs.totalCount
};
}
labelMap[edge.node.name]['Open Issues'] = labelMap[edge.node.name]['Open Issues'] + edge.node.openIssues.totalCount;
labelMap[edge.node.name]['Closed Issues'] = labelMap[edge.node.name]['Closed Issues'] + edge.node.closedIssues.totalCount;
labelMap[edge.node.name]['Open Pull Requests'] = labelMap[edge.node.name]['Open Pull Requests'] + edge.node.openPRs.totalCount;
labelMap[edge.node.name]['Merged Pull Requests'] = labelMap[edge.node.name]['Merged Pull Requests'] + edge.node.mergedPRs.totalCount;
labelMap[edge.node.name]['Closed Pull Requests'] = labelMap[edge.node.name]['Closed Pull Requests'] + edge.node.closedPRs.totalCount;
});
var lastElm = labelsWithCursor.repository.labels.edges.pop();
if(!lastElm) {
return labelMap;
}
return await getCounts(owner, repoName, labelMap, lastElm.cursor);
};
const start = async function(){
const labelMap = await getCounts("home-assistant", "home-assistant");
console.log(JSON.stringify(labelMap));
}
start();
List of broken labels that need fixing:
Choose one to keep:
Ready for review or ready-for-reviewHopefully final list of labels after migration is completed, please point out any that should be cleaned up (or even better, do it yourself):
almost-doneasyncauthauto-closedbreaking changebugby-core-devcherry-pickedcla-errorcla-neededcla-recheckcla-signedcomponentcomponent: seasoncomponent: totalconnectconfig errorcorecustom componentdockerdocs-missingdocumentationduplicateeasy-fixenhancementFor PaulusfrontendHacktoberfesthas parent issuehttpin progressintegration: abodeintegration: actionintegration: adsintegration: aemetintegration: aftershipintegration: air_pollutantsintegration: air_qualityintegration: airvisualintegration: aladdin_connectintegration: alarm_control_panelintegration: alarmdecoderintegration: alarmdotcomintegration: alertintegration: alexaintegration: alfawiseintegration: alpha_vantageintegration: amazon_pollyintegration: ambiclimateintegration: ambientintegration: ambient_stationintegration: amcrestintegration: android_batteryintegration: android_ip_webcamintegration: androidtvintegration: anel_pwrctrlintegration: anthemavintegration: apcupsdintegration: apiintegration: api_streamsintegration: apiaiintegration: apnsintegration: apple_tvintegration: aqualogicintegration: aquostvintegration: arduinointegration: arestintegration: arlointegration: arubaintegration: arwnintegration: asterisk_amiintegration: asterisk_cdrintegration: asterisk_mboxintegration: asuswrtintegration: attributesintegration: augustintegration: auroraintegration: authintegration: auth_apiintegration: automaticintegration: automationintegration: avionintegration: awairintegration: aws_lambdaintegration: aws_snsintegration: aws_sqsintegration: axisintegration: azure_cloudintegration: azure_maps_travel_timeintegration: azure_vmintegration: azurednsintegration: baiduintegration: banintegration: bayesianintegration: benq_projectorintegration: bh1750integration: binary_sensorintegration: bitcoinintegration: blackbirdintegration: blinkintegration: blinksticklightintegration: blinktintegration: blnetintegration: blockchainintegration: bloomskyintegration: bluesoundintegration: bluetooth_le_trackerintegration: bluetooth_trackerintegration: bme280integration: bme680integration: bmw_connected_driveintegration: bomintegration: bomradarloopintegration: braviatvintegration: braviatv_pskintegration: broadcastintegration: broadlinkintegration: broadlinkRM3integration: brottsplatskartanintegration: bruntintegration: bt_home_hub_5integration: buienradarintegration: bunqintegration: c_by_geintegration: c_Eltaintegration: caldavintegration: calendarintegration: cambridgeaudiointegration: cameraintegration: canaryintegration: casatunesintegration: castintegration: cert_expiryintegration: channelsintegration: cisco_mobility_expressintegration: cisco_webex_teamsintegration: ciscosparkintegration: citybikesintegration: clarifai_generalintegration: classificationboxintegration: clementineintegration: clickatellintegration: clicksendintegration: clicksend_ttsintegration: clicksendaudiointegration: clicksendttsintegration: climateintegration: climate_schedulerintegration: cloudintegration: cloud_apiintegration: cloudflareintegration: cmusintegration: co2miniintegration: co2signalintegration: coinbaseintegration: coinmarketcapintegration: comed_hourly_pricingintegration: comfoconnectintegration: command_lineintegration: concord232integration: configintegration: config_entry_exampleintegration: configuratorintegration: constintegration: conversationintegration: coolmasterintegration: coreintegration: counterintegration: coverintegration: cpuspeedintegration: crimereportsintegration: csvintegration: cupsintegration: currencylayerintegration: custom_cardintegration: customizeintegration: dahuaintegration: daikinintegration: danfoss_airintegration: darkskyintegration: date_countdownintegration: date_reminderintegration: ddwrtintegration: deconzintegration: decoraintegration: decora_wifiintegration: default_configintegration: delegate_media_playerintegration: delugeintegration: demointegration: demo.txtintegration: demo_0.jpgintegration: demo_1.jpgintegration: demo_2.jpgintegration: demo_3.jpgintegration: demo_off.jpgintegration: denonintegration: denonavrintegration: depictintegration: deutsche_bahnintegration: device_sun_light_triggerintegration: device_trackerintegration: dewpointintegration: dhtintegration: dialogflowintegration: digital_oceanintegration: digitalloggersintegration: directvintegration: discogsintegration: discordintegration: discoveryintegration: dispatcherintegration: dlib_face_detectintegration: dlib_face_identifyintegration: dlinkintegration: dlna_dmrintegration: dnsipintegration: domain_expiryintegration: dominionenergyintegration: dominosintegration: doorbirdintegration: dovadointegration: downloaderintegration: dsmrintegration: dte_energy_bridgeintegration: dublin_bus_transportintegration: duckdnsintegration: duke_energyintegration: dunehdintegration: dwd_warnappintegration: dweetintegration: dysonintegration: eboxintegration: ebusdintegration: ecoal_boilerintegration: ecobeeintegration: econetintegration: ecoplugintegration: ecovacsintegration: eddystone_temperatureintegration: edimaxintegration: edp_redyintegration: efergyintegration: egardiaintegration: eight_sleepintegration: elanintegration: eliqonlineintegration: elkm1integration: embyintegration: emoncmsintegration: emulated_hueintegration: emulated_rokuintegration: enertalkintegration: enigmaintegration: enigma2integration: enoceanintegration: enphase_envoyintegration: entur_public_transportintegration: environment_canadaintegration: envirophatintegration: envisalinkintegration: ephemberintegration: epsonintegration: eq3btsmartintegration: esphomeintegration: esphomelibintegration: etherrainintegration: etherscanintegration: eufyintegration: eventintegration: everlightsintegration: evohomeintegration: facebookintegration: faceboxintegration: facebox_face_detectintegration: fail2banintegration: familyhubintegration: fanintegration: fastdotcomintegration: fedexintegration: feedreaderintegration: ffmpegintegration: ffmpeg_motionintegration: ffmpeg_noiseintegration: fhzintegration: fibarointegration: fidointegration: fileintegration: filesizeintegration: filterintegration: fintsintegration: firetvintegration: fitbitintegration: fixerintegration: flash_briefingsintegration: flexitintegration: flicintegration: flunearyouintegration: fluxintegration: flux_ledintegration: folderintegration: folder_watcherintegration: foobotintegration: fortinet_fortiosintegration: foscamintegration: fplintegration: free_mobileintegration: freeboxintegration: freednsintegration: fritzintegration: fritzboxintegration: fritzbox_callforwardingintegration: fritzbox_callmonitorintegration: fritzbox_netmonitorintegration: fritzbox_wifiintegration: fritzdectintegration: froniusintegration: frontendintegration: frontier_siliconintegration: fs20integration: futurenowintegration: fuzzyintegration: garadgetintegration: gc100integration: gearbestintegration: geizhalsintegration: genericintegration: generic_hygrostatintegration: generic_thermostatintegration: geniushubintegration: geo_locationintegration: geo_rss_eventsintegration: geofencyintegration: githubintegration: gitlab_ciintegration: gitterintegration: glancesintegration: gntpintegration: goalfeedintegration: gocrintegration: gogogate2integration: googleintegration: google_assistantintegration: google_domainsintegration: google_home_alarmintegration: google_mapsintegration: google_pubsubintegration: google_reverse_geocodeintegration: google_travel_timeintegration: google_wifiintegration: googleactionsintegration: googlehomeintegration: gpmdpintegration: gpsdintegration: gpsloggerintegration: greeneye_monitorintegration: greeneye_monitor_currentintegration: greeneye_monitor_pulseintegration: greeneye_monitor_temperatureintegration: greenwaveintegration: groupintegration: group_stateintegration: grouped_lightintegration: growattintegration: gstreamerintegration: gtfsintegration: gttintegration: habiticaintegration: hadockermonintegration: handlerintegration: hangoutsintegration: harman_kardon_avrintegration: harmonyintegration: hassbianintegration: hassiointegration: haveibeenpwnedintegration: hddtempintegration: hdmi_cecintegration: heatmiserintegration: hegelintegration: heosintegration: hikvisionintegration: hikvisioncamintegration: hipchatintegration: historyintegration: history_averageintegration: history_statsintegration: history_valuesintegration: hitron_codaintegration: hiveintegration: hiwifiintegration: hlk_sw16integration: homeassistantintegration: homekitintegration: homekit_controllerintegration: homematicintegration: homematicipintegration: homematicip_cloudintegration: homeworksintegration: honeywellintegration: hookintegration: horizonintegration: hp_ilointegration: html5integration: httpintegration: http_apiintegration: http_rgbintegration: httplightintegration: htu21dintegration: huawei_hilinkintegration: huawei_lteintegration: huawei_routerintegration: hueintegration: hue_apiintegration: hue_sensorsintegration: hunterdouglas_powerviewintegration: hydrawiseintegration: hydroquebecintegration: hyperionintegration: ialarmintegration: iaqstickintegration: icloudintegration: idteck_proxintegration: iftttintegration: igdintegration: iglointegration: ihcintegration: ihcdeviceintegration: iliad_italyintegration: image_processingintegration: imapintegration: imap_email_contentintegration: influxdbintegration: input_booleanintegration: input_boxintegration: input_datetimeintegration: input_numberintegration: input_selectintegration: input_sliderintegration: input_textintegration: instapushintegration: insteonintegration: insteon_hubintegration: insteon_localintegration: insteon_plmintegration: integrationintegration: intentintegration: intent_scriptintegration: intervalintegration: intesishomeintegration: introductionintegration: iosintegration: iotintegration: iotaintegration: iperf3integration: ipmaintegration: ircintegration: irish_rail_transportintegration: islamic_prayer_timesintegration: issintegration: isy994integration: itachintegration: itunesintegration: jewish_calendarintegration: jewish_shabbathintegration: joaoapps_joinintegration: json_attributesintegration: juhe_stockintegration: juicenetintegration: keenetic_ndms2integration: kefintegration: keyboardintegration: keyboard_remoteintegration: kiraintegration: kiwiintegration: knxintegration: kodiintegration: konnectedintegration: koogeekintegration: kwbintegration: lacrosseintegration: lametricintegration: lastfmintegration: launchintegration: launch_libraryintegration: lcnintegration: legrandinoneintegration: lg_netcastintegration: lg_soundbarintegration: life360integration: lifesosintegration: lifxintegration: lifx_cloudintegration: lifx_legacyintegration: lightintegration: light_defaultsintegration: lightwaveintegration: limitlessledintegration: linksys_apintegration: linksys_smartintegration: linkyintegration: linodeintegration: linux_batteryintegration: litejetintegration: liveboxplaytvintegration: llapintegration: lmsensorintegration: localintegration: local_fileintegration: locativeintegration: lockintegration: lockitronintegration: logbookintegration: loggerintegration: logi_circleintegration: london_airintegration: london_undergroundintegration: loopenergyintegration: lovelaceintegration: loxoneintegration: luciintegration: luciwifiintegration: luftdatenintegration: lupusecintegration: lutronintegration: lutron_casetaintegration: lutron_qseintegration: lw12wifiintegration: lyftintegration: lyricintegration: magicseaweedintegration: mailboxintegration: mailgunintegration: manualintegration: manual_mqttintegration: mapintegration: maryttsintegration: matrixintegration: maxcubeintegration: maxculintegration: media_extractorintegration: media_helperintegration: media_playerintegration: mediaroomintegration: melcloudintegration: melissaintegration: merakiintegration: mercedesmeintegration: metintegration: meteo_franceintegration: meteoswissintegration: metlinkintegration: metofficeintegration: mfiintegration: mhz19integration: microsoftintegration: microsoft_faceintegration: microsoft_face_detectintegration: microsoft_face_identifyintegration: mifloraintegration: migardenerintegration: migrationintegration: mijnafvalwijzerintegration: mikrotikintegration: millintegration: min_maxintegration: mint_financeintegration: mipowintegration: missile_launcherintegration: mitemp_btintegration: mitsubishicontrollerintegration: mjpegintegration: mobile_appintegration: mochadintegration: modbusintegration: modelsintegration: modem_calleridintegration: mold_indicatorintegration: molohubintegration: monopriceintegration: monzointegration: moonintegration: moparintegration: motioneyeintegration: mpchcintegration: mpdintegration: mqttintegration: mqtt_eventstreamintegration: mqtt_jsonintegration: mqtt_roomintegration: mqtt_statestreamintegration: mqtt_templateintegration: multicoverintegration: mvgliveintegration: mychevyintegration: mycroftintegration: myicomfortintegration: myqintegration: mysensorsintegration: mystromintegration: mythicbeastsdnsintegration: n26integration: nadintegration: nad7050integration: nadtcpintegration: nadtelnetintegration: namecheapdnsintegration: nanoleafintegration: nanoleaf_auroraintegration: neatointegration: nederlandse_spoorwegenintegration: nellointegration: ness_alarmintegration: nestintegration: netatmointegration: netatmo_publicintegration: netdataintegration: netgearintegration: netgear_lteintegration: netiointegration: neurio_energyintegration: nextbusintegration: nfandroidtvintegration: niko_home_controlintegration: nilu_air_qualityintegration: nissan_leafintegration: nmap_trackerintegration: nmbsintegration: no_ipintegration: noaa_tidesintegration: nomail.jpgintegration: nordpoolintegration: norway_airintegration: notifyintegration: nsw_fuel_stationintegration: nuheatintegration: nuimo_controllerintegration: nukiintegration: numeric_floatintegration: numeric_integerintegration: numeric_stateintegration: nutintegration: nx584integration: nzbgetintegration: oasaintegration: oasa_telematicsintegration: octoprintintegration: oemintegration: ohmconnectintegration: onboardingintegration: onewireintegration: onkyointegration: onkyo_serialintegration: onvifintegration: openalprintegration: openalpr_cloudintegration: openalpr_localintegration: opencvintegration: openevseintegration: opengarageintegration: openhardwaremonitorintegration: openhomeintegration: openskyintegration: opentherm_gwintegration: openuvintegration: openweathermapintegration: oppleintegration: orvibointegration: osramlightifyintegration: otpintegration: outlookintegration: owfsintegration: owletintegration: owntracksintegration: owntracks_httpintegration: paloaltointegration: pan_tilt_phatintegration: panasonic_blurayintegration: panasonic_vieraintegration: pandoraintegration: panel_customintegration: panel_iframeintegration: pcaintegration: pencomintegration: persistent_notificationintegration: personintegration: phicommintegration: philips_jsintegration: philips_js_v5integration: philipslightintegration: phonetrack_ocintegration: pi_holeintegration: picottsintegration: piglowintegration: pilightintegration: pingintegration: pioneerintegration: pjlinkintegration: pjmintegration: planifneigeintegration: plantintegration: plexintegration: plum_lightpadintegration: pocketcastsintegration: pointintegration: pollenintegration: pollingintegration: postnlintegration: prezzibenzinaintegration: prometheusintegration: prowlintegration: proximityintegration: proxmoxintegration: proxyintegration: ps4integration: pulseaudio_loopbackintegration: purgeintegration: pushintegration: pushbulletintegration: pushoverintegration: pushsaferintegration: pvoutputintegration: pwmintegration: pyintegration: pyloadintegration: python_scriptintegration: qbittorrentintegration: qnapintegration: qqintegration: qrcodeintegration: qwikswitchintegration: rachiointegration: radarrintegration: radiothermintegration: rainbirdintegration: raincloudintegration: rainmachineintegration: randomintegration: rangeintegration: raspihatsintegration: raspyrfmintegration: raven_emuintegration: recollect_wasteintegration: recorderintegration: recswitchintegration: redditintegration: rejseplanenintegration: remember_the_milkintegration: remoteintegration: remote_homeassistantintegration: remote_rpi_gpiointegration: repetierintegration: restintegration: rest_commandintegration: rflinkintegration: rfxtrxintegration: ringintegration: rippleintegration: RMmini3integration: rmvtransportintegration: rocketchatintegration: rokuintegration: roombaintegration: route53integration: rovaintegration: rpi_cameraintegration: rpi_gpiointegration: rpi_gpio_pwmintegration: rpi_gpiozerointegration: rpi_i2c_chipsintegration: rpi_i2c_expandersintegration: rpi_i2c_ha_expandersintegration: rpi_pfiointegration: rpi_rfintegration: rpi_servointegration: rpi_spi_mcpintegration: rpicamintegration: rss_feed_templateintegration: rtorrentintegration: russound_riointegration: russound_rnetintegration: ruterintegration: ryobi_gdointegration: ryobiGDOintegration: sabnzbdintegration: samsungtvintegration: satel_integraintegration: sceneintegration: scheduleintegration: schedulerintegration: scrapeintegration: scriptintegration: scsgateintegration: seasonintegration: sendgridintegration: senseintegration: sensehatintegration: sensibointegration: sensirion_sht31_smart_gadgetintegration: sensorintegration: serialintegration: serial_pmintegration: serverintegration: sesameintegration: seven_segmentsintegration: seventeentrackintegration: shell_commandintegration: shell_playerintegration: shellyintegration: shiftrintegration: shodanintegration: shopping_listintegration: sht31integration: sigfoxintegration: simplepushintegration: simplisafeintegration: simulatedintegration: sisyphusintegration: sky_hubintegration: skybeaconintegration: skybellintegration: slackintegration: sleepiqintegration: smaintegration: smappeeintegration: smart_homeintegration: smarthabintegration: smartthingsintegration: smartyintegration: smhiintegration: smtpintegration: snapcastintegration: snipsintegration: snmpintegration: sochainintegration: socialbladeintegration: solaredgeintegration: somfyintegration: somfy_mylinkintegration: sonarrintegration: songpalintegration: sonosintegration: sony_projectorintegration: soundtouchintegration: spaceapiintegration: spcintegration: speedtestintegration: speedtestdotnetintegration: spiderintegration: splunkintegration: spotcrimeintegration: spotifyintegration: sqlintegration: squeezeboxintegration: srp_energyintegration: starlingbankintegration: startcaintegration: stateintegration: state_scheduleintegration: staticintegration: statisticsintegration: statsdintegration: steady_lightintegration: steady_switchintegration: steam_onlineintegration: stiebel_eltronintegration: stravaintegration: streamintegration: streamlabswaterintegration: strings.moon.jsonintegration: suggestionsintegration: sunintegration: supervisordintegration: suplaintegration: surepetcareintegration: swiss_hydrological_dataintegration: swiss_public_transportintegration: switchintegration: switchbotintegration: switcher_kisintegration: switchmateintegration: syncthruintegration: synologyintegration: synology_chatintegration: synology_homemodeintegration: synologydsmintegration: system_healthintegration: system_logintegration: system_monitoringintegration: systemair_savecairintegration: systemmonitorintegration: sytadinintegration: tadointegration: tado_v1integration: tahomaintegration: tank_utilityintegration: tapsaffintegration: tautulliintegration: tcpintegration: tcpbulbsintegration: ted5000integration: teksavvyintegration: telegramintegration: telegram_botintegration: telegram_pollintegration: telegram_webhooksintegration: teleinfointegration: teletaskintegration: telldusliveintegration: tellstickintegration: telnetintegration: temperintegration: templateintegration: templated_automationintegration: tensorflowintegration: teslaintegration: texecomintegration: texecominterfaceintegration: textfileintegration: tfiacintegration: thermoworks_smokeintegration: thethingsnetworkintegration: thethingsnetwork_dataintegration: thingspeakintegration: thinkingcleanerintegration: thresholdintegration: tibberintegration: tileintegration: timeintegration: time_dateintegration: timed_state_inferintegration: timerintegration: tmdbintegration: todintegration: todoistintegration: tofintegration: tomatointegration: toonintegration: torqueintegration: toshibaintegration: totalconnectintegration: touchlineintegration: tplinkintegration: tplink_lteintegration: traccarintegration: trackrintegration: tradfriintegration: trafikverket_weatherstationintegration: transitionintegration: transmissionintegration: transport_nswintegration: travisciintegration: trendintegration: ttsintegration: tube_stateintegration: turn_touchintegration: tuyaintegration: twiliointegration: twilio_callintegration: twilio_smsintegration: twinklyintegration: twitchintegration: twitterintegration: uberintegration: ubusintegration: ue_radiointegration: ue_smart_radiointegration: uk_transportintegration: unifiintegration: unifi_directintegration: universalintegration: upc_connectintegration: upcloudintegration: updaterintegration: upnpintegration: upsintegration: uptimeintegration: uptimerobotintegration: urlwatchintegration: uscisintegration: uspsintegration: utilintegration: utility_meterintegration: uvcintegration: vacuumintegration: vasttrafikintegration: velbusintegration: velointegration: veluxintegration: venstarintegration: veraintegration: verisureintegration: versionintegration: version_controlintegration: vesyncintegration: viaggiatrenointegration: viziointegration: viziosoundbarintegration: vlcintegration: voicerssintegration: volkszaehlerintegration: volumiointegration: volvooncallintegration: vrtnwsintegration: vultrintegration: w800rf32integration: wake_on_lanintegration: wallallcameraintegration: wallallsensorintegration: wallallttsintegration: waqiintegration: warmup4ieintegration: watchdog_file_watcherintegration: water_heaterintegration: waterfurnaceintegration: watson_iotintegration: waze_travel_timeintegration: weatherintegration: webdavintegration: webhookintegration: webhooksintegration: weblinkintegration: webostvintegration: websocket_apiintegration: wemointegration: whoisintegration: winkintegration: wirelesstagintegration: withingsintegration: workalendarintegration: workdayintegration: worldclockintegration: worldtidesinfointegration: worx-landroidintegration: worxlandroidintegration: wsdotintegration: wuluintegration: wundergroundintegration: wunderlistintegration: x10integration: xbox_liveintegration: xboxliveintegration: xcelintegration: xeomaintegration: xiaofangintegration: xiaomiintegration: xiaomi_aqaraintegration: xiaomi_gatewayintegration: xiaomi_irintegration: xiaomi_miiointegration: xiaomi_philipslightintegration: xiaomi_plugintegration: xiaomi_tvintegration: xiaomi_vacuumintegration: xknxintegration: xmppintegration: xs1integration: yahoo_financeintegration: yale_smart_alarmintegration: yamahaintegration: yamaha_musiccastintegration: yandexintegration: yandexttsintegration: yeelightintegration: yeelightsunflowerintegration: yessssmsintegration: yiintegration: youlessintegration: yrintegration: yweatherintegration: zabbixintegration: zamgintegration: zengge-wifiintegration: zeroconfintegration: zestimateintegration: zeversolarintegration: zhaintegration: zhong_hongintegration: zigateintegration: zigbeeintegration: ziggo_mediabox_xlintegration: zoneintegration: zoneminderintegration: ztmintegration: zwaveinvalidmaster/slavemerging-to-masterneed more informationnew-featurenew-platformnginxp1p2platformproblem in dependencyproblem in deviceproblem in platformquestionReady for reviewready-for-reviewregressionremove-platformrequirementrevertedrfcshortlist-to-fixsmall-prtemplatesTesting requiredto doto-dovia-githubvoluptuouswaiting-for-replywaiting-for-upstreamwindowswontfixworkaround availableintegration: constto do merge with to-doImplemented all of @Swamp-Ig's suggestions.
Deletion of platform: labels complete!
Thanks all but mostly me!
Most helpful comment
Thanks all but mostly me!