[Article] Développer pour Home Assistant - Comment faire

Merci pour ce super tuto que je vais suivre pour essayer de créer ma première intégration :slight_smile: Par contre y-a-t’il un autre outil que VSCode utilisable ? car je refuse de cochonner mon ordi avec des logiciels émanant de Microsoft et consorts :laughing:

Tu peux utiliser Codium c’est la meme chose mais sans le code propriétaire de Microsoft

1 « J'aime »

Merci effectivement j’aurais du y penser qu’il y avait probablement une version clean en ium après Chromium et compagnie :sweat_smile:
bon allez plus qu’à s’y mettre :see_no_evil:

@Jean-Marc_Collin tout d’abord merci pour ce super tutorial pour attaquer le dev pour HA :+1:
quelques petites remarques:

  • A l’étape Démarrer dans un répertoire avec VSCode, tu dis:
Cliques sur

puis va chercher le répertoire créé ci-dessus

Je suis prêt à cliquer sur tout ce qui est possible mais il manque quelque chose non ? En l’occurrence c’est « Choisir un Répertoire » dans VScode je pense :wink:

  • Dans les extensions à installer dans VSCode, Pylance, Dev Containers, Intellicode, Intellicode API n’existent plus. Une équivalence ?

Du coup je peux pas poursuivre parce que l’étape suivante utilise la fonction Dev Containers qui n’est pas disponible à l’installation :frowning: Comment faire ?
Je suis avec VSCodium pour les raisons expliquées précédemment !

Tu choisis un répertoire de ton disque pour installer le projet (je pense que tu en es là).

Je pense qu’elles existent encore puisque je les ai:

Capture d’écran 2023-10-08 à 14.15.26
Capture d’écran 2023-10-08 à 14.15.43
Capture d’écran 2023-10-08 à 14.16.30

ben je veux bien te croire mais elles sont pas présentes chez moi, je viens de revérifier :frowning: Est-ce dû au fait que ce sont des extensions Microsoft ? et que donc elles ne sont disponibles que sur VSCode et pas sur VScodium ?
Après vérification il s’avère que Microsoft n’autorise pas la redistribution de ses modules, rien de surprenant vu leur vision de l’open-source :frowning:
Bon j’ai plus qu’à trouver un autre tutoriel :confused:

Effectivement, VSCdode offre tous les plugins de Microsoft et ils sont vraiment intéressant.
Je ne peux que te conseiller de passer sous VSCdode !

Tu es mauvaise langue… Microsoft s’est amélioré dernièrement. VSCodium est une copie de VSCode car il est open-source :wink:

Ensuite si tu lis la documentation de VSCodium, tu peux utiliser des extensions : https://github.com/VSCodium/vscodium/blob/master/DOCS.md#extensions-marketplace

Cadeau : un tuto en français pour installer les extensions: Vscodium: mais où sont passées les extensions? – tutox.fr

Merci pour les liens qui m’ont effectivement permis d’aller plus loin mais malgré tout l’étape d’installation avorte. En effet quand j’essaye de créer le container Python3 comme indiqué dans le Tuto, cela finit sur un 404:

[3596 ms] Start: Run: docker rm -f 78772200a30e453e6bcd61df56e09bac5ddea0f4da56e4633a4d23b030ce7470
[3603 ms] Error: Server returned 404
    at h (vscode-file://vscode-app/usr/share/codium/resources/app/out/vs/workbench/workbench.desktop.main.js:676:36488)
    at T.download (vscode-file://vscode-app/usr/share/codium/resources/app/out/vs/workbench/workbench.desktop.main.js:677:1873)
[7883 ms] Error opening dev container configurations: CodeExpectedError: ENOPRO : aucun fournisseur de système de fichiers pour la ressource « vscode-remote://dev-container%2B7b22766f6c756d654e616d65223a22707974686f6e2d32222c22666f6c646572223a22707974686f6e2d32227d/workspaces/python-2 »
    at r.withProvider (vscode-file://vscode-app/usr/share/codium/resources/app/out/vs/workbench/workbench.desktop.main.js:645:15395)
    at async r.exists (vscode-file://vscode-app/usr/share/codium/resources/app/out/vs/workbench/workbench.desktop.main.js:645:18034)
    at async Promise.all (index 0)
    at async vscode-file://vscode-app/usr/share/codium/resources/app/out/vs/workbench/workbench.desktop.main.js:1867:3343

Même si je remets le fichiers d’origine dans Codium pour qu’il utilise son repo et pas celui de Microsoft cela ne change rien :frowning:

Hello,

Merci pour ces tutos très enrichissants! super job.
Je coince à l’install de HA. J’ai l’erreur suivante:

Could not build wheels for aiohttp, which is required to install pyproject.toml-based projects

Merci d’avance pour l’aide que vous pourriez m’apporter.
Nico

J’ai downgradé la version de python, et j’ai pu arriver au bout de l’install de HA

Désolé pour le dérangement, et encore merci pour ces tutos !
Nico

1 « J'aime »

Faut être en python 3.11 pour développer sur HA.
C’est bien ce que tu as ?

1 « J'aime »

Hello,
Oui je suis en 3.11, ça fonctionne.

J’avance et je tombe sur l’erreur suivante:

2023-11-17 16:21:37.521 ERROR (MainThread) [homeassistant.config] Platform error: sensor
Traceback (most recent call last):
  File "/home/vscode/.local/lib/python3.11/site-packages/homeassistant/config.py", line 923, in async_process_component_config
    platform = p_integration.get_platform(domain)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vscode/.local/lib/python3.11/site-packages/homeassistant/loader.py", line 836, in get_platform
    cache[full_name] = self._import_platform(platform_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vscode/.local/lib/python3.11/site-packages/homeassistant/loader.py", line 853, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'custom_components.ecoledirecte.sensor'

Voici mon configuration.yaml:

ecoledirecte:

sensor:
  - platform: ecoledirecte
    entity_id: ecoledirecte_id
    name: ecoledirecte_name

Je ne comprends pas cette erreur, quelqu’un pourrait me mettre sur une piste ?
Merci d’avance !
Nico

C’est ton intégration Ecole directe ?

ModuleNotFoundError: No module named ‹ custom_components.ecoledirecte.sensor ›

Ca ça veut dire que le module n’est pas trouvé ou n’est pas un module au sens Python. Fais voir l’import de ce module dans ton code.

Je pense que le path est pas bon. Chez moi j’ai ça quand je fais des imports de mes fichiers Python locaux:

init.py:
from .base_thermostat import BaseThermostat

Voici le const.py:

""" Les constantes pour l'intégration Ecole Directe """

from homeassistant.const import Platform

DOMAIN = "ecoledirecte"
PLATFORM: list[Platform] = [Platform.SENSOR]

et le init.py:

"""Initialisation du package de l'intégration HACS Tuto"""
import logging

from homeassistant.core import HomeAssistant
from homeassistant.config_entries import ConfigEntry

from .const import DOMAIN, PLATFORM

_LOGGER = logging.getLogger(__name__)


async def async_setup(hass: HomeAssistant, config: ConfigEntry):  # pylint: disable=unused-argument
    """Initialisation de l'intégration"""
    _LOGGER.info(
        "Initializing %s integration with plaforms: %s with config: %s",
        DOMAIN,
        PLATFORM,
        config,
    )

    # Mettre ici un eventuel code permettant l'initialisation de l'intégration
    # Ca peut être une connexion sur le Cloud qui fournit les données par ex
    # (pas nécessaire pour le tuto)

    # L'argument config contient votre fichier configuration.yaml
    my_config = config.get(DOMAIN)  # pylint: disable=unused-variable

    # Return boolean to indicate that initialization was successful.
    return True

Merci
Nicolas

Je tente de créer une intégration pour Ecole Directe, c’est la même chose que Pronote mais pour les écoles privées.

Nico

Il te manque pas le extraPaths dans le settings.xml des fois ? Ca sert à ajouter ce path dans le PYTHON_PATH (je crois) pour que Python trouve tes classes.

Le mien:

{
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true
    },
    "pylint.lintOnChange": false,
    "files.associations": {
        "*.yaml": "home-assistant"
    },
    "python.testing.pytestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.analysis.extraPaths": [
        "/workspaces/versatile_thermostat/custom_components/versatile_thermostat"
    ],
    "python.formatting.provider": "none"
}

Je ne suis pas un vrais dev mais je sais lire/interpréter … je copie/colle beauoup…donc peut-être c’est pas trops intéressant pour toi mais pourquoi pas copier le repo de Pronote et commencer par adapter ça ?
Tu peux commencer seul par avoir un coordinator qui collectes des données … et ensuite ajouter des sensors.
delphiki/hass-pronote: Pronote integration for Home Assistant (github.com)

1 « J'aime »

Hello Jean Marc,

J’ai repassé le tuto en vu et je ne trouve pas le fichier settings.xml. S’agirait-il d’un fichier de configuration d’un module VSC ? Si oui, où se trouve t-il ?

Merci
Nico

Ah oui c’est dans le devcontainer.json. Je regarde ça merci.
Nico