Core: The Great Migration - Tools update

Created on 20 Mar 2019  路  11Comments  路  Source: home-assistant/core

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.

  • [x] Update LabelBot to no longer attach platform labels https://github.com/home-assistant/LabelBot/pull/6

    • [x] Write a script to update labels in this repo from component: hue to integration: hue

    • [x] Write a script to merge all platform labels in the repo into component labels for open PRs. -> platform: light.hue -> integration: hue. (let's not do all PRs or we hit all the rate limits)

    • [x] Update HASS Release to be able to handle integration: hue labels (this function)

Most helpful comment

Thanks all but mostly me!

All 11 comments

  • [ ] Update the home-assistant.io documentation to put sensors etc either all together, or all in their components (or even both??).

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:

  • integration: demo.txt
  • integration: demo_0.jpg
  • integration: demo_1.jpg
  • integration: demo_2.jpg
  • integration: demo_3.jpg
  • integration: demo_off.jpg
  • integration: nomail.jpg
  • integration: strings.moon.json

Choose one to keep:

  • Ready for review or ready-for-review

Hopefully final list of labels after migration is completed, please point out any that should be cleaned up (or even better, do it yourself):

  • almost-done
  • async
  • auth
  • auto-closed
  • breaking change
  • bug
  • by-core-dev
  • cherry-picked
  • cla-error
  • cla-needed
  • cla-recheck
  • cla-signed
  • component
  • component: season
  • component: totalconnect
  • config error
  • core
  • custom component
  • docker
  • docs-missing
  • documentation
  • duplicate
  • easy-fix
  • enhancement
  • For Paulus
  • frontend
  • Hacktoberfest
  • has parent issue
  • http
  • in progress
  • integration: abode
  • integration: action
  • integration: ads
  • integration: aemet
  • integration: aftership
  • integration: air_pollutants
  • integration: air_quality
  • integration: airvisual
  • integration: aladdin_connect
  • integration: alarm_control_panel
  • integration: alarmdecoder
  • integration: alarmdotcom
  • integration: alert
  • integration: alexa
  • integration: alfawise
  • integration: alpha_vantage
  • integration: amazon_polly
  • integration: ambiclimate
  • integration: ambient
  • integration: ambient_station
  • integration: amcrest
  • integration: android_battery
  • integration: android_ip_webcam
  • integration: androidtv
  • integration: anel_pwrctrl
  • integration: anthemav
  • integration: apcupsd
  • integration: api
  • integration: api_streams
  • integration: apiai
  • integration: apns
  • integration: apple_tv
  • integration: aqualogic
  • integration: aquostv
  • integration: arduino
  • integration: arest
  • integration: arlo
  • integration: aruba
  • integration: arwn
  • integration: asterisk_ami
  • integration: asterisk_cdr
  • integration: asterisk_mbox
  • integration: asuswrt
  • integration: attributes
  • integration: august
  • integration: aurora
  • integration: auth
  • integration: auth_api
  • integration: automatic
  • integration: automation
  • integration: avion
  • integration: awair
  • integration: aws_lambda
  • integration: aws_sns
  • integration: aws_sqs
  • integration: axis
  • integration: azure_cloud
  • integration: azure_maps_travel_time
  • integration: azure_vm
  • integration: azuredns
  • integration: baidu
  • integration: ban
  • integration: bayesian
  • integration: benq_projector
  • integration: bh1750
  • integration: binary_sensor
  • integration: bitcoin
  • integration: blackbird
  • integration: blink
  • integration: blinksticklight
  • integration: blinkt
  • integration: blnet
  • integration: blockchain
  • integration: bloomsky
  • integration: bluesound
  • integration: bluetooth_le_tracker
  • integration: bluetooth_tracker
  • integration: bme280
  • integration: bme680
  • integration: bmw_connected_drive
  • integration: bom
  • integration: bomradarloop
  • integration: braviatv
  • integration: braviatv_psk
  • integration: broadcast
  • integration: broadlink
  • integration: broadlinkRM3
  • integration: brottsplatskartan
  • integration: brunt
  • integration: bt_home_hub_5
  • integration: buienradar
  • integration: bunq
  • integration: c_by_ge
  • integration: c_Elta
  • integration: caldav
  • integration: calendar
  • integration: cambridgeaudio
  • integration: camera
  • integration: canary
  • integration: casatunes
  • integration: cast
  • integration: cert_expiry
  • integration: channels
  • integration: cisco_mobility_express
  • integration: cisco_webex_teams
  • integration: ciscospark
  • integration: citybikes
  • integration: clarifai_general
  • integration: classificationbox
  • integration: clementine
  • integration: clickatell
  • integration: clicksend
  • integration: clicksend_tts
  • integration: clicksendaudio
  • integration: clicksendtts
  • integration: climate
  • integration: climate_scheduler
  • integration: cloud
  • integration: cloud_api
  • integration: cloudflare
  • integration: cmus
  • integration: co2mini
  • integration: co2signal
  • integration: coinbase
  • integration: coinmarketcap
  • integration: comed_hourly_pricing
  • integration: comfoconnect
  • integration: command_line
  • integration: concord232
  • integration: config
  • integration: config_entry_example
  • integration: configurator
  • integration: const
  • integration: conversation
  • integration: coolmaster
  • integration: core
  • integration: counter
  • integration: cover
  • integration: cpuspeed
  • integration: crimereports
  • integration: csv
  • integration: cups
  • integration: currencylayer
  • integration: custom_card
  • integration: customize
  • integration: dahua
  • integration: daikin
  • integration: danfoss_air
  • integration: darksky
  • integration: date_countdown
  • integration: date_reminder
  • integration: ddwrt
  • integration: deconz
  • integration: decora
  • integration: decora_wifi
  • integration: default_config
  • integration: delegate_media_player
  • integration: deluge
  • integration: demo
  • integration: demo.txt
  • integration: demo_0.jpg
  • integration: demo_1.jpg
  • integration: demo_2.jpg
  • integration: demo_3.jpg
  • integration: demo_off.jpg
  • integration: denon
  • integration: denonavr
  • integration: depict
  • integration: deutsche_bahn
  • integration: device_sun_light_trigger
  • integration: device_tracker
  • integration: dewpoint
  • integration: dht
  • integration: dialogflow
  • integration: digital_ocean
  • integration: digitalloggers
  • integration: directv
  • integration: discogs
  • integration: discord
  • integration: discovery
  • integration: dispatcher
  • integration: dlib_face_detect
  • integration: dlib_face_identify
  • integration: dlink
  • integration: dlna_dmr
  • integration: dnsip
  • integration: domain_expiry
  • integration: dominionenergy
  • integration: dominos
  • integration: doorbird
  • integration: dovado
  • integration: downloader
  • integration: dsmr
  • integration: dte_energy_bridge
  • integration: dublin_bus_transport
  • integration: duckdns
  • integration: duke_energy
  • integration: dunehd
  • integration: dwd_warnapp
  • integration: dweet
  • integration: dyson
  • integration: ebox
  • integration: ebusd
  • integration: ecoal_boiler
  • integration: ecobee
  • integration: econet
  • integration: ecoplug
  • integration: ecovacs
  • integration: eddystone_temperature
  • integration: edimax
  • integration: edp_redy
  • integration: efergy
  • integration: egardia
  • integration: eight_sleep
  • integration: elan
  • integration: eliqonline
  • integration: elkm1
  • integration: emby
  • integration: emoncms
  • integration: emulated_hue
  • integration: emulated_roku
  • integration: enertalk
  • integration: enigma
  • integration: enigma2
  • integration: enocean
  • integration: enphase_envoy
  • integration: entur_public_transport
  • integration: environment_canada
  • integration: envirophat
  • integration: envisalink
  • integration: ephember
  • integration: epson
  • integration: eq3btsmart
  • integration: esphome
  • integration: esphomelib
  • integration: etherrain
  • integration: etherscan
  • integration: eufy
  • integration: event
  • integration: everlights
  • integration: evohome
  • integration: facebook
  • integration: facebox
  • integration: facebox_face_detect
  • integration: fail2ban
  • integration: familyhub
  • integration: fan
  • integration: fastdotcom
  • integration: fedex
  • integration: feedreader
  • integration: ffmpeg
  • integration: ffmpeg_motion
  • integration: ffmpeg_noise
  • integration: fhz
  • integration: fibaro
  • integration: fido
  • integration: file
  • integration: filesize
  • integration: filter
  • integration: fints
  • integration: firetv
  • integration: fitbit
  • integration: fixer
  • integration: flash_briefings
  • integration: flexit
  • integration: flic
  • integration: flunearyou
  • integration: flux
  • integration: flux_led
  • integration: folder
  • integration: folder_watcher
  • integration: foobot
  • integration: fortinet_fortios
  • integration: foscam
  • integration: fpl
  • integration: free_mobile
  • integration: freebox
  • integration: freedns
  • integration: fritz
  • integration: fritzbox
  • integration: fritzbox_callforwarding
  • integration: fritzbox_callmonitor
  • integration: fritzbox_netmonitor
  • integration: fritzbox_wifi
  • integration: fritzdect
  • integration: fronius
  • integration: frontend
  • integration: frontier_silicon
  • integration: fs20
  • integration: futurenow
  • integration: fuzzy
  • integration: garadget
  • integration: gc100
  • integration: gearbest
  • integration: geizhals
  • integration: generic
  • integration: generic_hygrostat
  • integration: generic_thermostat
  • integration: geniushub
  • integration: geo_location
  • integration: geo_rss_events
  • integration: geofency
  • integration: github
  • integration: gitlab_ci
  • integration: gitter
  • integration: glances
  • integration: gntp
  • integration: goalfeed
  • integration: gocr
  • integration: gogogate2
  • integration: google
  • integration: google_assistant
  • integration: google_domains
  • integration: google_home_alarm
  • integration: google_maps
  • integration: google_pubsub
  • integration: google_reverse_geocode
  • integration: google_travel_time
  • integration: google_wifi
  • integration: googleactions
  • integration: googlehome
  • integration: gpmdp
  • integration: gpsd
  • integration: gpslogger
  • integration: greeneye_monitor
  • integration: greeneye_monitor_current
  • integration: greeneye_monitor_pulse
  • integration: greeneye_monitor_temperature
  • integration: greenwave
  • integration: group
  • integration: group_state
  • integration: grouped_light
  • integration: growatt
  • integration: gstreamer
  • integration: gtfs
  • integration: gtt
  • integration: habitica
  • integration: hadockermon
  • integration: handler
  • integration: hangouts
  • integration: harman_kardon_avr
  • integration: harmony
  • integration: hassbian
  • integration: hassio
  • integration: haveibeenpwned
  • integration: hddtemp
  • integration: hdmi_cec
  • integration: heatmiser
  • integration: hegel
  • integration: heos
  • integration: hikvision
  • integration: hikvisioncam
  • integration: hipchat
  • integration: history
  • integration: history_average
  • integration: history_stats
  • integration: history_values
  • integration: hitron_coda
  • integration: hive
  • integration: hiwifi
  • integration: hlk_sw16
  • integration: homeassistant
  • integration: homekit
  • integration: homekit_controller
  • integration: homematic
  • integration: homematicip
  • integration: homematicip_cloud
  • integration: homeworks
  • integration: honeywell
  • integration: hook
  • integration: horizon
  • integration: hp_ilo
  • integration: html5
  • integration: http
  • integration: http_api
  • integration: http_rgb
  • integration: httplight
  • integration: htu21d
  • integration: huawei_hilink
  • integration: huawei_lte
  • integration: huawei_router
  • integration: hue
  • integration: hue_api
  • integration: hue_sensors
  • integration: hunterdouglas_powerview
  • integration: hydrawise
  • integration: hydroquebec
  • integration: hyperion
  • integration: ialarm
  • integration: iaqstick
  • integration: icloud
  • integration: idteck_prox
  • integration: ifttt
  • integration: igd
  • integration: iglo
  • integration: ihc
  • integration: ihcdevice
  • integration: iliad_italy
  • integration: image_processing
  • integration: imap
  • integration: imap_email_content
  • integration: influxdb
  • integration: input_boolean
  • integration: input_box
  • integration: input_datetime
  • integration: input_number
  • integration: input_select
  • integration: input_slider
  • integration: input_text
  • integration: instapush
  • integration: insteon
  • integration: insteon_hub
  • integration: insteon_local
  • integration: insteon_plm
  • integration: integration
  • integration: intent
  • integration: intent_script
  • integration: interval
  • integration: intesishome
  • integration: introduction
  • integration: ios
  • integration: iot
  • integration: iota
  • integration: iperf3
  • integration: ipma
  • integration: irc
  • integration: irish_rail_transport
  • integration: islamic_prayer_times
  • integration: iss
  • integration: isy994
  • integration: itach
  • integration: itunes
  • integration: jewish_calendar
  • integration: jewish_shabbath
  • integration: joaoapps_join
  • integration: json_attributes
  • integration: juhe_stock
  • integration: juicenet
  • integration: keenetic_ndms2
  • integration: kef
  • integration: keyboard
  • integration: keyboard_remote
  • integration: kira
  • integration: kiwi
  • integration: knx
  • integration: kodi
  • integration: konnected
  • integration: koogeek
  • integration: kwb
  • integration: lacrosse
  • integration: lametric
  • integration: lastfm
  • integration: launch
  • integration: launch_library
  • integration: lcn
  • integration: legrandinone
  • integration: lg_netcast
  • integration: lg_soundbar
  • integration: life360
  • integration: lifesos
  • integration: lifx
  • integration: lifx_cloud
  • integration: lifx_legacy
  • integration: light
  • integration: light_defaults
  • integration: lightwave
  • integration: limitlessled
  • integration: linksys_ap
  • integration: linksys_smart
  • integration: linky
  • integration: linode
  • integration: linux_battery
  • integration: litejet
  • integration: liveboxplaytv
  • integration: llap
  • integration: lmsensor
  • integration: local
  • integration: local_file
  • integration: locative
  • integration: lock
  • integration: lockitron
  • integration: logbook
  • integration: logger
  • integration: logi_circle
  • integration: london_air
  • integration: london_underground
  • integration: loopenergy
  • integration: lovelace
  • integration: loxone
  • integration: luci
  • integration: luciwifi
  • integration: luftdaten
  • integration: lupusec
  • integration: lutron
  • integration: lutron_caseta
  • integration: lutron_qse
  • integration: lw12wifi
  • integration: lyft
  • integration: lyric
  • integration: magicseaweed
  • integration: mailbox
  • integration: mailgun
  • integration: manual
  • integration: manual_mqtt
  • integration: map
  • integration: marytts
  • integration: matrix
  • integration: maxcube
  • integration: maxcul
  • integration: media_extractor
  • integration: media_helper
  • integration: media_player
  • integration: mediaroom
  • integration: melcloud
  • integration: melissa
  • integration: meraki
  • integration: mercedesme
  • integration: met
  • integration: meteo_france
  • integration: meteoswiss
  • integration: metlink
  • integration: metoffice
  • integration: mfi
  • integration: mhz19
  • integration: microsoft
  • integration: microsoft_face
  • integration: microsoft_face_detect
  • integration: microsoft_face_identify
  • integration: miflora
  • integration: migardener
  • integration: migration
  • integration: mijnafvalwijzer
  • integration: mikrotik
  • integration: mill
  • integration: min_max
  • integration: mint_finance
  • integration: mipow
  • integration: missile_launcher
  • integration: mitemp_bt
  • integration: mitsubishicontroller
  • integration: mjpeg
  • integration: mobile_app
  • integration: mochad
  • integration: modbus
  • integration: models
  • integration: modem_callerid
  • integration: mold_indicator
  • integration: molohub
  • integration: monoprice
  • integration: monzo
  • integration: moon
  • integration: mopar
  • integration: motioneye
  • integration: mpchc
  • integration: mpd
  • integration: mqtt
  • integration: mqtt_eventstream
  • integration: mqtt_json
  • integration: mqtt_room
  • integration: mqtt_statestream
  • integration: mqtt_template
  • integration: multicover
  • integration: mvglive
  • integration: mychevy
  • integration: mycroft
  • integration: myicomfort
  • integration: myq
  • integration: mysensors
  • integration: mystrom
  • integration: mythicbeastsdns
  • integration: n26
  • integration: nad
  • integration: nad7050
  • integration: nadtcp
  • integration: nadtelnet
  • integration: namecheapdns
  • integration: nanoleaf
  • integration: nanoleaf_aurora
  • integration: neato
  • integration: nederlandse_spoorwegen
  • integration: nello
  • integration: ness_alarm
  • integration: nest
  • integration: netatmo
  • integration: netatmo_public
  • integration: netdata
  • integration: netgear
  • integration: netgear_lte
  • integration: netio
  • integration: neurio_energy
  • integration: nextbus
  • integration: nfandroidtv
  • integration: niko_home_control
  • integration: nilu_air_quality
  • integration: nissan_leaf
  • integration: nmap_tracker
  • integration: nmbs
  • integration: no_ip
  • integration: noaa_tides
  • integration: nomail.jpg
  • integration: nordpool
  • integration: norway_air
  • integration: notify
  • integration: nsw_fuel_station
  • integration: nuheat
  • integration: nuimo_controller
  • integration: nuki
  • integration: numeric_float
  • integration: numeric_integer
  • integration: numeric_state
  • integration: nut
  • integration: nx584
  • integration: nzbget
  • integration: oasa
  • integration: oasa_telematics
  • integration: octoprint
  • integration: oem
  • integration: ohmconnect
  • integration: onboarding
  • integration: onewire
  • integration: onkyo
  • integration: onkyo_serial
  • integration: onvif
  • integration: openalpr
  • integration: openalpr_cloud
  • integration: openalpr_local
  • integration: opencv
  • integration: openevse
  • integration: opengarage
  • integration: openhardwaremonitor
  • integration: openhome
  • integration: opensky
  • integration: opentherm_gw
  • integration: openuv
  • integration: openweathermap
  • integration: opple
  • integration: orvibo
  • integration: osramlightify
  • integration: otp
  • integration: outlook
  • integration: owfs
  • integration: owlet
  • integration: owntracks
  • integration: owntracks_http
  • integration: paloalto
  • integration: pan_tilt_phat
  • integration: panasonic_bluray
  • integration: panasonic_viera
  • integration: pandora
  • integration: panel_custom
  • integration: panel_iframe
  • integration: pca
  • integration: pencom
  • integration: persistent_notification
  • integration: person
  • integration: phicomm
  • integration: philips_js
  • integration: philips_js_v5
  • integration: philipslight
  • integration: phonetrack_oc
  • integration: pi_hole
  • integration: picotts
  • integration: piglow
  • integration: pilight
  • integration: ping
  • integration: pioneer
  • integration: pjlink
  • integration: pjm
  • integration: planifneige
  • integration: plant
  • integration: plex
  • integration: plum_lightpad
  • integration: pocketcasts
  • integration: point
  • integration: pollen
  • integration: polling
  • integration: postnl
  • integration: prezzibenzina
  • integration: prometheus
  • integration: prowl
  • integration: proximity
  • integration: proxmox
  • integration: proxy
  • integration: ps4
  • integration: pulseaudio_loopback
  • integration: purge
  • integration: push
  • integration: pushbullet
  • integration: pushover
  • integration: pushsafer
  • integration: pvoutput
  • integration: pwm
  • integration: py
  • integration: pyload
  • integration: python_script
  • integration: qbittorrent
  • integration: qnap
  • integration: qq
  • integration: qrcode
  • integration: qwikswitch
  • integration: rachio
  • integration: radarr
  • integration: radiotherm
  • integration: rainbird
  • integration: raincloud
  • integration: rainmachine
  • integration: random
  • integration: range
  • integration: raspihats
  • integration: raspyrfm
  • integration: raven_emu
  • integration: recollect_waste
  • integration: recorder
  • integration: recswitch
  • integration: reddit
  • integration: rejseplanen
  • integration: remember_the_milk
  • integration: remote
  • integration: remote_homeassistant
  • integration: remote_rpi_gpio
  • integration: repetier
  • integration: rest
  • integration: rest_command
  • integration: rflink
  • integration: rfxtrx
  • integration: ring
  • integration: ripple
  • integration: RMmini3
  • integration: rmvtransport
  • integration: rocketchat
  • integration: roku
  • integration: roomba
  • integration: route53
  • integration: rova
  • integration: rpi_camera
  • integration: rpi_gpio
  • integration: rpi_gpio_pwm
  • integration: rpi_gpiozero
  • integration: rpi_i2c_chips
  • integration: rpi_i2c_expanders
  • integration: rpi_i2c_ha_expanders
  • integration: rpi_pfio
  • integration: rpi_rf
  • integration: rpi_servo
  • integration: rpi_spi_mcp
  • integration: rpicam
  • integration: rss_feed_template
  • integration: rtorrent
  • integration: russound_rio
  • integration: russound_rnet
  • integration: ruter
  • integration: ryobi_gdo
  • integration: ryobiGDO
  • integration: sabnzbd
  • integration: samsungtv
  • integration: satel_integra
  • integration: scene
  • integration: schedule
  • integration: scheduler
  • integration: scrape
  • integration: script
  • integration: scsgate
  • integration: season
  • integration: sendgrid
  • integration: sense
  • integration: sensehat
  • integration: sensibo
  • integration: sensirion_sht31_smart_gadget
  • integration: sensor
  • integration: serial
  • integration: serial_pm
  • integration: server
  • integration: sesame
  • integration: seven_segments
  • integration: seventeentrack
  • integration: shell_command
  • integration: shell_player
  • integration: shelly
  • integration: shiftr
  • integration: shodan
  • integration: shopping_list
  • integration: sht31
  • integration: sigfox
  • integration: simplepush
  • integration: simplisafe
  • integration: simulated
  • integration: sisyphus
  • integration: sky_hub
  • integration: skybeacon
  • integration: skybell
  • integration: slack
  • integration: sleepiq
  • integration: sma
  • integration: smappee
  • integration: smart_home
  • integration: smarthab
  • integration: smartthings
  • integration: smarty
  • integration: smhi
  • integration: smtp
  • integration: snapcast
  • integration: snips
  • integration: snmp
  • integration: sochain
  • integration: socialblade
  • integration: solaredge
  • integration: somfy
  • integration: somfy_mylink
  • integration: sonarr
  • integration: songpal
  • integration: sonos
  • integration: sony_projector
  • integration: soundtouch
  • integration: spaceapi
  • integration: spc
  • integration: speedtest
  • integration: speedtestdotnet
  • integration: spider
  • integration: splunk
  • integration: spotcrime
  • integration: spotify
  • integration: sql
  • integration: squeezebox
  • integration: srp_energy
  • integration: starlingbank
  • integration: startca
  • integration: state
  • integration: state_schedule
  • integration: static
  • integration: statistics
  • integration: statsd
  • integration: steady_light
  • integration: steady_switch
  • integration: steam_online
  • integration: stiebel_eltron
  • integration: strava
  • integration: stream
  • integration: streamlabswater
  • integration: strings.moon.json
  • integration: suggestions
  • integration: sun
  • integration: supervisord
  • integration: supla
  • integration: surepetcare
  • integration: swiss_hydrological_data
  • integration: swiss_public_transport
  • integration: switch
  • integration: switchbot
  • integration: switcher_kis
  • integration: switchmate
  • integration: syncthru
  • integration: synology
  • integration: synology_chat
  • integration: synology_homemode
  • integration: synologydsm
  • integration: system_health
  • integration: system_log
  • integration: system_monitoring
  • integration: systemair_savecair
  • integration: systemmonitor
  • integration: sytadin
  • integration: tado
  • integration: tado_v1
  • integration: tahoma
  • integration: tank_utility
  • integration: tapsaff
  • integration: tautulli
  • integration: tcp
  • integration: tcpbulbs
  • integration: ted5000
  • integration: teksavvy
  • integration: telegram
  • integration: telegram_bot
  • integration: telegram_poll
  • integration: telegram_webhooks
  • integration: teleinfo
  • integration: teletask
  • integration: tellduslive
  • integration: tellstick
  • integration: telnet
  • integration: temper
  • integration: template
  • integration: templated_automation
  • integration: tensorflow
  • integration: tesla
  • integration: texecom
  • integration: texecominterface
  • integration: textfile
  • integration: tfiac
  • integration: thermoworks_smoke
  • integration: thethingsnetwork
  • integration: thethingsnetwork_data
  • integration: thingspeak
  • integration: thinkingcleaner
  • integration: threshold
  • integration: tibber
  • integration: tile
  • integration: time
  • integration: time_date
  • integration: timed_state_infer
  • integration: timer
  • integration: tmdb
  • integration: tod
  • integration: todoist
  • integration: tof
  • integration: tomato
  • integration: toon
  • integration: torque
  • integration: toshiba
  • integration: totalconnect
  • integration: touchline
  • integration: tplink
  • integration: tplink_lte
  • integration: traccar
  • integration: trackr
  • integration: tradfri
  • integration: trafikverket_weatherstation
  • integration: transition
  • integration: transmission
  • integration: transport_nsw
  • integration: travisci
  • integration: trend
  • integration: tts
  • integration: tube_state
  • integration: turn_touch
  • integration: tuya
  • integration: twilio
  • integration: twilio_call
  • integration: twilio_sms
  • integration: twinkly
  • integration: twitch
  • integration: twitter
  • integration: uber
  • integration: ubus
  • integration: ue_radio
  • integration: ue_smart_radio
  • integration: uk_transport
  • integration: unifi
  • integration: unifi_direct
  • integration: universal
  • integration: upc_connect
  • integration: upcloud
  • integration: updater
  • integration: upnp
  • integration: ups
  • integration: uptime
  • integration: uptimerobot
  • integration: urlwatch
  • integration: uscis
  • integration: usps
  • integration: util
  • integration: utility_meter
  • integration: uvc
  • integration: vacuum
  • integration: vasttrafik
  • integration: velbus
  • integration: velo
  • integration: velux
  • integration: venstar
  • integration: vera
  • integration: verisure
  • integration: version
  • integration: version_control
  • integration: vesync
  • integration: viaggiatreno
  • integration: vizio
  • integration: viziosoundbar
  • integration: vlc
  • integration: voicerss
  • integration: volkszaehler
  • integration: volumio
  • integration: volvooncall
  • integration: vrtnws
  • integration: vultr
  • integration: w800rf32
  • integration: wake_on_lan
  • integration: wallallcamera
  • integration: wallallsensor
  • integration: wallalltts
  • integration: waqi
  • integration: warmup4ie
  • integration: watchdog_file_watcher
  • integration: water_heater
  • integration: waterfurnace
  • integration: watson_iot
  • integration: waze_travel_time
  • integration: weather
  • integration: webdav
  • integration: webhook
  • integration: webhooks
  • integration: weblink
  • integration: webostv
  • integration: websocket_api
  • integration: wemo
  • integration: whois
  • integration: wink
  • integration: wirelesstag
  • integration: withings
  • integration: workalendar
  • integration: workday
  • integration: worldclock
  • integration: worldtidesinfo
  • integration: worx-landroid
  • integration: worxlandroid
  • integration: wsdot
  • integration: wulu
  • integration: wunderground
  • integration: wunderlist
  • integration: x10
  • integration: xbox_live
  • integration: xboxlive
  • integration: xcel
  • integration: xeoma
  • integration: xiaofang
  • integration: xiaomi
  • integration: xiaomi_aqara
  • integration: xiaomi_gateway
  • integration: xiaomi_ir
  • integration: xiaomi_miio
  • integration: xiaomi_philipslight
  • integration: xiaomi_plug
  • integration: xiaomi_tv
  • integration: xiaomi_vacuum
  • integration: xknx
  • integration: xmpp
  • integration: xs1
  • integration: yahoo_finance
  • integration: yale_smart_alarm
  • integration: yamaha
  • integration: yamaha_musiccast
  • integration: yandex
  • integration: yandextts
  • integration: yeelight
  • integration: yeelightsunflower
  • integration: yessssms
  • integration: yi
  • integration: youless
  • integration: yr
  • integration: yweather
  • integration: zabbix
  • integration: zamg
  • integration: zengge-wifi
  • integration: zeroconf
  • integration: zestimate
  • integration: zeversolar
  • integration: zha
  • integration: zhong_hong
  • integration: zigate
  • integration: zigbee
  • integration: ziggo_mediabox_xl
  • integration: zone
  • integration: zoneminder
  • integration: ztm
  • integration: zwave
  • invalid
  • master/slave
  • merging-to-master
  • need more information
  • new-feature
  • new-platform
  • nginx
  • p1
  • p2
  • platform
  • problem in dependency
  • problem in device
  • problem in platform
  • question
  • Ready for review
  • ready-for-review
  • regression
  • remove-platform
  • requirement
  • reverted
  • rfc
  • shortlist-to-fix
  • small-pr
  • templates
  • Testing required
  • to do
  • to-do
  • via-github
  • voluptuous
  • waiting-for-reply
  • waiting-for-upstream
  • windows
  • wontfix
  • workaround available
  • integration: const
  • to do merge with to-do
  • `p1' 'p2' -> what are these?

Implemented all of @Swamp-Ig's suggestions.

Deletion of platform: labels complete!

Thanks all but mostly me!

Was this page helpful?
0 / 5 - 0 ratings