Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add continuous integration #2

Merged
merged 2 commits into from
Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
UseTab: Never
IndentWidth: 4
NamespaceIndentation: All
AccessModifierOffset: -4
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false
IndentCaseLabels: false
SortIncludes: false
ColumnLimit: 0
129 changes: 129 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: CI

# yamllint disable-line rule:truthy
on:
workflow_dispatch:
inputs:
esphome_version:
description: "ESPHome PyPi Package version to use"
required: false
type: string
push:
branches: [main, dev]

pull_request:
merge_group:

permissions:
contents: read

concurrency:
# yamllint disable-line rule:line-length
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
ci:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 5
matrix:
include:
- id: test
file: tests/full.yaml
name: Test tests/full.yaml
pio_cache_key: full
- id: test
file: tests/base.yaml
name: Test tests/base.yaml
pio_cache_key: base
- id: clang-format
name: Run clang-format
- id: yamllint
name: Run yamllint
- id: black-format
name: Run black-format
- id: isort
name: Run isort

steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
id: python
with:
python-version: "3.9"

- name: Cache virtualenv
uses: actions/cache@v3
with:
path: .venv
# yamllint disable-line rule:line-length
key: venv-${{ steps.python.outputs.python-version }}
restore-keys: |
venv-${{ steps.python.outputs.python-version }}
- name: Set up virtualenv
# yamllint disable rule:line-length
run: |
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
if [ ${{ github.event.inputs.esphome_version != '' }} == true ]; then pip install ESPHome==${{ github.event.inputs.esphome_version }}; else pip install -U ESPHome; fi
echo "$GITHUB_WORKSPACE/.venv/bin" >> $GITHUB_PATH
echo "VIRTUAL_ENV=$GITHUB_WORKSPACE/.venv" >> $GITHUB_ENV
# yamllint enable rule:line-length

# Use per check platformio cache because checks use different parts
- name: Cache platformio
uses: actions/cache@v3
with:
path: ~/.platformio
# yamllint disable-line rule:line-length
key: platformio-${{ matrix.pio_cache_key }}-${{ hashFiles('platformio.ini') }}
if: matrix.id == 'test'

- run: esphome compile ${{ matrix.file }}
if: matrix.id == 'test'
env:
# Also cache libdeps, store them in a ~/.platformio subfolder
PLATFORMIO_LIBDEPS_DIR: ~/.platformio/libdeps

- name: Run clang-format
uses: jidicula/[email protected]
with:
clang-format-version: "13"
check-path: "components"
if: matrix.id == 'clang-format'

- name: Run yamllint
if: matrix.id == 'yamllint'
uses: frenck/[email protected]

- name: Run black-format
if: matrix.id == 'black-format'
uses: psf/black@stable
with:
options: "--check --verbose"
version: "~= 24.1"

- name: Run isort
if: matrix.id == 'isort'
uses: isort/isort-action@master
with:
requirementsFiles: "requirements.txt"

ci-status:
name: CI Status
runs-on: ubuntu-latest
needs: [ci]
if: always()
steps:
- name: Successful deploy
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failing deploy
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1
17 changes: 17 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
repos:
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.1.0
hooks:
- id: black
language_version: python3.11

- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
name: isort (python)

- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v17.0.6
hooks:
- id: clang-format
2 changes: 2 additions & 0 deletions .yamllint
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
ignore: |
venv/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ESPHome Hi-Link HKL-LD2450
# ESPHome Hi-Link HKL-LD2450 [![CI](https://github.com/TillFleisch/ESPHome-HLK-LD2450/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/TillFleisch/ESPHome-HLK-LD2450/actions/workflows/ci.yaml)

This external [ESPHome](https://esphome.io) component adds support for the [Hi-Link HKL-LD2450](https://www.hlktech.net/index.php?id=1157) Human presence sensor to ESPHome.
In addition to a basic binary presence sensor, this component adds various different sensors for each detected target and supports custom presence detection Zones.
Expand Down
2 changes: 1 addition & 1 deletion components/LD2450/LD2450.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -406,4 +406,4 @@ namespace esphome::ld2450

flush();
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/LD2450.h
Original file line number Diff line number Diff line change
Expand Up @@ -348,4 +348,4 @@ namespace esphome::ld2450
/// @brief Select options used for setting the sensors baud rate
BaudRateSelect *baud_rate_select_ = nullptr;
};
}
} // namespace esphome::ld2450
28 changes: 14 additions & 14 deletions components/LD2450/__init__.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import (
uart,
binary_sensor,
button,
number,
select,
sensor,
button,
switch,
select,
uart,
)
from esphome.components.uart import UARTComponent
from esphome.const import (
CONF_ID,
CONF_INITIAL_VALUE,
CONF_NAME,
CONF_STEP,
CONF_RESTORE_VALUE,
CONF_INITIAL_VALUE,
CONF_STEP,
CONF_UNIT_OF_MEASUREMENT,
UNIT_METER,
UNIT_CENTIMETER,
UNIT_DEGREES,
DEVICE_CLASS_OCCUPANCY,
DEVICE_CLASS_DISTANCE,
DEVICE_CLASS_SPEED,
DEVICE_CLASS_OCCUPANCY,
DEVICE_CLASS_RESTART,
STATE_CLASS_MEASUREMENT,
ICON_RESTART_ALERT,
ICON_BLUETOOTH,
ENTITY_CATEGORY_DIAGNOSTIC,
DEVICE_CLASS_SPEED,
ENTITY_CATEGORY_CONFIG,
ENTITY_CATEGORY_DIAGNOSTIC,
ICON_BLUETOOTH,
ICON_RESTART_ALERT,
STATE_CLASS_MEASUREMENT,
UNIT_CENTIMETER,
UNIT_DEGREES,
UNIT_METER,
)

AUTO_LOAD = ["binary_sensor", "number", "sensor", "button", "switch", "select"]
Expand Down
2 changes: 1 addition & 1 deletion components/LD2450/baud_rate_select.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_baud_rate(BAUD_STRING_TO_ENUM.at(value));
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/baud_rate_select.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void control(const std::string &value);
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/bluetooth_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_bluetooth_state(state);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/bluetooth_switch.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void write_state(bool state) override;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/max_detection_number.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ namespace esphome::ld2450
if (this->restore_value_)
this->pref_.save(&value);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/max_detection_number.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,4 @@ namespace esphome::ld2450
ESPPreferenceObject pref_;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/polling_sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ namespace esphome::ld2450
/// @brief Value of this sensor (un-published)
float value_ = 0;
};
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/target.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,4 @@ namespace esphome::ld2450
return resolution_ != 0 && (!fast_off_detection_ || millis() - last_change_ <= FAST_OFF_THRESHOLD);
}

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/target.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,4 +229,4 @@ namespace esphome::ld2450
/// @brief sensor reference of the distance sensor
PollingSensor *distance_sensor_ = nullptr;
};
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/tracking_mode_switch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ namespace esphome::ld2450
{
parent_->set_tracking_mode(state);
}
}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/tracking_mode_switch.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ namespace esphome::ld2450
void write_state(bool state) override;
};

}
} // namespace esphome::ld2450
2 changes: 1 addition & 1 deletion components/LD2450/zone.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,4 @@ namespace esphome::ld2450
}
return true;
}
}
} // namespace esphome::ld2450
12 changes: 9 additions & 3 deletions components/LD2450/zone.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,14 @@ namespace esphome::ld2450
class Point
{
public:
Point() : x(0), y(0) {}
Point(int x, int y) : x(x), y(y) {}
Point()
: x(0), y(0)
{
}
Point(int x, int y)
: x(x), y(y)
{
}
int x, y;
};

Expand Down Expand Up @@ -138,4 +144,4 @@ namespace esphome::ld2450
/// @brief Map of targets which are currently tracked inside of this polygon with their last seen timestamp
std::map<Target *, long> tracked_targets_{};
};
}
} // namespace esphome::ld2450
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[tool.black]
target-version = ["py311"]
[tool.isort]
profile = "black"
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
esphome
33 changes: 33 additions & 0 deletions tests/base.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
esphome:
name: ld2450

esp32:
board: esp32dev

external_components:
- source:
type: local
path: ../components

logger:
baud_rate: 0

uart:
id: uart_bus
rx_pin:
number: GPIO16
mode:
input: true
pullup: true
tx_pin:
number: GPIO17
mode:
input: true
pullup: true
baud_rate: 256000
parity: NONE
stop_bits: 1
data_bits: 8

LD2450:
uart_id: uart_bus
Loading
Loading