diff --git a/pylintrc b/pylintrc
deleted file mode 100644
index 86f3d4caea07bf4ade379079e98942417678b926..0000000000000000000000000000000000000000
--- a/pylintrc
+++ /dev/null
@@ -1,65 +0,0 @@
-[MASTER]
-ignore=tests
-# Use a conservative default here; 2 should speed up most setups and not hurt
-# any too bad. Override on command line as appropriate.
-# Disabled for now: https://github.com/PyCQA/pylint/issues/3584
-#jobs=2
-load-plugins=pylint_strict_informational
-persistent=no
-extension-pkg-whitelist=ciso8601,cv2
-
-[BASIC]
-good-names=id,i,j,k,ex,Run,_,fp,T,ev
-
-[MESSAGES CONTROL]
-# Reasons disabled:
-# format - handled by black
-# locally-disabled - it spams too much
-# duplicate-code - unavoidable
-# cyclic-import - doesn't test if both import on load
-# abstract-class-little-used - prevents from setting right foundation
-# unused-argument - generic callbacks and setup methods create a lot of warnings
-# too-many-* - are not enforced for the sake of readability
-# too-few-* - same as too-many-*
-# abstract-method - with intro of async there are always methods missing
-# inconsistent-return-statements - doesn't handle raise
-# too-many-ancestors - it's too strict.
-# wrong-import-order - isort guards this
-disable=
-  format,
-  abstract-class-little-used,
-  abstract-method,
-  cyclic-import,
-  duplicate-code,
-  inconsistent-return-statements,
-  locally-disabled,
-  not-context-manager,
-  too-few-public-methods,
-  too-many-ancestors,
-  too-many-arguments,
-  too-many-branches,
-  too-many-instance-attributes,
-  too-many-lines,
-  too-many-locals,
-  too-many-public-methods,
-  too-many-return-statements,
-  too-many-statements,
-  too-many-boolean-expressions,
-  unused-argument,
-  wrong-import-order
-# enable useless-suppression temporarily every now and then to clean them up
-enable=
-  use-symbolic-message-instead
-
-[REPORTS]
-score=no
-
-[TYPECHECK]
-# For attrs
-ignored-classes=_CountingAttr
-
-[FORMAT]
-expected-line-ending-format=LF
-
-[EXCEPTIONS]
-overgeneral-exceptions=BaseException,Exception,HomeAssistantError
diff --git a/pyproject.toml b/pyproject.toml
index 7c0c5eeb4337f9970898fc37e37e05357f175e6e..0f416d9e0141cfc246286e44c2cfaf66add5a5a3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,3 +1,117 @@
 [tool.black]
 target-version = ["py37", "py38"]
 exclude = 'generated'
+
+[tool.isort]
+# https://github.com/PyCQA/isort/wiki/isort-Settings
+profile = "black"
+# will group `import x` and `from x import` of the same module.
+force_sort_within_sections = true
+known_first_party = [
+    "homeassistant",
+    "tests",
+]
+forced_separate = [
+    "tests",
+]
+combine_as_imports = true
+
+[tool.pylint.MASTER]
+ignore = [
+    "tests",
+]
+# Use a conservative default here; 2 should speed up most setups and not hurt
+# any too bad. Override on command line as appropriate.
+# Disabled for now: https://github.com/PyCQA/pylint/issues/3584
+#jobs = 2
+load-plugins = [
+    "pylint_strict_informational",
+]
+persistent = false
+extension-pkg-whitelist = [
+    "ciso8601",
+    "cv2",
+]
+
+[tool.pylint.BASIC]
+good-names = [
+    "_",
+    "ev",
+    "ex",
+    "fp",
+    "i",
+    "id",
+    "j",
+    "k",
+    "Run",
+    "T",
+]
+
+[tool.pylint."MESSAGES CONTROL"]
+# Reasons disabled:
+# format - handled by black
+# locally-disabled - it spams too much
+# duplicate-code - unavoidable
+# cyclic-import - doesn't test if both import on load
+# abstract-class-little-used - prevents from setting right foundation
+# unused-argument - generic callbacks and setup methods create a lot of warnings
+# too-many-* - are not enforced for the sake of readability
+# too-few-* - same as too-many-*
+# abstract-method - with intro of async there are always methods missing
+# inconsistent-return-statements - doesn't handle raise
+# too-many-ancestors - it's too strict.
+# wrong-import-order - isort guards this
+disable = [
+    "format",
+    "abstract-class-little-used",
+    "abstract-method",
+    "cyclic-import",
+    "duplicate-code",
+    "inconsistent-return-statements",
+    "locally-disabled",
+    "not-context-manager",
+    "too-few-public-methods",
+    "too-many-ancestors",
+    "too-many-arguments",
+    "too-many-branches",
+    "too-many-instance-attributes",
+    "too-many-lines",
+    "too-many-locals",
+    "too-many-public-methods",
+    "too-many-return-statements",
+    "too-many-statements",
+    "too-many-boolean-expressions",
+    "unused-argument",
+    "wrong-import-order",
+]
+enable = [
+    #"useless-suppression",  # temporarily every now and then to clean them up
+    "use-symbolic-message-instead",
+]
+
+[tool.pylint.REPORTS]
+score = false
+
+[tool.pylint.TYPECHECK]
+ignored-classes = [
+    "_CountingAttr",  # for attrs
+]
+
+[tool.pylint.FORMAT]
+expected-line-ending-format = "LF"
+
+[tool.pylint.EXCEPTIONS]
+overgeneral-exceptions = [
+    "BaseException",
+    "Exception",
+    "HomeAssistantError",
+]
+
+[tool.pytest.ini_options]
+testpaths = [
+    "tests",
+]
+norecursedirs = [
+    ".git",
+    "testing_config",
+]
diff --git a/setup.cfg b/setup.cfg
index 8dd3e083a8b99ae8bab89e64e9548c79846d83db..bf863cb97a5821b8587396e3235de68e8a519145 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -14,10 +14,6 @@ classifier =
     Programming Language :: Python :: 3.7
     Topic :: Home Automation
 
-[tool:pytest]
-testpaths = tests
-norecursedirs = .git testing_config
-
 [flake8]
 exclude = .venv,.git,.tox,docs,venv,bin,lib,deps,build
 doctests = True
@@ -35,16 +31,6 @@ ignore =
     D202,
     W504
 
-[isort]
-# https://github.com/timothycrosley/isort
-# https://github.com/timothycrosley/isort/wiki/isort-Settings
-profile = black
-# will group `import x` and `from x import` of the same module.
-force_sort_within_sections = true
-known_first_party = homeassistant,tests
-forced_separate = tests
-combine_as_imports = true
-
 [mypy]
 python_version = 3.7
 ignore_errors = true