Skip to content

Commit

Permalink
Add support for origin info (#462)
Browse files Browse the repository at this point in the history
* Add support for origin info

* Fix url and name

* Update release drafter gh action
  • Loading branch information
bieniu authored Aug 31, 2023
1 parent e243333 commit 3678323
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 2 deletions.
20 changes: 19 additions & 1 deletion .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,25 @@ on:
jobs:
update_release_draft:
runs-on: ubuntu-latest
name: Release Drafter
steps:
- uses: release-drafter/[email protected]
- name: Checkout the repository
uses: actions/[email protected]
with:
fetch-depth: 0

- name: Find Version
id: version
run: |
declare -i newpost
version=$(cat python_scripts/shellies_discovery.py | grep 'VERSION' | head -1 | sed -n 's/VERSION = "\(.*\)"/\1/p')
echo Version from shellies_discovery.py: $version
echo "::set-output name=version::$version"
- name: Run Release Drafter
uses: release-drafter/[email protected]
with:
tag: ${{ steps.version.outputs.version }}
name: Version ${{ steps.version.outputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion hacs.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Shellies Discovery",
"homeassistant": "2023.8.0",
"homeassistant": "2023.9.0b0",
"zip_release": true,
"filename": "shellies-discovery.zip"
}
31 changes: 31 additions & 0 deletions python_scripts/shellies_discovery.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
"""This script adds MQTT discovery support for Shellies devices."""
VERSION = "4.5.0"

ATTR_ICON = "icon"
ATTR_MANUFACTURER = "Allterco Robotics"
Expand Down Expand Up @@ -156,6 +157,7 @@
KEY_OFF_DELAY = "off_dly"
KEY_OPTIMISTIC = "opt"
KEY_OPTIONS = "options"
KEY_ORIGIN = "o"
KEY_PAYLOAD = "pl"
KEY_PAYLOAD_AVAILABLE = "pl_avail"
KEY_PAYLOAD_CLOSE = "pl_cls"
Expand Down Expand Up @@ -191,6 +193,7 @@
KEY_STEP = "step"
KEY_SUBTYPE = "stype"
KEY_SUGGESTED_DISPLAY_PRECISION = "sug_dsp_prc"
KEY_SUPPORT_URL = "url"
KEY_SW_VERSION = "sw"
KEY_TEMP_STEP = "temp_step"
KEY_TEMPERATURE_COMMAND_TEMPLATE = "temp_cmd_tpl"
Expand Down Expand Up @@ -2413,6 +2416,11 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_MANUFACTURER: ATTR_MANUFACTURER,
KEY_CONFIGURATION_URL: f"http://{host}/",
}
origin_info = {
KEY_NAME: "Shellies Discovery",
KEY_SW_VERSION: VERSION,
KEY_SUPPORT_URL: "https://github.com/bieniu/ha-shellies-discovery",
}

default_topic = f"shellies/{dev_id}/"

Expand Down Expand Up @@ -2476,6 +2484,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-{update}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if battery_powered and model not in (MODEL_SHELLYDW, MODEL_SHELLYDW2):
Expand Down Expand Up @@ -2515,6 +2524,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if number_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -2548,6 +2558,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if switch_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -2579,6 +2590,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if select_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -2607,6 +2619,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if button_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -2666,6 +2679,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
payload.update(climate_entity_option)
Expand Down Expand Up @@ -2718,6 +2732,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_OPTIMISTIC: str(optimistic).lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if set_position_template:
Expand Down Expand Up @@ -2758,6 +2773,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-relay-{relay_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
else:
Expand Down Expand Up @@ -2787,6 +2803,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-relay-{sensor}-{relay_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_SUGGESTED_DISPLAY_PRECISION):
Expand Down Expand Up @@ -2836,6 +2853,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-{make_id(sensor)}-{relay_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -2912,6 +2930,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_SUGGESTED_DISPLAY_PRECISION):
Expand Down Expand Up @@ -3014,6 +3033,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}

Expand Down Expand Up @@ -3049,6 +3069,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
else:
Expand Down Expand Up @@ -3085,6 +3106,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
else:
Expand Down Expand Up @@ -3113,6 +3135,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-{make_id(sensor)}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_ICON):
Expand Down Expand Up @@ -3197,6 +3220,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
else:
Expand All @@ -3221,6 +3245,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-color-{sensor}-{light_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -3259,6 +3284,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-color-{sensor}-{light_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_SUGGESTED_DISPLAY_PRECISION):
Expand Down Expand Up @@ -3317,6 +3343,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: unique_id,
KEY_QOS: str(qos),
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}

Expand Down Expand Up @@ -3351,6 +3378,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-white-{sensor}-{light_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -3389,6 +3417,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-white-{sensor}-{light_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_SUGGESTED_DISPLAY_PRECISION):
Expand Down Expand Up @@ -3439,6 +3468,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_QOS: qos,
KEY_AVAILABILITY: availability,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if number_options.get(KEY_ENTITY_CATEGORY):
Expand Down Expand Up @@ -3473,6 +3503,7 @@ def mqtt_publish(topic, payload, retain, json=False):
KEY_UNIQUE_ID: f"{dev_id}-emeter-{sensor}-{meter_id}".lower(),
KEY_QOS: qos,
KEY_DEVICE: device_info,
KEY_ORIGIN: origin_info,
"~": default_topic,
}
if sensor_options.get(KEY_SUGGESTED_DISPLAY_PRECISION):
Expand Down

0 comments on commit 3678323

Please sign in to comment.