Un serveur Home Assistant pour moins de 35€ en 2023 (passerelle Zigbee incluse)

Le prix des Raspberry Pi ayant trop augmenté pour ma bourse et leur disponibilité étant toujours incertaine, j’ai cherché des alternatives pour fabriquer des passerelles domotiques à offrir à des proches.

Aujourd’hui, je vous expose le résultat de mes recherches, qui m’ont permis d’installer des

Serveurs Home Assistant à moins de 35€
Passerelle Zigbee inclus

En espérant que ça pourra servir à d’autres et montrer qu’il n’est pas besoin de se ruiner pour se lancer dans la domotique (moyennant tout de même quelques beaux efforts).

Ce ne sont bien sûr pas les machines les plus puissantes, mais elles sont complètement opérationnelles et stables. Elles intègrent un coordinateur Zigbee. Il vaudra tout de mieux se passer d’y installer InfluxDB et Grafana (bien que je l’aie fait « for educational purpose »).

Dans le principe, j’ai choisi de partir sur une distribution Armbian Bullseye installée sur une box TV Android chinoise qu’on trouve souvent autour de 25€, et d’y connecter un dongle Zigbee USB.

L’élément important à prendre en considération dans le choix de la box TV est le SoC (System on a Chip) qu’elle intègre.
Celui-ci doit disposer d’une version d’ Armbian adaptée, et pour des raisons évidentes de performances et de maintenabilité, d’un processeur 64 bits.
Les SoC que j’ai pu utiliser et que je peux donc conseiller sont les suivants :

  • Amlogic s905w, s905l
  • Rockchip rk3318 / rk3328
    Il existe bien entendu des versions plus puissantes de ces SoC, mais plus chères… Ça sera à vous de décider en fonction de votre budget. L’essentiel est de bien vérifier la disponibilité d’une version d’Armbian bullseye (~debian 11) 64 bits avec un support actif au moins assuré par la communauté.
    2 GB de RAM me semble également un minimum.

En ce qui concerne le coordinateur Zigbee, j’ai simplement cherché la solution la moins chère et qui avait des chances de fonctionner.

En guise de suggestion, voici un exemple de configuration matérielle qui a bien marché pour moi :


A l’heure où j’écris ces lignes, l’ensemble reviendrait donc à : 26.05 + 8.66 = 34.71€ et rien de plus ! Pas d’alimentation, de dissipateur de chaleur, de boîtier, de carte SD à ajouter.

Dans les grandes lignes, voici les étapes d’installation que j’ai utilisées :

  • Installation de Armbian en version bullseye arm64 (la procédure et l’image à utiliser dépendront du modèle de box TV, mais largement documenté sur le forum d’Armbian.com)
  • Configuration du système (hostname, IP, Avahi, TimeZone, clavier) via l’outil armbian-config
  • Mise à jour du système : apt update && apt full-upgrade -y
  • Installation de docker-ce : curl -fsSL https://get.docker.com/ | sh
  • Installation de Portainer pour une gestion simplifiée des containers docker :
    docker volume create portainer_data
    docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
  • Depuis Portainer, création d’un Stack pour l’installation de HA Container, Mosquitto Broker, Zigbee2MQTT, Mariadb, …etc.

Ce à quoi ressemble mon stack principal :

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    hostname: home-assistant
    volumes:
      - config:/config
      - ssl:/ssl
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro     # ça, c'est pour un test d'intégration bluetooth à venir
    restart: unless-stopped
    network_mode: "host"
    environment:
      - TZ=Europe/Paris
    depends_on:
      - mariadb
      
  mariadb:
    container_name: mariadb
    image: mariadb
    restart: unless-stopped
    ports:
      - "3306:3306/tcp"
    environment:
      - TZ=Europe/Paris
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_HA_DATABASE}
      - MYSQL_USER=${MYSQL_HA_USER}
      - MYSQL_PASSWORD=${MYSQL_HA_PASSWORD}
    volumes:
      - mysql_data:/var/lib/mysql
      - mysql_conf:/etc/mysql/conf.d
  
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    hostname: mosquitto
    restart: unless-stopped
    ports:
      - 1883:1883
      - 8883:8883
      - 9001:9001
    volumes:
      - mqtt_config:/mosquitto/config
      - mqtt_data:/mosquitto/data
      - mqtt_log:/mosquitto/log

  zigbee2mqtt:
    image: koenkk/zigbee2mqtt
    container_name: zigbee2mqtt
    restart: unless-stopped
    hostname: zigbee2mqtt
    ports:
      - 8088:8080
    environment:
      - TZ=Europe/Paris
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0
    volumes:
      - z2m_data:/app/data
      - /run/udev:/run/udev:ro

  hass-configurator:   # File editor à intégrer à HA sous forme de panel_iframe
    container_name: hassconf
    image: causticlab/hass-configurator-docker
    restart: unless-stopped
    ports:
      - "3218:3218/tcp"
    volumes:
      - hassconf:/config
      - config:/hass-config
    depends_on:
      - homeassistant

volumes:
  config:
    name: ha_config
  ssl:
    name: ha_ssl
  mysql_data:
    name: mysql_data
  mysql_conf:
    name: mysql_conf
  mqtt_config:
    name: mqtt_config
  mqtt_data:
    name: mqtt_data
  mqtt_log:
    name: mqtt_log
  z2m_data:
    name: z2m_data
  hassconf:
    name: hassconf

Pour l’accès depuis l’extérieur, j’ai ajouté un stack avec swag (qui intègre le reverse proxy NGinx, et certbot) et authelia pour sécuriser les accès à mes différentes interfaces de gestion avec du 2FA (TOTP) et bientôt OpenID Connect.

Bon, en espérant ne rien avoir oublié… mais je pense que le post est déjà assez long comme ça :wink:

Notes supplémentaires : L’installation de la version Supervised de HA est tout à fait possible. Je l’ai testé et tout fonctionne, mais l’installation demande une rigueur beaucoup plus grande et quelques tweaks. J’ai également pu recyclé de vieilles box TV qui traînaient dans des tiroirs avec des SoC Rockchip rk3218/rk3228/rk3228a (MXQ Pro 4k), mais les images ne sont plus maintenues et l’architecture est en 32 bits. A moins que vous en ayez déjà sous la main, privilégiez les SoC arm64 plus récents.

[Edit 10/04/2023] : En faisant des recherches sur le forum, je me suis rendu compte que le sujet avait déjà été discuté ici :

14 « J'aime »

Bonjour @Pat
Atteint de syllogomanie, j’ai quelques boitiers dans le garage, en me disant « je vais bien trouver un jour une autre utilisation à ces trucs… » :thinking:

J’avais tenté le retro-gaming, mais trop gourmand, pas la machine, moi! :joy:

Merci pour ce post, cela renforce ma maladie ! :rofl:

Je vais essayer çà …
Mille merci!

2 « J'aime »

@Xtofe : Je crois que je suis atteint du même mal :smiley:
Pour le retro-gaming, J’utilise EmuElec sur ces mêmes boîtiers (v4.3 sur les boîtier plus anciens - ie. qui sont équipés de Nand et pas d’emmc). Ça fait des cadeaux très appréciés et ça me donne une trop rare occasion de me défaire d’un des innombrables trucs qui encombrent ma maison… Mais je crois qu’on sort du sujet principal du forum, là :roll_eyes:

Allez, une dernière digression par rapport au forum : Essaie à l’occasion emulatorjs si tu n’as pas déjà essayé. Il tourne chez moi à côté de Home Assistant.

1 « J'aime »

Je note…
A l’époque j’étais un peu trop gourmand avec du PS2…

Mais la maladie a également touché, en plus des grenier et garage, le cerveau… :stuck_out_tongue_winking_eye:

Mais je note, ça donne plein d’idée, mais déjà HA sur ces machines… :call_me_hand:

Super tuto, je pense que ca peut servir a pas mal de monde et meme aux nouveaux pour tester sans trop se ruiner.

J’ai le meme style mais sur quelque chose de plus puissant NUC en core I5 :sweat_smile:.

Personnelement je prefere diviser mes containers sans plusieurs stacks pour une gestion plus simple sous portainer. Ensuite je n’utilise pas trop les volumes mais directerment dans des repertoires qui je sauvegarde ensuite a l’aide d’un container « Duplicati » (en local sur la freebox et sur mon google drive–> parano time ! :rofl:)

Un autre container est pas pour pouvoir modifier les fichier c’est open code-server :yum:. Mais bon a force de rajouter des container ca risque de mettre a genoux la petite bete.

Et comme toi un swag couplé a un authelia permet une securisation optimum de tout ca !

1 « J'aime »

Salut à tous,
Je trouve la box x96mini (soc s905w) pas très puissante, les box à base de s905x3 sont beaucoup plus puissantes pour quelques euros de plus.
Pour les images d’Armbian, il a ce github. Il est plus orienté box tv que le site Armbian.
En tout cas ça fait des bonnes box pour HA, pas cher et en fanless.

1 « J'aime »

Je suis d’accord ! Ça sera sans doute ma prochaine acquisition :smiley: mais je fais pour l’instant avec ce qui traîne chez moi. Je louche depuis quelques temps sur ces modèles de SoC, mais je n’en ai pas parlé car pas encore eu l’occasion de les tester. Si tu as la référence d’un modèle à conseiller, je suis preneur : J’ai bientôt fini le recyclage de tous mes vieux boîtiers…
Encore un mot sur un usage possible pour ces box : c’est de monter facilement, rapidement (grace à docker) et pour pas cher un mini-lab. C’est d’ailleurs la raison pour laquelle j’utilise Zigbee2MQTT au lieu de DeConz ou ZHA : ça me permet de piloter tous mes périphériques sur des instances différentes de HA, voire depuis d’autres solutions domotiques pour tests.

Salut Pat,
J’aime bien la x96max+, mais pas de wifi, ni de Bluetooth sous armbian. (pas de drivers, après dans mon application ça ne gêne pas).
Par contre la 4Go/64Go, un port eth 1Gb et ça c’est plutôt cool.
Je les utilise avec ha supervised, un module zigbee intégré et zigbee2mqtt.
La marque a peu d’importance, c’est le soc, la ram, l’emmc, l’eth et l’installation qui change tout.
En gros, une fois armbian installé et fonctionnel sur clé usb, j’édite le .dtb et je désactive tout le matériel qui serre a rien. wifi, bluetooth, cec, carte son, etc…
Désactivation de tout les services inutiles, l’ipV6 et encore 2, 3 tweaks.
Puis installation sur l’emmc, et la, tu un serveur armbian qui démarre en moins de 10s.
Puis installation de docker et HA.
C’est vraiment très performant et stable, rien a envier à mon NUC ou au raspi.
L’installation n’est pas facile, mais ça vaut le coup.
S’ils y en a qui veulent se lancer, je peux les aider. :wink:

Merci beaucoup, @Orefie, pour ton retour d’expérience.
Du coup, j’ai hâte d’essayer un s905x3 :slight_smile:
Aucune importance pour moi si le WiFi ou le BT n’est pas pris en charge. En effet, je n’en ai pas besoin non plus par rapport à l’utilisation que j’en ferai.

Concernant les performances et la stabilité, j’avais déjà été très agréablement surpris par les s905w, donc je suis sûr que ça le fera encore mieux avec un SoC gen3.

Quand tu parles d’éditer le dtb pour désactiver le matériel non utilisé, tu passes par le menu « Dtc » d’armbian-config ou tu utilises un autre moyen ?
Je ne l’ai encore jamais fait, mais ça me semble en effet bien utile pour optimiser le serveur et tu m’as bien donné envie de m’y mettre.

Bonjour
Je viens de mettre la main sur un S912 3Go/64Go…
J’ai chargé bulleyes (j’ai utilisé un autre dtb, a priori plus light)…
Faut que je trouve un écran dans le cafarnaum pour démarre et configurer…
Mais cette histoire me donne plein d’idée… :wave:

1 « J'aime »

Pour decompiler le .dtb (sous linux)
Installer
apt-get install device-tree-compiler
Utilisation
decompile
dtc -I dtb -O dts mon_fichier.dtb -o /tmp/sortie.dts
Compile
dtc -I dts -O dtb -f mon_fichier.dts -o /tmp/sortie.dtb

Après rien n’empêche d’utiliser notepad++ pour les modifs du .dts :wink:

Pour déboguer, tu peux te connecter sur l’uart de la cm avec un convertisseur uart/usb et utiliser putty.
Mais il faut démonter la box et jouer de fer a souder. C’est un bon moyen de voir ce qui se passe avant le lancement d’armbian.

1 « J'aime »

En simplifiant, le fichier .dtb est juste « la déclaration du matériel » un peu comme un bios sur un pc.
Mais en version plus compliqué :zipper_mouth_face:

Sans écran tu peux utiliser WinSCP et Putty mais ça fait moins barbu geek. :rofl:

Je prends les devant avant les éventuels problèmes de box brickées. :face_exhaling:
Les soc Amlogic sont toujours récupérables.
En flashant une rom android d’origine avec USB Burning Tool et un cable usb mâle/mâle.
et la deux cas :
elle est reconnue par le pc et donc un appui sur le bouton reset pour la mettre en mode « flash »
elle n’est pas reconnu par le pc et la il faut trouver les « reset pin » sur la cm pour rentrer en mode flash.
/!\ Ces flashages se font sans brancher l’alim de la box.

:wave:

Je l’avais déjà brické… :innocent:
Mais rien de grave !

Bonjour à tous,
Bravo pour votre travail c’est vraiment une des meilleures idées moi qui cherchait depuis longtemps sur quel machine faire tourné HA, le faite de recyclé nos veille box TV pour notre domotique c’est génial. J’ai 2 box abox tv (chinoise) une A1 et une A4 soc s905w aussi par contre je suis sous Vmware sous win 10, moi et Linux c’est dur donc je voulais essayer armbian et ma question est savoir si on pourrait install hassos(hass. io) comme un generic x86/x64 que cette box soit dédié à HA car je connais rien au container. Merci j’étudie de mon côté mais un peu d’aide serait génial

Bonjour @Ramses,

A ma connaissance, non, tu ne pourras pas installer HassOS sur ce type de boîtier. Ce qui s’en rapprochera le plus sera la version HA Supervised, mais comme déjà évoqué plusieurs fois pus haut, c’est le type d’installation qui demandera le plus de rigueur. L’installation Supervised impose que la box soit dédiée à Home Assistant. Dans les très grandes lignes, il te faudra :

  1. Installer un armbian bullseye (équivalent de debian 11) sur ta box.
  2. Suivre la procédure d’installation de Home Assistant Supervised sur Linux
  3. Procéder à quelques configurations spécifiques pour que tout tourne bien.
  • Pour le premier point, ça consiste en gros à graver une image d’armbian adaptée à ta box sur une carte SD, l’insérer dans le lecteur de la box et démarrer la box. Comme précisé par Orefie, pour booter depuis la carte SD, il est souvent nécessaire de maintenir un bouton de reinitialisation souvent caché au fond du jack audio. En l’absence de lecteur de carte SD, j’ai déjà eu des succès en utilisant des clés USB. Sinon, la passage par un câble USB A mâle-mâle et l’outil USB Burning Tool sera obligatoire.

  • Le second point est très bien documenté sur le site officiel. De plus, cette publication, bien que créée à l’origine pour des RPi, décrit toutes les étapes nécessaires en français.
    ✅ Installer Home Assistant sur RPi (ou autres SBC), Debian (Méthode Docker & Supervisor)
    Toutes les commandes à lancer sont indiquées. Il n’y a donc pas besoin d’être un expert en Linux.

  • Pour la dernière partie, de mémoire, seul l’ajout deux paramètres dans un fichier de configuration (/boot/armbianEnv.txt) avait été indispensable pour moi.

Si tu te sens de te lancer dans l’aventure, je pourrai aider et je suis sûr que tu pourras compter sur le support d’autres membres. Il faudra procéder étape par étape (la première étant bien entendu l’installation de armbian) et juste faire preuve d’un peu de persévérance.
Si tu dis ne pas être copain avec Linux, tu peux justement voir ça comme une opportunité de réconciliation. :wink:

Pour ma part, ces projets m’ont apporté beaucoup. (docker, nginx, authelia, sgbd, mqtt, arduino, openmediavault, …etc, etc…

Pour information, et donner une idée de ce qu’il est possible de faire, voici la liste des containers lancés actuellement sur mon X96 mini (SoC s905w avec 2GB de ram et 16GB d’emmc). L’ensemble est installé sur l’emmc.
Je tourne depuis plusieurs mois sans problème comme ça.


C’est la raison pour laquelle je préfère la version Container de Home Assistant. ça me permet d’installer d’autres choses sur la même machine, et surtout de beaucoup apprendre.
J’utilise en parallèle une autre box TV en guise de mini-labo (TUREWELL T9 2GB ram / 16GB rom à base de Rockchip rk3318) sur laquelle j’ai installé OpenMediaVault, Nextcloud, Jellyfin, duplicati et d’autres trucs pour test via docker.

Bonsoir Pat,
Merci pour ta réponse rapide, côté armbian je pense que ça va aller en suivant les docs et tuto j’ai déjà pas mal regardé de ce côté je vais test ça dans la semaine et vous tiendrais informé. Je vais regarder côté container est me renseigner comment ça fonctionne. Merci beaucoup

Bonsoir
Installer supervided est tres simple et simplifie la gestion des containers et l’utilisation de hacs.
je vous renvoies au blog de Peyanski.

Vous pouvez toujours ajouter d’autre application :
j’ai utilisé HA sous OMV avec le docker et le portainer d’OMV sur une x96 max+. Cela me permet de stocker en réseau les backup de mon PC) Vous aurez des erreurs affichées sur HA mais vous pouvez les ignorer.
J’ai résolu le problème de samba qui ne peut pas être en même temps sur HA et OMV en accedant à HA en FTP

1 « J'aime »

Bonjour,
Et merci pour avoir pour avoir relancé l’intérêt sur ces TV-Box qu’on avait oublié ;=))
J’ai eu envie de réutiliser ma TV-Box « x96 Mini », identique à celle présentée, mais malheureusement elle est « brickée » et et elle n’est pas reconnue par le pc !

Pouvez-vous m’aider pour trouver les « reset pins » sur la carte mère et entrer en mode flash ?

Je signale que j’ai tenté x fois la solution avec USB Burning Tool et le cure-dent dans la fiche AV, sans succès, l’appareil n’est pas détecté et pourtant la led bleu s’allume !
Ricardo

Bonjour @Ric,

J’avoue n’avoir jamais réussi à bricker une x96 mini :slight_smile:
J’ai trouvé ce blog qui pourra cependant sans doute t’aider :

S’il peut exister plein de versions matérielles différentes du même boitier, cet article explique en détail la démarche utilisée pour trouver une pin de l’emmc à court-circuiter pour démarrer en mode « flashage ». Si tu as beaucoup de chance, alors, tu auras le même modèle que l’auteur, qui laisse une photo de la carte avec la broche qui a fonctionné pour lui.