Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Seagate annonce son nouveau disque dur pour NAS IronWolf Pro 22 To

ironwolf 22 300x225 - Seagate annonce son nouveau disque dur pour NAS IronWolf Pro 22 ToSeagate vient d’annoncer l’arrivée d’un nouveau disque dur pour NAS : IronWolf Pro 22 To. Il est basé sur la technologie CMR, remplit d’Helium et le fabricant annonce des débits pouvant atteindre 285 Mo/s. Son prix public : 595€… Seagate a également profité de l’occasion pour annoncer un nouveau partenariat avec le constructeur de NAS QNAP. Seagate IronWolf Pro 22 To et nouveau partenariat Lors de la conférence NAB 2023, Seagate a fait 2 annonces. La première, c’est l’arrivée d’un […]

Comment améliorer un son en live avec master_me ?

Je vous en parlais hier, le mastering audio est une étape cruciale pour avoir un son impeccable. Le processus consiste à ajuster les fréquences, améliorer l’aspect stéréo, retirer certains parasites sonores, etc. Cependant, il peut être vraiment galère d’obtenir un son propre et optimisé pour tous les systèmes de diffusion.

C’est là que l’outil master me entre en jeu : Master_me est un plug-in audio gratuit et open source pour le traitement automatique de l’audio en direct. Hé oui, il n’est pas destiné à automatiser le mastering de musique déjà produite contrairement à Matchering 2 présenté hier. Il est plutôt conçu pour améliorer le son en direct. Vous l’aurez compris, c’est destiné aux streamers, aux podcasteurs et aux stations de radio en ligne qui cherchent à améliorer leur son.

Conçu par l’ingénieur berlinois Klaus Scheuermann, master me optimise le son en temps réel et prend en charge les niveaux sonores principaux avec une série d’effets qui ont été clonés à partir de ceux du studio de mastering de Scheuermann à Berlin.

Utilisation de Master_me pour améliorer un son en live

L’outil est disponible en LV2, VST2, VST3 et formats CLAP pour Linux, macOS et Windows, ainsi que pour les systèmes JACK en standalone. Il peut être compilé pour une grande variété de plates-formes cibles.

Je l’ai testé un peu avec OBS et ça fait vachement bien le taf. Par contre, ça consomme un peu trop de ressources sur mon vieil ordinateur pour que je le laisse en permanence et au bout d’un moment, ça se met à déconner. A voir dans d’autres outils notamment sur des sessions live avec Ableton par exemple.

Réglage des paramètres audio avec Master_me

L’interface utilisateur de master me est rapide à prendre en main. Le mode « facile » est une interface graphique minimaliste ce qui rend l’outil facile à utiliser pour tous les créateurs de contenu. En choisissant un préréglage et en réglant le niveau sonore souhaité, le niveau sonore est automatiquement ajusté par le plug-in.

Et si vous voulez vraiment toucher aux réglages, le mode expert vous permettra d’activer, régler ou couper certains effets (compresseur, limiteur, gate, eq, leveler…etc)

C’est open source et dispo ici.

Using ShareGate PowerShell to Download SharePoint Content

You might be surprised by the title of this post. Isn’t our goal to get everyone’s content *into* SharePoint? Usually that’s the case, for sure.

But many times, in the course of a migration from an older (usually on premises) version of SharePoint, we identify whole sites or branches of subsites that simply don’t have any real purpose anymore. In some cases, we migrate the content into SharePoint Online, maybe into a site called Archive or similar. But other times we just want to save the content somewhere *in case* someone needs it. Which approach you take may hinge on your organizational culture, what storage mechanisms you have available, and the relative importance of the content – among many other things.

I’ve worked on a PowerShell script for this recently and used it for several different clients. With it, I can point at the top level of a branch of sites – maybe something like /sites/HR or /departments/Finance, and the script will download the content from that site, and recursively from all its subsites, etc. into a network location of my choosing, say C:\ or Z:\Archive.

I’ve run this script with both SharePoint 2010 and SharePoint 2016 as the source version, so I expect it will work for you in most cases.

The script is pretty straightforward because I use ShareGate’s PowerShell module to do all the heavy lifting: yet another reason why ShareGate rocks! If you have ShareGate installed on your machine, you have their PowerShell module as well, even if you didn’t realize it.

Note the ShareGate module requires you to be running PowerShell 5.x, NOT the more current PowerShell 7.x.

The script comes in two pieces:

  • downloadSite.ps1 – The script I actually run, after setting three variables appropriately.
  • downloadSiteFunctions.psm1 – A module with functions I call above. If you want to do recursion, you’ll need functions of some sort, and using a separate module gives some flexibility for reuse.

The parameter settings I show in the downloadSite.ps1 below were what I wanted for a particular scenario. When you read through downloadSiteFunctions.psm1 below, you’ll see what the impact of those settings is.

Import-Module -Name ShareGate # Requires ShareGate to be installed on the machine
Import-Module "./PowerShell/downloadSiteFunctions.psm1" -Force

# Setup
$sourceSiteName = "Name for the downloaded folder"
$sourceSiteUrl = "https://FarmOrTenantName/siteName/"

# The downloads will end up in a folder here named $sourceSiteName
$destTop = "Z:\" # Be sure to include a trailing backslash

# Any list or library in this array will be excluded from the downloads
$exclusionLists = @(
    "Content and Structure Reports",
    "Master Page Gallery",
    "Reusable Content",
    "Style Library",
    "Web Part Gallery",
    "Workflow Tasks",
    "Microfeed",
    "Site Pages",
    "Site Assets"
)

# Process root web
#   Delete existing folder - we assume we want to start from scratch
Remove-Item `
    -Path "$($destTop)$($sourceSiteName)" `
    -Recurse `
    -Force

#   Create new top-level folder
$top = New-Item `
    -Path "$($destTop)$($sourceSiteName)" `
    -ItemType Directory -Force

#   Export lists
Export-SympLists `
    -ParentFolder "$($top.FullName)" `
    -WebUrl $sourceSiteUrl `
    -Versions $false `
    -ExclusionLists $exclusionLists `
    -KeepEmpty $false `
    -KeepLists $true

# Process subwebs
Get-SympSubwebs `
    -ParentFolder "$($top.FullName)" `
    -WebUrl $sourceSiteUrl `
    -Versions $false `
    -ExclusionLists $exclusionLists `
    -KeepEmpty $false `
    -KeepLists $true

The downloadSiteFunctions.psm1 file might seem complicated, but it’s just two functions:

  • Export-SympLists – Exports all list/library contents from a web using ShareGate PowerShell functions. The ShareGate function Export-List is a workhorse. It exports ALL lists and libraries to folders. Even better, it creates an Excel file containing the inventory with all the metadata as well as the Document (libraries) or Attachments (lists).
  • Get-SympSubwebs – Gets the subwebs of any web and exports their list contents using ShareGate PowerShell functions. By calling itself as a last step, the function enables recursion. Essentially, it “walks” the subsite (web) topology from the current site (web) on down.
<#
.DESCRIPTION
   Exports list contents from a web using ShareGate PowerShell functions
.EXAMPLE
   Export-SympLists -ParentFolder $parentFolder -WebUrl $webUrl -Versions $versions
#>
function Export-SympLists {
   [CmdletBinding()]
   [Alias()]
   [OutputType([int])]
   Param
   (
      # Parent Folder
      [string]
      $ParentFolder,
 
      # Web URL
      [string]
      $WebUrl,
 
      # Versions - Should we download versions (or only the latest version) $true = all versions
      [boolean]
      $Versions = $false,
 
      # ExclusionLists - Array of list names to *skip* in the download
      [array]
      $ExclusionLists = @(),

      # KeepEmpty - Will create a folder for every library even if it is empty.
      # Setting this to $false will delete the empty folders.
      [boolean]
      $KeepEmpty = $false,

      # KeepLists - Will create a folder for every list even if it is empty.
      # Setting this to $true will keep all lists, regardless of their number of items.
      [boolean]
      $KeepLists = $false
 
   )
  
   Begin {
  
      Write-Host "Processing web $($WebUrl)"
 
   }
   Process {
  
      # ShareGate's Connect-Site
      $srcSite = Connect-Site $WebUrl

      # ShareGate's Get-List
      $srcLists = Get-List -Site $srcSite

      # Filter out the exclusionList items, if any
      foreach ($exclusionList in $ExclusionLists) {
         $newLists = $srcLists | Where-Object { $_.Title -ne $exclusionList } 
         $srcLists = $newLists
      }

      # If there's something to download, do it.
      if ($srcLists.length -gt 0) {
         # If we want to keep versions 
         if ($Versions) {
            $result = Export-List -List $srcLists -DestinationFolder "$($ParentFolder)"
         }
         else {
            # Else we don't want to keep versions 
            $result = Export-List -List $srcLists -DestinationFolder "$($ParentFolder)" -NoVersionHistory 
         }
      }

      # If #KeepLists, then keep all lists
      if ($KeepLists) {
         $srcLists = $srcLists | Where-Object { $_.RootFolder -inotmatch "/Lists/" }
      }

      # If !$KeepEmpty, delete the folders which have no content
      if (!$KeepEmpty) {
         foreach ($list in $srcLists) {
            $listPath = "$($ParentFolder)\$($list.Title)"
            $documents = Get-Item -Path "$($listPath)\Documents\*" -ErrorAction Ignore
            if ($documents.length -eq 0) {
               Remove-Item -Path $listPath -Force -Confirm:$false -Recurse
            }
         }
      }

   }
   End {
   }
}
 
 
<#
 .DESCRIPTION
    Gets the subwebs of any web and exports their list contents using ShareGate PowerShell functions
 .EXAMPLE
    Get-SympSubwebs -ParentFolder $parentFolder -WebUrl $webUrl -Versions $versions 
 #>
function Get-SympSubwebs {
   [CmdletBinding()]
   [Alias()]
   [OutputType([int])]
   Param
   (
      # Parent Folder
      [string]
      $ParentFolder,
 
      # Web URL
      [string]
      $WebUrl,
 
      # Versions - Should we download versions (or only the latest version) $true = all versions
      [boolean]
      $Versions,
 
      # ExclusionLists - Array of list names to skip in the download
      [array]
      $ExclusionLists,

      # KeepEmpty - Will create a folder for every library even if it is empty.
      # Setting this to $false will delete the empty folders.
      [boolean]
      $KeepEmpty = $false,

      # KeepLists - Will create a folder for every list even if it is empty.
      # Setting this to $true will keep all lists, regardless of their number of items.
      [boolean]
      $KeepLists = $false

   )
  
   Begin {
  
      Write-Host "Getting subwebs of $($WebUrl)"
 
   }
   Process {
  
      # ShareGate's Connect-Site
      $siteConnection = Connect-Site $WebUrl

      # ShareGate's Get-Subsite
      $webs = Get-Subsite -Site $siteConnection
 
      # Process each web
      foreach ($web in $webs) {
 
         # Remove illegal characters in the web title
         $cleanTitle = $web.Title.Replace("#", "").Replace(":", " - ").Replace("/", "-").Replace("""", "'")

         # Variable for the web's folder - note the leading "_"
         $rootFolder = "$($ParentFolder)\_$($cleanTitle)" 
 
         # Create the web's folder
         $newFolder = New-Item -Path $rootFolder -ItemType Directory -Force

         # Download the lists/libraries with the provided parameters
         Export-SympLists -ParentFolder $rootFolder -WebUrl "$($web.Address)" -Versions $Versions -ExclusionLists $ExclusionLists -KeepEmpty $KeepEmpty -KeepLists $KeepLists

         # Get the web's subwebs - this is the recursion
         Get-SympSubwebs -ParentFolder $rootFolder -WebUrl "$($web.Address)" -Versions $Versions -ExclusionLists $ExclusionLists -KeepEmpty $KeepEmpty -KeepLists $KeepLists

      }
 
   }
   End {
   }
}
 

Here’s an example. Let’s say I set the variables in downloadSite.ps1 like so:

# Setup
$sourceSiteName = "Brazil"
$sourceSiteUrl = "https://myTenant/Brazil/"

# The downloads will end up in a folder here named $sourceSiteName
$destTop = "Z:\"

I end up with something like the following set of folders. Brazil is the top-level site, and it has 3 subsites: Facilities, Human Resources, and Recruitment. Notice that each subsite’s folder’s name starts with an underscore so we can easily understand the tree at a glance.

Within each subsite’s folder, all the lists and libraries within it (if requested) are represented as folders.

Each library’s folder contains the Excel file with the metadata, and a subfolder containing the documents themselves.

Each list’s folder contains the Excel file with the metadata, and a subfolder containing the attachments, if any.

This script gives me a good scaffolding and some options I can use to get content out of SharePoint in an organized and broad way. I’ve already used it with two clients, and I firmly expect I’ll use it again.

Installation de Frigate dans un LXC Proxmox

Installation de Frigate dans un LXC Proxmox

Aujourd'hui, on va parler d'une des raison qui m'a fait passer de ESXi à Proxmox, que vous avez pu découvrir dans l'article suivant :

Migration de ESXI à Proxmox
Aujourd’hui nous allons parler hyperviseur et virtualisation. Les deux solutions d’hyperviseur populaires sont VMware ESXi et Proxmox VE . Ces 2 plateformes de virtualisation permettent d’exécuter des machines virtuelles ou des conteneurs. Dans le monde professionnel, VMware est le roi de la virtua…
Installation de Frigate dans un LXC ProxmoxDomoPiHexamus
Installation de Frigate dans un LXC Proxmox

Il s'agit d'un conteneur, Frigate, un NVR (Network Video Recorder) qui possède une IA (Intelligence Artificielle) capable d'identifier les personnes et objets sur des flux vidéos. Cela permet d'améliorer son système de vidéosurveillance et d'éviter de recevoir des alertes intempestives lorsqu'une feuille a bougé ou qu'un nuage passe.

Installation de Frigate dans un LXC Proxmox

Pour cette analyse, Frigate a besoin de disposer de ressources, ce qu'il est possible de faire avec le CPU, mais ceci est très gourmand. Le développement a donc été réalisé autour du Google Coral, qui a été spécifiquement étudié pour procéder à de l'analyse vidéo. Celui-ci est donné pour être aussi performant que des CPU à 2000€, mais pour seulement 60€ ! Pour ma part, j'ai acheté la version USB d'occasion, celui-ci étant très compliqué à trouver actuellement.

Installation de Frigate dans un LXC Proxmox

Pour déployer Frigate, nous n'allons pas utiliser Docker directement (je vous entends "quoi un conteneur mais pas de Docker ?") mais un LXC dans Proxmox.
Une petite définition de LXC pour essayer de mieux comprendre ce que c'est :

LXC est l'acronyme de l'anglicisme LinuX Containers, il s'agit d'un système de virtualisation, utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ».

Mais alors Docker, machine virtuelle et LXC sont tous trois de la virtualisation, mais quelles sont leurs différences ?

  • Docker permet de virtualiser des service. Chaque conteneur Docker correspond à un service.
  • Un conteneur LXC est un environnement virtuel qui ne possède pas de partie physique émulée.
  • Une machine virtuelle est une émulation d'une machine physique à laquelle des ressource physique sont attribuées.

Je sens que beaucoup viennent de bondir de leur chaise ! Alors oui, j'ai extrêmement vulgarisé cela. Pour moi, je place les LXC entre un conteneur Docker et une machine virtuelle.

Bon nous avons une explication sur les LXC et nous savons que nous voulons utiliser le conteneur Frigate. On va pouvoir se lancer dans le vif du sujet.
Alors on se connecte à son interface Proxmox pour prendre la direction du stockage et télécharger le Template de notre conteneur, pour lequel nous allons choisir Debian 11 Standard.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant on va pouvoir créer notre LXC, à l'aide d'un clic droit sur notre serveur, on peut choisir Create CT. Il vous suffit de donner un nom au conteneur et de choisir le mot de passe pour votre utilisateur root du LXC. Pour le reste, rien de spécial, à vous d'ajuster les valeurs en fonction de vos besoins, envies et surtout du hardware.

Attention ! Ne pas cocher "Démarrer après création" à la fin.
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Avant le lancement du LXC, nous allons apporter quelques modifications, on commence par ajouter une particularité pour ne pas avoir de souci de SSH sous Debian 11.

Installation de Frigate dans un LXC Proxmox

Nous allons ensuite modifier le fichier de configuration pour permettre au LXC d'avoir accès au bus USB (adapter le numéro de bus au besoin) et au IGPU (voici un article pour mieux comprendre le IGPU). Pour cela, utilisez la commande suivante en SSH nano /etc/pve/lxc/ID.conf (en indiquant l'ID du conteneur que vous avez choisi).

Voici le contenu de mon fichier de configuration après ajout des dernières lignes.

arch: amd64
cores: 2
features: nesting=1
hostname: frigate
memory: 4096
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=AA:73:AE:CB:75:D9,ip=dhcp,ip6=dhcp,type=veth
ostype: debian
rootfs: local-lvm:vm-100-disk-0,size=16G
swap: 512
onboot: 1
unprivileged: 0
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.entry: /dev/bus/usb/002 dev/bus/usb/002 none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

Nous allons en profiter pour ajouter un montage de disque, pour permettre d'avoir la configuration stockée sur le NUC et la sauvegarde des médias sur le NAS Synology où j'ai plus d'espace de stockage.
Sur le NAS, il faut ajouter configurer le dossier partagé en NFS, je vous ai mis une capture d'écran de ma configuration juste en dessous.
Retournons sur Proxmox pour ajouter le stockage NFS dans le datacenter, où il vous faudra renseigner un nom pour le montage, l'adresse IP du serveur, le chemin d'accès au dossier (il est possible de rajouter des sous dossiers) et en contenu choisir Conteneur.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant, direction le LXC pour rajouter le Point de montage comme Ressources. Il vous faudra sélectionner le Stockage monté précédemment, dans mon cas NVR, et choisir la taille du disque ainsi que le chemin de montage sur le LXC. Vous pourrez vérifier le bon montage une fois le conteneur LXC démarré.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Le moment de démarrer le conteneur LXC est enfin arrivé ! Cela peut être long au premier démarrage, il faut avoir un peu de patience.

Comme sur chaque nouvelle installation, je vous recommande de commencer par mettre à jour le système avec les commandes apt-get update && apt-get upgrade.

Frigate est disponible en tant que conteneur Docker, nous allons donc installer Docker et pour cela je vous renvoie vers l'article qui en parle.

Installation de Frigate dans un LXC Proxmox

Suite à cela, nous allons installer Docker compose ou Portainer, dans mon cas j'utilise Portainer.

On va pouvoir vraiment attaquer Frigate avec la création de sa stack. Voici le contenu, à adapter selon vos besoins.

version: "3.6"
services:
  frigate:
      container_name: frigate
      restart: unless-stopped
      privileged: true
      image: blakeblackshear/frigate:stable-amd64
      volumes:
        - /dev/bus/usb:/dev/bus/usb
        - /etc/localtime:/etc/localtime:ro
        - volume-frigate-config:/config
        - /frigate/media:/media/frigate
#        - /ruser/0:/tmp/cache
#        - <path_to_directory_for_recordings>:/media/frigate/recordings
        - type: tmpfs # 1GB of memory, reduces SSD/SD Card wear
          target: /tmp/cache
          tmpfs:
            size: 1000000000
      ports:
        - 5000:5000
        - 1935:1935 # RTMP feeds
      healthcheck:
        test: ["CMD", "wget" , "-q", "-O-", "http://localhost:5000"]
        interval: 30s
        timeout: 10s
        retries: 5
        start_period: 3mfr

volumes:
  volume-frigate-config:
      driver: local

Le conteneur ne devrait pas réussir à démarrer car il manque le fichier de configuration. Dans le volume config, créer un fichier config.yml.

Voici la page de la documentation officielle pour vous aider à remplir ce fichier de configuration, et vous trouverez ci-dessous l'exemple de base :

mqtt:
  host: mqtt.server.com
cameras:
  back:
    ffmpeg:
      inputs:
        - path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
          roles:
            - detect
            - rtmp
    detect:
      width: 1280
      height: 720

Une fois le fichier renseigné, vous pouvez relancer le conteneur Docker et accéder à l'interface depuis votre navigateur sur l'adresse http://<IP.DU.LXC>:5000. Vous arriverez directement sur le Dashboard (sur lequel il n'y a pas de mot de passe).
Voilà à quoi il ressemble chez moi après avoir ajouté quelques caméras :

Installation de Frigate dans un LXC Proxmox

Conclusion

J'espère que cette découverte de la mise en place l'outil Frigate vous a plu, et je pense rédiger un second article pour vous le présenter en détails et voir ensemble comme le configurer et l'utiliser.

Si vous avez des questions sur l'installation de Frigate, ou même sur sa configuration ou son utilisation, n'hésitez pas à laisser un commentaire ou à venir nous retrouver sur le groupe Telegram de la communauté.

Passerelle ZWave – Ethernet (détournement de la ZiGate-Ethernet part 2)

Nous l’avons vu dans l’article précédent, la ZiGate-Ethernet est un « couteau suisse » de la domotique. Initialement destiné à être une passerelle PiZiGate Réseau, il donne la possibilité d’être compatible aussi avec ses concurrents. Par exemple, vous pouvez désormais créer une RaspBee Ethernet si vous le souhaitez.

Toujours en gardant le firmware par défaut, nous allons voir comment créer une passerelle ZWave / Ethernet.

Vote :

 

Utilisation de OpenZWave

Pour résumé, le ZWave est un protocole radio qui utilise la fréquence 868Mhz (en Europe) dédié à la domotique. Il y a quelques temps, il semblait être le principal canal de communication pour la domotique chez les particuliers mais l’évolution du ZigBee a freiné son déploiement.

Pourtant réputé fiable, il n’a pas su prendre le tournant pour s’imposer principalement à cause des tarifs élevés des appareils, son évolution lente et sa licence contraignante. Cependant, il reste encore très répandu et beaucoup de maisons sont encore pilotés avec les dispositifs ZWave.

Côté matériel, il existe des clefs USB mais aussi des modules pour Raspberry Pi. Dans notre cas, nous allons utilisé le module Razberry pour RPI piloté par la librairie OpenZWave.

Razberry_module

J’utilise une vieille version du Razberry mais le principe est le même pour les nouvelles versions.

Pour piloter le module, le principe est toujours le même, le contrôleur ZWave reçoit et envoie les commandes par l’intermédiaire d’un port série (UART TTL).

Cependant, comme il n’existe pas à ma connaissance de passerelle ZWave Ethernet, les outils domotiques n’ont pas été développé pour permette d’attaquer une adresse IP et port TCP.

C’est pour cette raison qu’il est nécessaire de faire des modifications côté box domotique.

Paramétrage

Côté ZiGate-Ethernet

Par défaut, tout est paramétré correctement sur la ZiGate-Ethernet.

Il suffit juste de brancher correctement le module ZWave sur les GPIOs comme suit : (Comme sur un Raspberry Pi)

ZiGate-Ethernet_ZWave

Ensuite, vous pourrez alimenter, brancher sur le réseau et suivre le tutoriel pour le paramétrage du réseau.

Côté Box domotique

C’est dans cette partie que cela se corse. En effet, que ce soit sur Jeedom ou domoticz, il n’y a pas d’options pour utiliser le ZWave au travers d’une adresse IP. Seul le paramétrage d’un port série est possible.

L’objectif va être alors de créer un port série virtuel qui redirigera le trafic vers l’adresse IP et le port de la ZiGate-Ethernet.

Connectez-vous sur votre box domotique (sous linux) en ligne de commande:

Installation de socat

socat est un outil permettant de manipuler des sockets. Dans notre cas, il permet de faire le lien entre des sockets et un port série. Tous les flux (de manière bidirectionnelle) entre le port série virtuel et un port TCP seront alors relayés.

$ sudo apt-get install socat

Une fois installé, il suffit de lancer la commande suivante :

$ (sudo socat pty,link=/dev/ttyUSB2,user=pi,group=dialout,mode=660,ignoreof,waitslave tcp:<IP_de_la_ZiGate-Ethernet>:9999) &

/dev/ttyUSB2 : doit être un port non utilisé
<IP_de_la_ZiGate-Ethernet>correspond à l’adresse IP de la ZiGate-Ethernet

Une fois la commande lancée, il suffit d’aller sur Jeedom ou Domoticz par exemple.

Jeedom

Pour Jeedom, il faut installer le plugin Z-Wave.

zwave

Ensuite, il faut aller dans le panneau : Configuration

Jeedom_configuration

Sélectionner le port Z-Wave (celui que vous aurez créé) puis sauvegarder

razberry_jeedom

Il suffit ensuite de procéder comme pour une clef ou module classique.

Domoticz

Dans le cas de domoticz, il faut aller dans le menu Configuration –> Matériel puis sélectionner le type openZWave USB

domoticz_openzwave

Enfin sélectionner le port série /dev/ttyUSB2 (port virtuel de socat) puis cliquer sur Ajouter

domoticz_razberry

Une fois ajouté, il est possible d’aller dans la configuration et observer que la communication se fait.

Conclusion

Bon bin voilà, après la gestion des modules ZigBee, il est désormais possible de piloter un contrôleur ZWave à travers Ethernet.

L’installation côté ZiGate-Ethernet est assez simple. Seule une petite modification est nécessaire sur les plateformes domotiques. Peut-être que les différents développeurs feront une petite modification pour permettre l’accès au ZWave directement par TCP/IP 😉

La ZiGate-Ethernet n’a pas encore délivrée tous ses secrets. Dans un prochain article, je pense que je ferai un tutoriel pour une intégration ESPHome.

A bientôt !

Détournement ZiGate-Ethernet / part 1 – Coordinateurs ZigBee

On me demande souvent de faire plus d’articles sur les détournements de produits ou hacks  électroniques/domotiques. En effet, c’est toujours sympa de voir qu’un objet peut avoir d’autres fonctions que celle pour laquelle il a été prévu.

Cette fois-ci, c’est encore plus particulier car c’est une série de  « détournements » d’un produit que j’ai moi-même conçu. (Du coup, je ne sais pas si on peut appeler ça un détournement ;))

Vote :

 

Présentation ZiGate-Ethernet

La ZiGate-Ethernet est un produit fraichement sorti qui permet de transformer une PiZiGate en ZiGate sur Ethernet ou WiFi.

Pour résumé, la ZiGate-Ethernet est née d’une forte demande de la communauté de gestion du protocole ZigBee à travers un câble réseau. En effet, la praticité de la ZiGate-WiFi (possibilité de positionner son contrôleur ZigBee stratégiquement) a beaucoup plu.

Cependant, certains utilisateurs cherchaient plus de fiabilité et une réactivité à toute épreuve. En effet, dans certains cas, le WiFi et le ZigBee ne font pas forcément bon ménage. (Pensez à changer de canal WiFi ou ZigBee si vous avez des perturbations).

Du coup, afin de mêler tous les avantages, j’ai décidé de suivre les conseils de la communauté et j’ai développé la ZiGate-Ethernet. ZiGate-ethernet-definition

Description de la ZiGate-Ethernet

Elle est munie d’un ESP32 avec 16 Mo de Flash qui pilote la partie Ethernet avec un LAN8720 (très utilisé sur les anciens modèles de Raspberry Pi).

L’objectif a été d’utiliser le même « form factor » que le Raspberry Pi 4 B afin de permettre d’utiliser les boitiers compatibles.

De plus, je me suis dit qu’utiliser les mêmes fonctions (alimentation, masse et IOs) que le Raspberry Pi serait une bonne idée. Du coup, le GPIO de la ZiGate-Ethernet correspond à celui du RPi. GPIO_zigate_ethernet Cette configuration permet donc d’utiliser/recycler une PiZiGate pour la transformer en ZiGate-Ethernet.

Pour avoir plus d’informations détaillés, vous pouvez aller sur les pages suivantes :

https://zigate.fr/documentation/descriptif-de-la-zigate-ethernet/

Firmware d’origine : https://github.com/fairecasoimeme/ZiGate-Ethernet

Maintenant que vous avez une idée de comment fonctionne une ZiGate-Ethernet voici comment la « détourner ».

Utilisation avec Deconz / Elelabs / TI

Le premier « détournement » est bien entendu de tester les produits concurrents à la ZiGate. Du coup, je me suis procuré 3 produits différents (technologies différentes) pour les tester.

  • le Raspbee I (Deconz)
  • le ELR023 (Elelabs – EZSP)
  • le CC2652P2 (TI – Z-stack3.x)

pizigate_elelabs_deconz_cod.m ZiGate-Ethernet-Raspbee ZiGate-Ethernet-ELR023 ZiGate-Ethernet-CC2652P2 ZiGate-Ethernet-PiZigate

L’objectif est d’utiliser le firmware d’origine de la ZiGate-Ethernet pour voir si cela fonctionne et rendre accessible par Ethernet une RaspBee par exemple. (la RaspBee 2 n’a pas été testée mais il n’y a pas de raison que cela ne fonctionne pas).

Pour effectuer les tests, j’ai utilisé 2 plateformes domotiques : Jeedom et Home-Assistant.

En effet, c’est deux plateformes utilisent la technologie Zigpy permettant de rendre compatible les technologies ZigBee.

Rappel : L’objectif n’est pas de donner un avis sur les plateformes mais juste valider le fonctionnement du détournement.

Avant de passer à l’étape suivante, il faut que vous ayez paramétré votre ZiGate-Ethernet pour qu’elle soit accessible à partir d’une adresse IP. Du coup, suivez le tutoriel prévu.

Paramétrage Jeedom

Pour piloter la ZiGate-Ethernet, il faut installer le plugin ZigBee  plugin_zigbee Une fois installé, il faut utiliser les paramétrages suivant selon votre module zigbee.

NB : sur les captures d’écrans, c’est le « Contrôleur 2 » car sur le « Contrôleur 1 », il y a bien entendu une ZiGate. 😉

NB2 : l’adresse IP : 192.168.0.45 correspond à l’adresse IP de ma ZiGate-Ethernet. Bien entendu, il faut que vous mettiez votre propre adresse IP.

CC2652P2 RPi serial

Jeedom_config_cc2652P2

Deconz RaspBee I ou II

jeedom_raspbee_config

ELR023 elelabs

Jeedom_elr023_config Une fois paramétré, il suffit de relancer le daemon et vous verrez dans les logs le dialogue de Jeedom avec votre coordinateur ZigBee.

Ensuite procédez, comme vous avez l’habitude, pour piloter vos appareils ZigBee.

Paramétrage HomeAssistant

Pour Home-Assistant, il faut installer l’intégration ZHA zha_nouvelle_integration Ensuite, il faut rentrer les paramètres manuels zha_enter_manually Puis sélectionner le type radio (choisir le bon) ZHA_choose_radio_type Selon le type de radio, la configuration diffère mais un seul paramètre est à changer : le périphérique série ZHA_parametrage_port Comme sur la capture d’écran et peu importe le type radio, il faut rentrer dans le chemin du port série : socket://<IP_de_la_ZiGate-EThernet>:9999

Ensuite, il suffit de cliquer sur « soumettre » pour valider l’installation.

Une fois, effectué, vous aurez l’intégration ZHA présente sur votre dashboard et vous n’aurez plus qu’à procéder normalement pour gérer vos appareils ZigBee.

Spécificités selon les modules ZigBee

Pour faire fonctionner les différentes plateformes, il suffit d’utiliser le firmware de la ZiGate-Ethernet.

Ce firmware a été conçu pour fonctionner directement sorti du carton avec une PiZiGate. Cependant, pour certains modules, il est nécessaire de changer un paramètre.

Deconz RaspBee I

Par défaut, la ZiGate-Ethernet est configurée pour dialoguer avec le port série à 115200 bauds.

Cependant, la RaspBee, communique à 38400 bauds.

Il faut donc modifier la vitesse du port série de la ZiGate-Ethernet.

Pour cela, il faut utiliser son navigateur préféré et lancer la page de configuration : http://<IP_de_la_ZiGate_Ethernet

Ensuite il faut aller dans la page de configuration du port série :

Config_serial_zigate_ethernet Puis changer la vitesse par défaut config_serial_zigate-ethernet

ELR023 elelabs

Pour cette carte, qui est très bavarde, ce n’est pas la vitesse du port série qu’il faut changer mais il peut arriver qu’il y ait des coupures de connexions (reset by peer).

Pour corriger le problème, il suffit de couper toutes connexions web vers la ZiGate-Ethernet ou cocher l’option « Disable web server when ZiGate is connected » qui se trouve dans Config –> General

config_general_zigate-ethernet Cette option, coupera l’interface Web lorsque celle-ci sera connecté à votre plateforme domotique.

Conclusion

Nous venons de voir qu’il est possible d’utiliser tous les modules ZigBee compatible Raspberry PI avec la ZiGate-Ethernet et son firmware par défaut. Cependant, il est possible d’aller encore plus loin. Le prochain « détournement » concernera le ZWave.

En effet, à ma connaissance, il existe pas ou peu de passerelle ZWave – Ethernet et pourtant, à l’aide d’un Razberry, nous verrons qu’il est possible de piloter le ZWave (open zwave) par Ethernet à l’aide de la ZiGate-Ethernet.

PS : Pour ceux qui diront que … gnagnagna … utiliser une Raspberry Pi directement est une meilleure solution et moins couteuse, vous oubliez l’instabilité et la lourdeur d’un système d’exploitation, vous avez surement plein d’alimentations 5V- 3A et votre budget en carte SD est surement illimité 😉

PS2 : Je plaisante bien entendu 😉 chacun voit midi à sa porte.

A très bientôt !

L’importance du maillage (mesh) en ZigBee

Dans ce billet, comme le titre le stipule, je vais tenter grâce à mon expérience personnel de montrer l’importance du maillage en ZigBee.

En effet, j’ai déménagé il n’y a pas longtemps dans une nouvelle maison qui n’était, bien entendu, pas équipée de système de domotique. Parmi les besoins les plus urgents, il y a la centralisation des volets roulants.

Dans la maison précédente, qui était en construction, j’ai pu facilement câbler grâce à des modules Yokis. Rien ne vaut le filaire ! Cependant, quand c’est de la rénovation, on change forcément de stratégie.

Le ZigBee étant mon protocole radio préféré (on se demande pourquoi ;)), j’ai donc décidé, de domotiser les 10 volets roulants électriques de la maison.

Vote :

 

Le point fort du ZigBee

Sur ce blog nous avons déjà parlé énormément du protocole radio ZigBee avec ces astuces, ces avantages et certains inconvénients.

Cependant, même si nous avons eu l’occasion d’en parler, nous n’avons pas assez insisté sur une fonction (présente dans d’autres technologies radios) qui donne tout son sens au ZigBee mais surtout corrige en partie ses défauts.

Le maillage (mesh), dans sa généralité, permet tout d’abord de renforcer les liens radios entre le concentrateur (coordinator) et les appareils (capteurs, interrupteurs, lumières etc…). Ce système donne la possibilité à un appareil d’être accessible et/ou de pouvoir atteindre son but en utilisant le meilleur chemin.

Structure-of-typical-ZigBee-mesh-network

Comme on peut le voir sur la schématique, il existe plusieurs routes pour atteindre le coordinateur (coordinator) et de même dans l’autre sens.

Il faut aussi savoir que la création du maillage en ZigBee est automatique et que vous n’aurez absolument pas la maîtrise des différents liens. La création du maillage est aussi dynamique. En effet, le maillage change en fonction de plusieurs paramètres dont la qualité, et comme ce sont des choses qui évoluent, le maillage évolue… lentement … mais surement.

Ce que l’on peut aussi observer, c’est qu’il existe 2 autres types d’appareils (devices) en ZigBee, les routeurs et les « end devices ».

Dans le maillage ZigBee, seuls les routeurs sont en mesures de transférer l’information et donc d’être un maillon du réseau. En général, tous les appareils sur secteur sont en mesure d’avoir cette fonction. Il arrive parfois que ce ne soit pas le cas (assez rare). Par contre, aucun appareil sur pile n’est en mesure d’accroître le maillage (en tout cas, à ma connaissance).

Du coup, la première chose à penser lorsque l’on a décidé de se lancer dans le ZigBee, c’est de trouver les éléments indispensables au maillage. Ils devront être sur secteur (obligatoirement) et répartis sur l’ensemble de la maison pour bien couvrir et renforcer le réseau.

Le meilleur moyen de quadriller sa maison

Comme dit précédemment,  l’urgence pour moi était de domotiser les volets de la maison. En effet, il est évident que la centralisation de 10 volets me paraît nécessaire pour un fainéant comme moi ;). (La domotisation des volets apporte bien sûr d’autres atouts ).

Commencer par les volets est aussi une très bonne manière de créer un réseau ZigBee performant. En effet, une maison (SI elle dispose de volets roulant électriques) est logiquement entourée d’ouvrants et donc de volets. Ce qui permet de disposer d’un routeur ZigBee sur toute la périphérie de la maison.

Voici le schéma (grossier) de ma maison :

schema_domo_maison

En Orange : Les volets roulants
En Rouge : un routeur ZigBee
En bleu : Coordinateur ZigBee

En débutant donc avec ce principe, le réseau ZigBee sera déjà correctement maillé pour accueillir des capteurs dans la maison mais aussi dans le jardin.

Comme rien n’est parfait, il faudra peut-être prévoir d’autres routeurs ZigBee (type « répéteur Ikea ») pour renforcer le maillage ou couvrir des zones d’ombres.

A mon sens, la domotisation des volets roulant reste le meilleur moyen de créer « naturellement » un réseau ZigBee avec un maillage  efficace.

Concrètement

Maintenant que mes objectifs sont claires, il faut trouver les bons appareils pour domotiser le tout.

Mes volets roulant électriques sont filaires et pilotés avec un interrupteur Schneider.

interrupteur-volet-roulant_1

J’ai cherché le moyen le moins couteux et le moins intrusif pour que tout fonctionne même si la domotique tombe en panne.

Pour cela, 2 moyens possibles… soit changer tous les interrupteurs, soit rajouter un micro module.

Mon choix s’est finalement porté sur un micro module car je n’ai pas trouvé d’interrupteur assez joli (pour madame) ou trop cher (10x interrupteurs Legrand, c’est une somme ;))

J’ai donc choisi ce micromodule :


Sur Amazon pour les plus pressés

ou

Sur Aliexpress pour les avoir moins cher

Ce micro module s’interface très bien avec l’interrupteur et possède toutes les fonctionnalités nécessaires :

micro module volet zigbee

Fonctionnalités ZigBee :

  • Monter
  • Stop
  • Descendre
  • Position (en pourcentage)
  • Etat

L’appairage se fait en mettant votre coordinateur ZigBee préféré en mode « Appairage » et avec une aiguille de laisser appuyer 5 sec sur le bouton présent dans le petit trou en haut à droite du module.

Bon comme tout n’est jamais rose, ce micro module a des inconvénients.

Inconvénients

Le micromodule prend forcément de la place et si vous avez des boites d’encastrement au chausse pieds et un espace restreint, cela se révèle très compliqué d’insérer le module. Alors qu’avec un interrupteur ZigBee Legrand, vous n’avez pas ce souci.

L’autre particularité de ce micro module est qu’il faut le calibrer. En effet, par défaut, les commandes « monter » ou « descendre » sont actives 10 sec puis s’arrêtent. Donc si vous avez des petits volets, souvent cela suffit mais pour des volets de portes-fenêtres ou baies vitrées, ce n’est pas suffisant.

Calibrage du micro module

Voici un petit tutoriel pour calibrer ces micro modules. Pour cela, j’utilise une ZiGate (forcément) et l’outil de test ZWGUI (que vous pouvez retrouver sur le site ZiGate.fr)

En effet, avant d’intégrer tous les modules dans la domotique, j’ai préféré les calibrer un par un car le calibrage est une fonction spécifique et les box domotiques ne sont pas toutes en mesure d’organiser la calibration.

Pour ce faire, j’ai donc choisi un volet, démonté l’interrupteur et branché les modules (un par un).

J’ai branché une ZiGate puis lancé l’outil ZWGUI.

micromodule_volet_zigbee

Pour l’outil de test ZWGUI, il faut suivre le test classique présent sur zigate.fr  et aller jusqu’à la fin. Vous serez en position d’appairage « Permit Join »

Quand la ZiGate clignote, il suffit d’appuyer 5 sec (à l’aide d’une aiguille) sur le bouton dans le petit trou en haut du module. Le module va clignoter bleu puis s’éteindre. Côté ZWGUI, vous aurez les messages de « Device Announce » qui vont apparaître :

ZWGUI_appairage

Une fois le module appairé, on vérifie dans quel mode il est configuré. Pour cela, on va faire une commande « Read Attribute » (onglet Général)

ZWGUI_Read

La commande va interroger le cluster « Window covering » 0x0120 sur l’attribut 0xF000

ZWGUI_Read_response

Voici la réponse 0x8100 qui montre une valeur à 0x01 qui stipule que le module est en mode « production ».

Du coup, pour le passer en mode calibration, il faut écrire 0x00 dans cet attribut. Pour cela, il faut utiliser la commande « write attribute ».

ZWGUI_Write_0

Une fois effectuée, on peut s’apercevoir après une nouvelle lecture que le mode calibration est bien actif.

ZWGUI_Read_response_0

Maintenant, nous sommes prêt pour la calibration du module. Voici la marche à suivre:

Il faut tout d’abord fermer le volet. Pour cela, il faut utiliser la commande « Window Covering »et entrer la valeur 0x01

command_1

Quand le volet est totalement fermé, il faut relancer la commande avec la valeur 0x02

command_2

Ensuite ouvrir le volet complètement (valeur 0x00)

command_0

Et relancer la commande avec la valeur 0x02 (STOP) lorsque le volet est complètement ouvert.

command_2

Une fois que tout est ok, il suffit de remettre le module en mode production :

ZWGUI_Write_1

Et voilà, le module est calibré.

Même si cette calibration est un peu laborieuse (surtout parce que les box domotiques n’ont pas encore intégré cette fonctionnalité), elle apporte une certaine sécurité pour les moteurs de volets roulant mais aussi permet de pouvoir gérer la position du volet (pourcentage du temps d’ouverture ou fermeture) et ce dernier point est plutôt très utile.

Conclusion

Le maillage ZigBee, dans une maison, est vraiment primordiale et permet d’avoir une domotique le plus fiable/performante. Personnellement, je trouve que commencer par la domotisation des volets est une très bonne solution, un bon point de départ pour créer un réseau ZigBee.

Chaque maison et environnement est bien entendu différent et il peut y avoir d’autres alternatives. Cependant, je pense que l’infrastructure d’une maison est globalement la même et qu’énormément de maisons sont conçues comme la mienne, à savoir des volets roulant qui entourent la maison.

Voici un exemple de maillage de ma maison à un instant T

schema_domo_maison_maillage_3

Vous l’aurez compris, j’ai une nouvelle maison et du coup, il y aura d’autres articles sur les modifications et sa domotisation.

A bientôt !

Hack -Détournement de la passerelle Lidl silvercrest

Alors au départ, je voulais faire un article de tests sur les nouveaux produits Lidl dans la gamme domotique. Cependant, il en existe tellement et n’ayant pas la réactivité nécessaire, j’ai changé mon fusil d’épaule.

D’autant plus que tous les produits Lidl smart home silvercrest sont compatibles ZiGate ou avec les autres passerelles universelles.

Du coup, je suis plutôt parti sur un détournement de la passerelle.

Transformer la passerelle Lidl en ZiGate Ethernet !

L’objectif est bien entendu de faire POC (Proof Of Concept), de s’amuser mais en même temps de répondre à un besoin personnel.

 

Démontage et analyse

La première chose, quand on veut faire un détournement d’un objet, c’est de faire une analyse (ou reverse engineering) et pour cela, pas le choix, il faut démonter l’appareil pour observer ce qu’il contient.

Donc la première étape c’est de démonter la passerelle.

Le démontage n’est pas aisé, pas de vis mais des clips. Il faut alors « déclipper » le boitier mais très compliqué sans abimer (il y a un peu de colle je pense). Les non soigneux, s’abstenir 😉

Demontage_boitier_lidl

Une fois le capot enlevé, on va pouvoir analyser rapidement ce qu’il y a.

Demontage_lidl__zigbee_face

Commençons par la partie face :

En bleu : C’est le module Zigbee de chez tuya. le TYZS4 à base de Cortex-M4 EFR32MG1B232. Il permet de communiquer avec les objets en Zigbee.

En rouge : C’est le cerveau de la passerelle. Le Realtek RTL8196E. C’est lui qui va piloter le module Zigbee (par des commandes sur l’UART) et permettre la gestion complète de la passerelle.

En rose : C’est la mémoire RAM utilisée par le CPU. 32Mo de SDRAM. EM6AA160

En orange : C’est la mémoire flash utilisé par le CPU. 16Mo. GD25Q127

En bleu clair : C’est l’interface permettant de gérer l’Ethernet. H16107DF

En vert : C’est le connecteur permettant d’accéder à la console de la passerelle et de mettre à jour le module ZigBee.

Pour l’autre côté de la carte, c’est beaucoup moins intéressant… quoi que les inscriptions sont d’une aide précieuse :

demontage_pile_zigbee_lidl

En rouge : Ce sont les LEDs permettant d’avoir le statut de l’Ethernet et du ZigBee. A gauche le statut de l’Ethernet et à droite le statut du Zigbee.

On peut aussi observer sur cette partie, qu’il existe des inscriptions et on pourra remarquer les RX TX 3V3 et GND qui sont les points importants pour débuter le détournement.

Bon, du coup, en observant ce qui compose cette passerelle, on peut rapidement comprendre que nous avons à faire à un système embarqué probablement sous linux qui pilote un « modem » ZigBee.

Afin de prendre la main sur cette passerelle, il convient donc de trouver une porte d’entrée. Bien entendu, vous l’aurez compris, la console caractérisée par le RX/TX sera ce point d’entrée.

Avant de sortir l’artillerie lourde, il faut avoir le reflexe de chercher s’il n’existe pas déjà quelqu’un qui a fait le travail. Du coup, je me suis mis à chercher les travaux déjà existant sur la passerelle et je suis tombé sur l’article permettant de prendre la main sur cette passerelle.

Root de la passerelle

Un gros merci pour « PaulBanks » qui m’a fait économiser énormément de temps. En suivant scrupuleusement ces travaux, il a été très facile de prendre le contrôle de ma passerelle Lidl.

Du coup, je vous laisse aller lire l’ensemble de son œuvre et je vais résumer ce que j’ai fait afin de me permettre de casser le mot de passe root.

Tout d’abord, il faut s’occuper du connecteur pour aller chercher la console avec un convertisseur USB-TTL.

Console_lidl_gateway_zigbee

Orange = RX
Rouge = TX
Marron = GND

De l’autre côté un convertisseur USB-TTL. (n’oubliez pas de croiser RX / TX)

Lidl_Convertisseur_USB-ttl

Ensuite, une fois connecté, il suffit d’ouvrir un hyperterminal (dans mon cas putty) sur le bon port (38400baud 8N1) et de démarrer la carte.

Console_demarrage_lidl

Pour pouvoir « rooter », il faut rentrer sur la busy-box (le bootloader) et pour cela il faut rapidement appuyer sur la touche « echap ». Donc on met hors tension puis sous tension et « echap ».

lidl_busy_box

La prochaine étape consiste à lire des emplacements mémoires pour récupérer le mot de passe et la clef de chiffrement correspondante.

Vous aurez plus d’informations en suivant ce tutoriel.

Voici les premières commandes

FLR 80000000 401802 16
DW 80000000 4

Vous devriez récupérer les informations suivantes :

Clé de chiffrement (bien entendu avec des blocs différents):

80000000: XXXXXXXX YYYYYYYY ZZZZZZZZ AAAAAAAA

Puis :

 FLR 80000000 402002 32
 DW 80000000 8

Le mot de passe (sur 2 lignes)

80000000: BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE
80000010: FFFFFFFF GGGGGGGG HHHHHHHH LLLLLLLL

Sauvegardez les 3 lignes puis récupérer le script python et suivez les instructions.

Vous devriez récupérer le mot de passe root en clair : Root password: b’XXXXXXXX

Une fois le mot de passe root décoder, vous avez accès à l’ensemble de la passerelle sur laquelle vous pourrez faire à peu près tout ce que vous voulez.

Une ZiGate Lidl ?

Bon, c’est une bonne chose de faite, nous pouvons désormais utiliser la passerelle Lidl.

La prochaine étape consiste à analyser et repérer comment fonctionne le module Tuya ZigBee pour le remplacer par une ZiGate

Analyse du module Tuya TYZS4

L’objectif ici est de repérer à quoi correspondent les différents PINs mais surtout l’interface UART. (En effet, pour piloter une ZiGate, on utilise une interface UART)

Pour cela, je suis allé sur le site Tuya pour récupérer la datasheet du module.

tuya_TYZS4

Une fois repéré, il faut maintenant dessouder le module.

2 solutions s’offrent à nous. En effet, ce module à deux lignes de PINs de part et d’autres donc c’est assez simple :

  • soit on utilise un pistolet à air chaud.
  • soit on charge en étain une ligne en faisant légèrement levier et ensuite on charge la 2ème ligne et le module se décolle.

Personnellement, j’ai pris la deuxième méthode mais elle est plus risquée pour les non avertis.

Ensuite on nettoie tout avec une tresse et un peu de flux et on obtient cela :

lidl_passerelle_demontage_tuya

Premiers tests avec un module ZiGate

Une fois l’analyse faite, il suffit de brancher une ZiGate sur les bons PINs et de procéder à quelques tests pour s’assurer que tout fonctionne comme il le faut.

Avant de faire l’installation finale, il convient de souder quelques straps :

lidl_zigate_strap_tests

Ensuite on se connecte sur 2 consoles de la passerelle (à l’aide de SSH).

Sur l’une on tape les commandes suivantes (réception de port série) :

$stty -F /dev/ttyS1 speed 115200 cs8
$ cat /dev/ttyS1

Sur l’autre console :

$ echo -ne '\x01\x02\x10\x10\x02\x10\x02\x10\x10\x03' > /dev/ttyS1

Une fois la commande lancée, vous devriez avoir sur la première console une réponse. Alors malheureusement, vous verrez des caractères spéciaux car c’est de l’hexadécimal et qu’il n’y a pas d’outil du type hexdump sur la passerelle.

Mais ça suffit pour valider que cela communique bien.

La passerelle Ethernet / Série

Pour que la passerelle Lidl se transforme en passerelle ZiGate, il faut procéder de la même façon que la ZiGate-WiFi. En effet, il faut que les requêtes TCP/IP soit transmises au port série et inversément. Pour cela, il faut utiliser les outils Ser2Net ou Socat mais dans notre cas, il faut développer soi-même le programme.

En soi, ce n’est pas très complexe et en plus, ça a déjà été développé.

Grâce a paulbanks et Ordspilleren, tout a déjà été fait, il n’y a plus qu’à suivre le tutoriel suivant et télécharger les sources.

Contrairement au tutoriel, j’ai utilisé la fonction tftp pour transférer le fichier serialgateway.

lidl_hack_tftpserver

On choisit, le répertoire où se trouve le fichier à transférer puis on sélectionne la bonne interface réseau.

Enfin sur la console de la passerelle on tape la commande suivante :

$ cd /tuya
$ tftp -gr serialgateway <ip de votre machine>
$ chmod +x serialgateway

Ensuite, il suffit de reprendre le tutoriel pour changer les scripts de démarrage pour l’adapter à la nouvelle passerelle. Attention, dans notre cas et pour coller à la ZiGate-WiFi, il faut changer le port par défaut : 9999

if [ ! -f /tuya/tuya_start.original.sh ]; then cp /tuya/tuya_start.sh /tuya/tuya_start.original.sh; fi

cat >/tuya/tuya_start.sh <<EOF
#!/bin/sh
/tuya/serialgateway -d/dev/ttyS1 -p9999 -f &
echo 1 > /proc/led1
EOF
chmod 755 /tuya/serialgateway
if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi
echo "#!/bin/sh" >/tuya/ssh_monitor.sh

Une fois effectué, vous pouvez redémarrer la passerelle et faire le même test que le tutoriel pour la ZiGate-WiFi …sauf qu’il faudra mettre la bonne adresse IP (celle de la passerelle Lidl)

Modification hardware

Pour que le hack soit complet, j’avais dans l’idée de rajouter une antenne externe pour augmenter les performances et de brancher la LED de statut ZigBee à la ZiGate.

Concernant l’antenne externe, pas de problème, il suffit de prendre une module ZiGate avec connecteur uFL.

Pour la LED de statut, j’ai un peu triché, j’ai dessoudé la résistance de pull-up de la LED de statut et j’ai connecté le GPIO17 de la ZiGate sur cette dernière. J’ai du rajouter dans le script de démarrage la ligne :

echo 1 > /proc/led1

Lidl_led_status

Repérage des LEDs statut Zigbee

lidl_zigate_gateway

Montage de la ZiGate sur la passerelle Lidl

Lidl_zigate_ethernet

Ajout de l’antenne externe et fermeture du boitier

Lidl_zigate_ethernet_on

Mise sous tension et réseau de la nouvelle ZiGate Ethernet

Une fois démarré, il suffit de paramétrer votre box domotique compatible comme une ZiGate-WiFi. il faut rentrer l’adresse IP et le port 9999.

Vous avez désormais une ZiGate Ethernet compatible Jeedom / Domoticz ou Home-assistant.

\o/

Conclusion

La catégorie détournement et hack font partis de mes articles préférés et je prend beaucoup de plaisir à vous partager mes découvertes.

Cependant, ce détournement me permet aussi d’utiliser une ZiGate sur Ethernet. (utile pour mes plateformes de tests)

Alors, je vous avez déjà proposé un tutoriel pour construire la même chose avec un RaspberryPi, mais dans ce cas précis, on a une passerelle plus aboutie et qui ne risque pas de planter à cause d’une carte SD. C’est du solide !

Enfin l’objectif de cet article n’est pas de reproduire en série mais bien de s’amuser « utile » et d’apprendre comment fonctionne ce genre de matériel.

J’espère que ces travaux vous auront plu et que vous avez avez pu apprendre 2-3 trucs.

A bientôt !

LoRaGate – La réalisation – partie 3

Pour bien comprendre et suivre cet article, je vous recommande de bien lire les étapes précédentes, l’étude et la conception.

Dans cette partie, on va s’attarder sur la réalisation. Cette étape comprend le design de la schématique et la production de l’objet.

 

Le design de la LoRaGate

Comme nous l’avons vu dans le précédent article, il faut tout d’abord délimiter la carte en fonction de nos besoins (dans notre cas, il faut que ça rentre dans un boitier spécifique). Une fois effectué, il faut désormais placer les composants.

Le placement des composants

Dans notre cas, il faut prendre en compte que le carte électronique a 2 faces. On déterminera le haut (top) en rouge et le bas (bottom) en bleu.

Ensuite, il faut commencer par placer les composants qui ne peuvent pas être déplacés car soumis à contrainte(s).

Par exemple, le connecteur USB doit être placé en bord de carte à l’emplacement prévu par le boitier.

Loragate_placement_usb

Pour l’antenne (ou connecteur SMA dans notre cas), on la place à l’endroit le plus éloigné du reste. En général, elle est placée en bout de carte.

loragate_SMA_place

Dans notre objet, la partie radio est très importante. Il faut que le design à ce niveau soit le plus irréprochable possible. Bien évidemment, Il y a quelques règles à suivre pour que cela se passe bien : comme isoler un maximum la partie radio des autres composants actifs.

Pour répondre à cette contrainte, on va donc placer le module radio au plus près du connecteur SMA. Cependant, il n’est pas recommandé de faire une piste avec des virages trop serrés (une piste avec des coudes à 90° vibre beaucoup moins bien). Alors il faut éloigner le module de façon à ce que l’on puisse faire une belle courbe toute douce 🙂

LoRagate_module_radio_place

(Les deux flèches oranges représentent les deux points à relier)

Une fois le module placé, il faut créer « l’étage radio ». En effet, avant le routage des composants, je pense qu’il convient de créer le lien entre le module radio et le connecteur rapidement. En effet, il faut éviter de placer des composants à proximité. Le fait de placer le circuit permet de ne pas l’oublier et de ne pas faire de bêtises.

Bien entendu, on applique le réseau adaptatif pour la suite.

Loragate_route_antenna

Réseau adaptatif + routage radio

Loragate_route_antenna_global

Vision d’ensemble

Voilà une bonne chose de faite.

Il ne reste plus qu’à placer les autres composants qui ont moins de contraintes. Cette fois-ci, ça se passe sur la face haut (top).

LoRagate_driver_usb

Driver USB à base de FTDI (FT232RL)

Loragate_Ensemble_driver-radio

Schéma général

Pour cette partie, la seule chose contraignante est qu’il faut bien placer les condensateurs de découplage au plus près du VCC ou du signal.

Le routage

Pour le routage, je procède de la façon suivante :

  1. Je route les pistes qui ne doivent pas être traversée, en général les condensateurs pour le découplage.
  2. Ensuite, je route manuellement les alimentations sensibles (pas le cas ici)
  3. J’applique un routage automatique
  4. J’ajuste. Par exemple, il peut arriver de ne pas placer de manière optimiser un composant et du coup la route prend un chemin non optimisé.

Après un routage automatique, il faut toujours vérifier (avec un œil humain) car l’homme reste supérieur (encore) à la machine.

Loragate_routage_auto

Pour des raisons de performances et de stabilité, il est aussi recommandé de soigner le plan de masse. Quand il y a 2 couches et de la radio (comme dans notre cas), il est possible que les signaux et l’alimentation parcourant le PCB perturbent l’étage radio et dégrade l’émission/réception.

La première chose à faire est de stabiliser (éviter en quelques sortes les « vibrations électromagnétiques »). Pour cela, il convient de créer un plan de masse et de relier, de manière régulière, la masse des deux faces (TOP et BOTTOM)

Loragate_Plan_de_masse

Ensuite, je fais des « passerelles » entre les deux faces à l’aide de vias pour relier les plans de masses des 2 faces.

LoRagate_plan_de_masse_vias

Enfin, je protège l’étage radio en faisant une barrière de vias tout le long. Normalement, il y a des règles de calculs qui permettent de connaître la distance entre les vias en fonction de la fréquence radio mais je vous avoue que dans la pratique, je serre les vias le plus possible.

LoRagate_Plan_de_masse_radio

La production de la LoRaGate

Une fois le plan de masse terminé, il faut, bien entendu, faire des revues pour bien vérifier que tout est ok. Vous pouvez appliquer les outils de eagle (Design Rules Control DRC et Electrical Rule Control ERC)

Quand on est sur de soi (c’est dure), on peut alors passer à la production de la carte.

Alors, on pourrait lancer, tel quel, la production de la carte mais quand on sait comment fonctionnent les fabricants de PCB, on s’aperçoit rapidement que l’on peut optimiser largement les coûts de production.

En effet, tous appliquent les tarifs en fonction du nombre de plaques et chaque plaque peut faire (en général) 10cm x 10cm. Du coup, si on produit la carte (qui fait 4.26 x 2 cm), c’est dommage car on perd la possibilité d’avoir plus de produits au même prix.

Donc pour remédier à ce problème, il faut faire ce que l’on appelle de la « panélisation » !

La panélisation

Pour appliquer la panélisation à vos circuits imprimés, il existe des outils sur Eagle CAD. Ce dernier met à disposition des scripts ULP qui permettent d’automatiser la duplication de votre circuit dans votre panel.

Pour « panéliser » mes productions, j’utilise 2 scripts :

qui va me permettre de nommer les composants répétés sur le panel avec le même nom.

En effet, quand vous dupliquez les composants sur un même panel, les noms s’incrémentent. Par exemple : C1 va devenir C2 sur la duplication d’à côté puis C3, C4 etc … en fonction du nombre de produits sur un panel. Et ça, les constructeurs n’aiment pas ça car le BOM ne correspond plus à rien.

LoRaGate_panelize_ulp

Grâce à ce script, on va rajouter un « layer » _tNames (jaune) et _bNames(mauve) qui permettront de faire correspondre le même composant sur tous les produits des panels

Il va dupliquer les produits sur votre panel en fonction de la dimension du panel.

Il va ajouter entre chaque produit des lignes V-score afin de pouvoir indiquer au fabriquant de rendre « sécable » chaque produit.

LoRagate_Capture_panel_final

Bon, comme ce sont des scripts pour des fabricants particuliers, je dois faire quelques modifications.

  • Effacer toutes les layers « dimension » et en refaire une seule
  • Changer le layer v-score (milling) pour le layer « dimension ».

LoRaGate_Capture_panel_final_2

Une fois effectué et après avoir vérifié que tout est ok, il suffit, enfin, de générer les fichiers GERBERs de notre projet. Ces fichiers sont adaptés pour les machines de production qui vont permettre de construire les cartes électroniques.

Envoie en production

Il faut alors aller dans « CAM processor » de EAGLE CAD et d’ouvrir un « job » permettant de générer les fichiers. Pour ma part, j’utilise un fichier cam que j’ai récupéré chez le fournisseur « Seeed ».

Les fichiers générés fonctionnent chez Seeed (bien sûr), mais aussi pour JLCPCB et OceanSmile que j’ai pu déjà tester. J’imagine donc qu’ils pourront aussi fonctionner chez d’autres fabricants.

Enfin, une fois que les fichiers sont générés, vous pouvez zipper et envoyer en production chez votre fabricant préféré.

Pour ma part, à ce stade je ne fais pas produire avec l’assemblage des composants. Je préfère commander les composants séparément et faire le montage moi-même. Cela évite de perdre trop d’argent s’il y a une erreur.

Voici le résultat une fois réceptionnée:

LoRaGate_panelisation_produit_final

Panel reçu

LoRagate_sans_boitier

LoRaGate montée

LoRagate_avec_boitier

LoRaGate avec boitier

Conclusion

J’espère que cette trilogie vous a plu et/ou qu’elle vous a appris quelques astuces pour concevoir son propre projet électronique.

Bon, entre le temps de la rédaction de l’article et celui de la publication, il y a eu quelques modifications sur le projet mais le principe d’étude / réalisation et de production reste inchangé.

Pour la prochaine étape, il faut faire l’adaptation de l’étage radio mais je ne sais pas si j’en ferai un article.

Ce produit sera bientôt disponible sur la boutique vous permettant de rendre votre box ou ordinateur compatible LoRaWAN.

EDIT : Le Modem LoRaGate est désormais disponible sur la boutique

LoRaGate – La conception – partie 2

Si vous tombez sur cet article sans avoir lu la 1ère partie, vous allez être peut-être perdu, alors commencez par le commencement en lisant depuis le début.

Dans cette partie, nous allons rentrer dans le vif du sujet. La conception du produit.

Je vais tenter de vous expliquer comment faire une schématique, avec quel outil et quels sont les recommandations à suivre.

 

La schématique

Alors, faire des schémas, c’est sympa mais ça a surtout une grosse utilité. Grâce à la schématique, on va mettre à plat les composants que l’on va utiliser ainsi que leurs liens (les pistes) pour communiquer entre eux.

Il existe, bien entendu, différents outils pour élaborer une schématique mais, personnellement, j’ai choisi d’utiliser Eagle CAD car il répond à mes attentes.

Utilisation de Eagle CAD

La version que j’utilise est une version limitée et gratuite mais ce qui est inclus est suffisant:

  • Utilisation de 2 couches max (TOP et BOTTOM)
  • Aire de 80cm² max de surface de travail

Pour le moment, ces limitations ne m’ont jamais bloqué mais peut-être qu’à terme, ça sera le cas. Il faudra compter 300€ / an si je souhaite évoluer.

Bon, je ne suis pas naïf et leur stratégie est assez limpide. Dans un laps de temps inconnu, Ils risquent de limiter les fonctionnalités (comme Fusion360) et je serai obligé de franchir le pas ou changer d’outil.

Je vous passe bien évidemment les étapes d’installation et de création de projet. Je vous conseille de suivre les tutoriels. Il en existe quelques un sur la toile mais celui de Sparkfun est plutôt bien fait et très complet.

1ère étape

Bon je vous passe l’installation du logiciel, la création du projet et la création de la schématique, ça n’a pas d’intérêt ici… Partons du principe que votre feuille est ouverte et que vous êtes prêt à travailler.

Dans un premier temps, il faut déposer sur votre feuille tous les composants dont vous aurez besoin.

Pour cela, il faut cliquer sur l’icône de la barre d’outil suivant :

Outil eagle CAD

Alors c’est là que cela devient intéressant… pour avoir accès aux composants, il faut importer des librairies. Par défaut, il existe quelques composants mais vous serez rapidement limités.

Les librairies

Heureusement, la communauté de Eagle CAD est assez importante et il existe énormément de librairies assez complètes. Je vais vous en recommander quelques unes. D’ailleurs, les meilleures librairies sont souvent élaborées par les vendeurs ou concepteurs d’électronique. En effet, en vous facilitant la tâche, cela vous permettra de passer par eux pour l’achat des composants ou la conception de vos cartes électroniques.

Voici les librairies que j’utilise le plus :

Une fois téléchargé, il vous suffit de déposer tous les *.lbr dans le répertoire : « c:/<chemin_install_eagle>/lbr/ »

Ensuite, il faut charger les librairies dans le menu « Library » –> « Manage libraries » –> onglet « Available » –> « Browse » –> Sélectionner les librairies et cliquez sur « Use »

Une fois seulement après, elles apparaîtront dans votre bibliothèque.

Conception d’une librairie

La plupart du temps, on trouve, en cherchant sur Internet (il suffit souvent de taper dans google, le nom du composant et le mot clef lbr), la librairie du composant que l’on cherche mais il arrive que ce ne soit pas le cas (souvent parce qu’il n’est pas trop répandu/utilisé).

Et dans notre cas, c’est le module LoRa que je n’ai pas trouvé… Du coup, hé bien, on perd un peu de temps pour se le faire soi même.

Comme souvent, on ne part pas de zéro, et on vient exploiter une librairie qui existe déjà. Pour se faire, il est préférable de partir d’une librairie existante ayant le même boitier que votre composant. Malheureusement, ce n’est pas toujours possible aussi.

Eagle CAD offre la possibilité de concevoir sa propre librairie. Voici à quoi cela ressemble

eagle_lbr_new

L’outil est divisé en 3 parties :

  • Device : C’est la fenêtre qui permettra d’avoir le visuel complet du composant
  • Package : Permet de concevoir le design du composant (les empreintes)
  • Symbol : C’est simplement la schématique du composant avec les fonctions de chaque PIN

En général, je commence par concevoir avec les bonnes côtes le design du composant :

eagle_lbr_package

Ensuite, je m’occupe de faire la schématique et « désigner » les fonctions de chaque PIN.

eagle_lbr_symbol

Bien entendu, tout cela ne se fait pas au hasard. Il est indispensable de suivre la datasheet du composant.

Enfin on associe les fonctions aux PINs physiques :

eagle_lbr_device

Une fois terminé, vous pouvez sauvegarder votre librairie et refaire les étapes d’importation (voir plus haut) dans votre Eagle CAD.

Voici la librairie pour ceux qui veulent utiliser le module. E78-868LN22S

Dépôt des composants

Voilà, vous avez listé tous les composants et ils sont tous disponibles dans votre bibliothèque. Il ne reste plus qu’à les déposer dans votre feuille comme suit :

depot_composants_loragate

Vous êtes enfin prêt à concevoir votre schéma électronique. On retrouve bien :

  • Le connecteur USB-A
  • Le driver USB-TTL / Régulateur
  • Le module LoRa
  • Le connecteur SMA (pour l’antenne)

Tout le reste correspond aux composants passifs. J’ai pour habitude d’utiliser uniquement des composant CMS de taille 0603 (package). Cela me permet de pouvoir gagner de la place mais aussi pouvoir reprendre des soudures sans trop galérer. Tout est dans le compromis…

Assembler les composants

Dans cette partie, l’objectif est simple. Il faut faire communiquer les composants que l’on a déposé. Pour cela, il est INDISPENSABLE d’utiliser les datasheet (je le répéterai jusqu’à vous souler ;)). En effet, toutes les informations utiles au bon fonctionnement de chaque élément se trouve dans ce document.

En plus des caractéristiques, souvent, il y a des exemples de mise en situation. Il convient donc de s’en inspirer.

Bon dans notre cas, il y a pas de grosses complexités. Voici les liens simples pour relier tous les composants.

Schematique_loragate

Rien de particulier dans ce schéma, on relie les alimentations et les masses des composants puis les signaux D+ et D- du connecteur USB et enfin le RX / TX pour la communication entre le pilote USB et le modem LoRa. N’oubliez pas d’inverser les signaux de l’interface série. Le TX avec le RX et inversement.

Là, nous sommes dans le fonctionnement logique mais si vous en restez là, c’est que vous n’avez surement pas lu les spécifications des composants ou que vous ne maîtrisez pas encore le domaine de l’électronique.

Ce qu’il faut savoir, c’est que chaque composant à besoin d’être plus ou moins configuré pour être stable. Quand on parle de stable, c’est des signaux et une alimentation sans perturbation. Si on construit, en l’état, la carte électronique, elle fonctionnera surement (quoique) mais si vous espionnez les signaux ou l’alimentation à l’aide d’un oscilloscope, vous verrez surement des perturbations.

Pour le cas des modules prêts à emploi (comme le E78-868LN22S), ne vous laissez pas berner, s’il n’y a rien à rajouter, c’est que c’est déjà intégré DANS le module.

Voici le nouveau schéma après avoir respecter les datasheet.

Le découplage + antiparasite

Schematique_loragate_decouplage

Principalement, nous avons rajouté des condensateurs de découplage. Cela permet de limiter le « couplage » entre l’alimentation et le signal. Grossièrement, les condensateurs de découplage permettent de lisser l’alimentation et encaisser les perturbations possibles des signaux.

On peut voir aussi que la datasheet recommande une ferrite sur l’alimentation. Cette ferrite est un antiparasite et permet d’absorber des énergies des hautes fréquences.

Les signaux et filtres

Alors là, on passe dans des concepts beaucoup plus complexes. Ce dont je m’aperçois dans le domaine, c’est qu’il y a la théorie (qui est magnifique) et la pratique. A force de pratiquer et d’exercer, on s’aperçoit que, dans chaque situation précise, on utilise toujours les mêmes concepts.

Dans notre cas les filtres vont permettre d’éliminer des fréquences parasites. Pour filtrer, normalement, il faut utiliser le couple résistance + condensateur mais dans le cas de ce projet, les valeurs sont tellement basses que seules les condensateurs sont utiles.

Alors je ne suis pas du tout spécialiste (domaine ultra complexe) et je ne suis que certains conseils… et la datasheet :). Il est parfois utile de suivre la schématique de projet équivalent de constructeur qui ont passé les normes et passé leur design en test… Mais ce n’est pas toujours facile de trouver ce qu’on veut.

Schematique_loragate_filtre

Pour les signaux RX / TX, je ne rajoute rien car sur la datasheet du module, les recommandations ne spécifie pas de rajouter un filtre. Ils recommandent une connexion directe… Comme préciser plus haut, tout doit être intégré dans le module.

Adaptation d’antenne

L’adaptation est un domaine complexe, tellement complexe que je vais consacrer un article entier à ce sujet.

En effet, il ne faut pas croire qu’en mettant simplement une antenne 868Mhz, une fois assemblée, l’antenne résonne à la bonne fréquence. Pour anticiper l’adaptation d’antenne, il faut rajouter un réseau de condensateurs et d’inductances afin de pouvoir trouver le bon paramétrage. Voici à quoi cela ressemble ce réseau.

Schematique_loragate_adaptation

Pour le moment, on ne met que les empreintes… on ne connait pas encore les valeurs et seront déterminés par les travaux d’adaptations.

Ces composants seront dans un boitier différent (0402) car je n’ai que des composants d’adaptations uniquement dans cette version.

Le design de la LoRaGate

Bon ça y est, pour le moment le schéma est fonctionnel. Il est alors temps de passer au design de la carte.

Bien entendu, rien ne vous empêchera de repasser sur la schématique pour corriger (et c’est toujours le cas :)). Pour passer dans la partie « design », il faut cliquer sur l’icone suivante de la barre des menus.

eagle_cad_menu

Et une nouvelle fenêtre apparaîtra … avec tous les composants :

Design_depart

La partie « design » et l’une des parties que je préfère le plus car c’est le moment où la conception prend vie. Il y a bien entendu des règles à suivre pour que tout fonctionne correctement et c’est ce que nous allons voir dans le prochain article.

Afin de commencer le placement des composants, la première des choses à faire est de délimiter les bords de carte. Autrement dit, il faut choisir la taille que doit faire la carte électronique.

Si vous êtes dans l’optique de faire une carte nue, pas de problème … vous choisissez les dimensions que vous souhaitez et c’est assez vite réglé… mais si vous voulez placer la carte dans un boitier, c’est une autre histoire.

Dans le cas du projet, j’ai choisi un boitier pour être plus propre et après mûres réflexions, j’ai choisi ce boitier :

boitier_1551USB2TSK

Alors pour les connaisseurs, cela vous rappellera la ZiGate-USB mais c’est le modèle plus petit, le 1551USB2TSK. Il convient parfaitement aux dimensions (et fonctions) de la carte et permettra de faire ressortir le connecteur SMA.

Bref, nous allons partir sur ces dimensions pour concevoir la carte électronique. (voir la datasheet)

Design_boitier

L’objectif va être de faire rentrer tous les composants dans le rectangle blanc (représentant les bords de la carte)

Conclusion

Dans cette partie, on est bien rentrée dans le vif du sujet. J’ai passé sur les grosses explications des concepts en électronique mais j’ai essayé de communiquer rapidement ma méthode pour la conception de carte électronique.

En fait, je me suis fait un peu piéger par la masse d’informations et je suis bien conscient que pour un débutant, ça peut paraître imbuvable et pour un pro pas assez détaillé (d’ailleurs n’hésitez pas à me dire en commentaire si c’est trop ou pas assez précis).

Pour la prochaine étape, on va voir comment placer les composants, optimiser leur position et tout faire rentrer dans le boitier.

A bientôt !

EDIT : Le Modem LoRaGate est désormais disponible sur la boutique

LoRaGate (Projet complet) – partie 1 – l’étude

Bon … avant toute chose, je dois dire que je n’ai pas suivi de cursus dans l’électronique mais plutôt dans l’informatique et que la vie a fait que je me suis lancé dans ce domaine. Je n’ai donc pas les bases scolaires et je me défini plutôt comme autodidacte en la matière.

Du coup, si vous, vous êtes du métier et que je dis des bêtises ou qu’il y a des manquements ou améliorations à apporter, n’hésitez pas à le signaler en commentaire, je ne vous en voudrai pas.

Parce que c’est toujours plus simple de montrer les choses par l’exemple, je vais partir d’un produit qui devrait sortir (à l’issue des articles) sur la boutique LiXee. A savoir la LoRaGate

 

Introduction au projet LoRaGate

Ce projet est un projet assez simple et permet de comprendre les bases sans trop rentrer dans la complexité technique. En effet, cet appareil sera un simple modem LoRaWAN permettant d’envoyer des commandes AT au travers d’une interface USB.

Comme il va être compliqué de tout condenser dans un seul article, il y aura une série de 1, 2, 3 ou 4 articles sur le sujet.

Voici toutes les étapes du projet que je vais tenter de détailler :

  • L’étude (permet de lancer le projet et de répertorier tous les besoins)
  • La conception (grâce à un outil de CAO, on lance la schématisation et le design de la carte électronique)
  • La réalisation (on affine le design, on optimise et on corrige ce qui ne va pas grâce à certains outils avant d’envoyer en production)
  • L’optimisation. On adapte l’antenne pour qu’elle résonne à la fréquence voulue

L’étude de la LoRaGate

A quoi sert la LoRaGate

La LoRaGate sera une passerelle/modem LoRaWAN permettant d’envoyer et recevoir des messages. Elle permettra donc de rendre votre box domotique (par exemple) compatible avec ce réseau destiné aux objets connectés.

Le protocole LoRa et le réseau LoRaWAN

Mais qu’est-ce que le LoRa / LoRaWAN ?

Comme d’habitude (vous commencez à me connaître), je ne vais pas entrer trop dans les détails. Si vous le souhaitez vous pouvez le faire en suivant le lien Wikipedia.

Premièrement, il faut distinguer le LoRa du LoRaWAN car ce n’est pas exactement la même chose et souvent, on les mélange par abus de langage.

La modulation

Le LoRa est une modulation de fréquence généralement sur la bande 868Mhz (en Europe) 915Mhz (au USA ou ceux qui utilisent la FCC) mais aussi récemment sur le 2.4Ghz

C’est une modulation qui a été développée par des frenchies (Cycléo) à la base !! (cocorico) puis rachetée par Semtech. C’est une modulation assez révolutionnaire (à mon sens) car elle permet de communiquer en dessous du niveau de bruit radio.

En effet, normalement, il est compliqué, voir impossible, de communiquer dans le bruit. Le niveau de bruit radio ambiant / interférence se situe généralement aux alentours de -90dBm. C’est comme si vous tentiez de discuter avec un ami avec la musique à fond. Difficile de communiquer. C’est un « peu » pareil avec la radio, soit c’est lié à beaucoup d’interférences, soit c’est lié à la distance. Ce bruit va constituer la limite des performances de votre conversation.

Spectrum_analyzer_display_noise_floor

D’ailleurs si vous regardez la sensibilité des modules radio bluetooth, zigbee, WiFi etc … vous verrez qu’ils ne descendent quasiment jamais en dessous du bruit, soit -100dBm max (en condition de laboratoire).

Voici donc la première innovation de la modulation et contrairement à une modulation classique qui possède 2 fréquences pour signaler les 1 et 0, le LoRa repose sur des sauts de fréquences qui représentent des groupes de bits.

modulation_lora

Et pour garantir l’intégrité des données, la modulation utilise le Spreading Factor (SF) qui va utiliser une signature du motif plus ou moins longue. Plus le motif est important, moins il y a de perte d’intégrité et plus on peut aller loin.

Spreading factor LoRa

Bien entendu, tous ces avantages entraînent forcément un inconvénient (quoi que…) qui est le débit. En effet, on ne peut pas tout avoir… Cette modulation n’est pas faite pour faire du débit mais pour aller loin.

data rate

Bon la technologie est complexe et il y aurait beaucoup à dire mais ce qu’il faut retenir c’est que :

  • Cette modulation LoRa permet de communiquer sur de longues distances (jusqu’à 15 Km environ)
  • Elle ne peut faire transiter que des messages très courts (51 octets utiles)

Le réseau LoRaWAN

Maintenant que l’on a vu la modulation de fréquence, qu’est-ce que le LoRaWAN.

Hé bien, le LoRaWAN est tout simplement un réseau qui permet d’interfacer les appareils qui communiquent en LoRa.

Alors pareil, difficile de synthétiser tout ça en quelques lignes mais ce qu’il faut retenir, c’est que le LoRaWAN rassemble une infrastructure plus ou moins complexe à mettre en place, permettant de traiter / décoder les informations remontées par les appareils LoRa pour les rendre exploitables.

lorawan_network

Il existe 2 types d’infrastructures possible en LoRaWAN :

  • La publique qui est en quelque sorte l’opérateur (Orange, Objenious, The Things Network(TTN), etc… )
  • La privée qui peut être développée à la maison (whouaouuuu !!)

Pour l’opérateur, c’est assez simple. Il faut prendre un abonnement et vous pourrez (sous réserve de couverture) récupérer les informations de votre appareil LoRa pour les rediriger vers votre serveur d’exploitation de données. En effet, ils mettent à disposition des API ou « routage » vous permettant de rediriger la donnée brute vers votre serveur personnel.

Pour le réseau privé, il vous faudra :

  • Une passerelle LoRaWAN pour récupérer la donnée brute et assurer l’intégrité des données. Il existe beaucoup de passerelles plus ou moins professionnelles. Vous pouvez les retrouver en partie ici : https://www.thethingsnetwork.org/docs/gateways/start/list.html
  • Un/des serveur(s) pour stocker les données et la rediriger vers votre service de traitement de l’information.

Bien entendu, ce réseau LoRaWAN est sécurisé de bout en bout et vous serez le seul à pouvoir interpréter les données. (sachant que le risque de piratage ne peut pas être égal à zéro)

Chaque objet souhaitant se connecter sur le réseau devra choisir sa « classe » et son mode d’authentification (OTAA – Over The Air ou ABP – Activation By Personalization) et ensuite, renseigner, selon son mode d’authentification, ses identifiants:

Pour OTAA : DEVEUI, APPEUI, APPKEY
Pour ABP :  DEVADDR, NWSKEY, APPSKEY

Pour la classe, il en existe 3 (A, B, C). Chacune utilise un mode de communication différent:

  • Class A : On envoie un message toutes les x minutes et on se met en écoute x secondes dans la foulée au cas où il y aurait 1 message à réceptionner. Ce mode, destiné aux objets sur pile permet de très peu consommé. (majorité du temps en veille)
  • Class B : Cette classe est une sorte de compromis entre la classe A et C. Elle utilise des « beacons » permettant une synchronisation entre le serveur et l’appareil. Du coup, l’appareil se mettra en écoute au moment ou le serveur enverra un message. Ce mode est encore très peu utilisé et incompatible avec les opérateurs publiques.
  • Class C : Dans ce mode, on est en écoute permanente de messages. On peut émettre toutes les X minutes (en respectant les normes et les temps d’occupation de la fréquence). Ce mode est destiné aux appareils alimentés.

Alors je sais, je survole de très haut tout ces concepts (et ça me perturbe parce que j’ai l’impression de rien dire) mais c’est tellement vaste … Bref voici les éléments essentiels de ce réseau que je trouve encore trop peu connu.

L’autre réseau IoT…

Dans la même catégorie, il existe aussi le réseau Frenchie Sigfox (cocorico bis) qui n’utilise pas du tout la même modulation et qui a l’inconvénient de ne fonctionner qu’en passant par un opérateur (mais ça changera…). Je développerai sans doute des produits sur ce réseau et je ne manquerai pas de vous en faire part.

Alors, l’autre énorme avantage que je n’ai pas cité plus haut de ces réseaux, c’est que les appareils ne consomment quasiment rien pour émettre leur message et du coup permet de créer des IoT sur pile (ou sans pile), très petit et qui durent dans le temps. Mais bon vu que ce projet, en particulier, est sur alimentation USB, ce point est moins important. (Mais sera la base des projets suivants ;))

Les besoins du projets

Alors pour réaliser ce projet, il y a 3 points importants :

L’alimentation

Il y a de grandes chances qu’il faille du 3.3VDC (souvent utilisé dans les microcontrôleurs). La LoRaGate sera branchée en USB (5VDC) donc il faudra une régulation de tension. Contrairement au WiFi gourmant, le LoRa devrait consommer 50 mA lors de l’émission (consommation max du coup)  donc la régulation n’aura pas besoin d’être dans la « puissance ».

Le driver USB-TTL

Pour faire communiquer la LoRaGate avec son hôte, il faut évidemment pouvoir transformer les signaux TTL vers l’USB et inversement. Et pour cela, il faut un pilote. J’en ai déjà testé quelques un lors de mes projets antérieurs et je pense que le pilote FTDI répondra au besoin et notamment sur la partie régulation 3.3VDC.

Avec ce pilote, on ne se trompe pas beaucoup, il fera le taff et sera fiable. Le seul inconvénient, c’est son prix mais comme il peut nous faire économiser la partie régulation, ça compense.

Le module Radio

Enfin le dernier élément, le module LoRa. Il existe pleins de solutions et de combinaisons pour dialoguer en LoRa mais pour ce projet, je souhaitais quelque chose de simple et « ready to play ». Après quelques recherches, je suis tombé sur ce module : le E78-868LN22S

Alors, il est assez cher mais il est vraiment prêt à l’emploi. Il suffit de lui envoyer des commandes AT pour le paramétrer et envoyer des messages. Comme un vulgaire SIM800L 😉

Conclusion

Bon, on va pas se le cacher, la partie 1, c’est la partie la plus pompeuse… beaucoup de théorie et du blabla technique. Pourtant, promis, j’essaie de faire le plus synthétique (quitte à faire d’énormes raccourcis). Malgré tout, c’est le passage indispensable.

Voilà ce qu’on a appris dans cette partie.

  • L’objectif du produit est assez clair. Passerelle ou Modem LoRaWAN pour box domotiques.
  • On comprend comment la modulation radio et le réseau fonctionne.
  • On a listé les besoins primaires pour concevoir le produit.

Dans la prochaine partie, on verra comment faire la schématique et le design du produit au travers d’Eagle CAD.

A bientôt.

EDIT : Le Modem LoRaGate est désormais disponible sur la boutique

Capteur température Zigbee pour piscine – Détournement Konke

Bon, cet article n’est pas en soi une nouveauté, mais il est plutôt un complément de l’article précédent. Donc, si vous ne comprenez pas tout ou qu’il manque des choses, faites un saut sur le lien.

D’ailleurs, vous avez pu voir que le détournement en question avait un défaut. Il n’était pas vraiment adapté à la piscine mais plutôt au domaine de l’agriculture… Du coup, j’ai reacheté (grâce à vos liens … merci ) le bon capteur étanche pour le Xiaomi Aqara.

Capteur_exterieur_sht31Capteur à choisir : SHT20
URL : https://fr.aliexpress.com/item/32905069890.html
Prix : ~= 13€

En suivant, le même principe décrit dans l’article du détournement, le capteur fonctionne très bien dans l’eau.

 

Konke, un capteur plus adapté

Comme vous le lisez souvent dans mes articles, Xiaomi est pour moi une super marque que j’adore détourner. Cependant, elle a pour mon cas personnel un gros problème de stabilité de connexion. Il faut que le maillage zigbee et la distanciation soit maîtrisée. Du coup, pour mon cas personnel, par rapport à la piscine, ça ne va pas et les déconnexions sont trop nombreuses car la piscine est trop éloignée de ma ZiGate.

Pour résoudre mon problème, j’ai testé quelques autres capteurs et le capteur Konke semble mieux fonctionner (il faut juste penser à paramétrer son canal zigbee sur 15, 20 ou 25)

konke_temperature_humidite

J’ai donc suivi le même mécanisme de détournement et voici le résultat:

capteur_konke_demonte

Voici le capteur démonté, on repère en haut à droite le capteur de température / humidité SHT20. La seule « difficulté » est de dessouder ce capteur. Personnellement, je le fait avec un pistolet à air chaud.

capteur_sht20

capteur_sht20_dessoude

Une fois dessoudé, il faut repérer les pattes SDA et SCL. (en suivant la datasheet) Pour cette fois, il est possible de souder les straps (petits fils) directement sur l’emplacement du capteur.

straps_sht20

(SCL à gauche et SDA à droite)

Voilà le plus dur est fait !

Il ne reste plus qu’à souder le capteur étanche SHT20 ( vous pouvez l’acheter sur le même lien qu’en haut en sélectionnant SHT20)

Pour l’alimentation du capteur, j’utilise exactement le même principe que dans l’article précédent.

alimentation_capteur_konke alimentation_capteur_konke_pilecapteur_konke_sht20

(l’étiquette sur le capteur donne la correspondance couleur / fonction)

A partir de cette étape, il faut tester que tout fonctionne avant de figer mécaniquement l’ensemble (Appairage et remonter de température + humidité)

Si tout est OK, on bloque avec de la colle chaude.

blocage_colle_chaude_sht20

blocage_colle_chaude_alimentation

Enfin, on appaire le capteur à la ZiGate et on remet tout dans son boitier étanche.

boitier_etanche_konke

Pensez à disposer l’antenne vers le haut, c’est toujours mieux.

boitier_etanche_konke_fini

On revisse enfin l’ensemble et c’est fait ! plouf dans la piscine

piscine_capteur_sht20_konke

Conclusion

Bon finalement, cela ne s’est pas fait du premier coup. Il a fallu quelques échecs pour arriver à ses fins. Cependant, il reste encore une étape pour atteindre la « perfection », c’est rajouter un bouton étanche au boitier, pour piloter le bouton d’appairage.

Avec ce capteur Konke, je n’ai plus eu de problèmes et cela fait 2 semaines qu’il est en test sans déconnexion. (Du coup, le bouton n’est plus indispensable)

Normalement, la pile CR123A devrait tenir dans les 3 ans … je vous tiendrai au courant … si je fais encore des articles 😉

La précision du capteur est toujours bonne. Les capteurs Sensirion ont, en général, une bonne précision et j’ai pu remarqué un décalage de 0.15 °C par rapport au DS18B20 que j’utilise en parallèle.

Capture_jeedom_temperature

Bref, ce hack a souvent été demandé et c’est chose faite… A vous de jouer maintenant !

A bientôt !

Installation de Frigate dans un LXC Proxmox

Installation de Frigate dans un LXC Proxmox

Aujourd'hui, on va parler d'une des raison qui m'a fait passer de ESXi à Proxmox, que vous avez pu découvrir dans l'article suivant :

Migration de ESXI à Proxmox
Aujourd’hui nous allons parler hyperviseur et virtualisation. Les deux solutions d’hyperviseur populaires sont VMware ESXi et Proxmox VE . Ces 2 plateformes de virtualisation permettent d’exécuter des machines virtuelles ou des conteneurs. Dans le monde professionnel, VMware est le roi de la virtua…
Installation de Frigate dans un LXC ProxmoxDomoPiHexamus
Installation de Frigate dans un LXC Proxmox

Il s'agit d'un conteneur, Frigate, un NVR (Network Video Recorder) qui possède une IA (Intelligence Artificielle) capable d'identifier les personnes et objets sur des flux vidéos. Cela permet d'améliorer son système de vidéosurveillance et d'éviter de recevoir des alertes intempestives lorsqu'une feuille a bougé ou qu'un nuage passe.

Installation de Frigate dans un LXC Proxmox

Pour cette analyse, Frigate a besoin de disposer de ressources, ce qu'il est possible de faire avec le CPU, mais ceci est très gourmand. Le développement a donc été réalisé autour du Google Coral, qui a été spécifiquement étudié pour procéder à de l'analyse vidéo. Celui-ci est donné pour être aussi performant que des CPU à 2000€, mais pour seulement 60€ ! Pour ma part, j'ai acheté la version USB d'occasion, celui-ci étant très compliqué à trouver actuellement.

Installation de Frigate dans un LXC Proxmox

Pour déployer Frigate, nous n'allons pas utiliser Docker directement (je vous entends "quoi un conteneur mais pas de Docker ?") mais un LXC dans Proxmox.
Une petite définition de LXC pour essayer de mieux comprendre ce que c'est :

LXC est l'acronyme de l'anglicisme LinuX Containers, il s'agit d'un système de virtualisation, utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ».

Mais alors Docker, machine virtuelle et LXC sont tous trois de la virtualisation, mais quelles sont leurs différences ?

  • Docker permet de virtualiser des service. Chaque conteneur Docker correspond à un service.
  • Un conteneur LXC est un environnement virtuel qui ne possède pas de partie physique émulée.
  • Une machine virtuelle est une émulation d'une machine physique à laquelle des ressource physique sont attribuées.

Je sens que beaucoup viennent de bondir de leur chaise ! Alors oui, j'ai extrêmement vulgarisé cela. Pour moi, je place les LXC entre un conteneur Docker et une machine virtuelle.

Bon nous avons une explication sur les LXC et nous savons que nous voulons utiliser le conteneur Frigate. On va pouvoir se lancer dans le vif du sujet.
Alors on se connecte à son interface Proxmox pour prendre la direction du stockage et télécharger le Template de notre conteneur, pour lequel nous allons choisir Debian 11 Standard.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant on va pouvoir créer notre LXC, à l'aide d'un clic droit sur notre serveur, on peut choisir Create CT. Il vous suffit de donner un nom au conteneur et de choisir le mot de passe pour votre utilisateur root du LXC. Pour le reste, rien de spécial, à vous d'ajuster les valeurs en fonction de vos besoins, envies et surtout du hardware.

Attention ! Ne pas cocher "Démarrer après création" à la fin.
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Avant le lancement du LXC, nous allons apporter quelques modifications, on commence par ajouter une particularité pour ne pas avoir de souci de SSH sous Debian 11.

Installation de Frigate dans un LXC Proxmox

Nous allons ensuite modifier le fichier de configuration pour permettre au LXC d'avoir accès au bus USB (adapter le numéro de bus au besoin) et au IGPU (voici un article pour mieux comprendre le IGPU). Pour cela, utilisez la commande suivante en SSH nano /etc/pve/lxc/ID.conf (en indiquant l'ID du conteneur que vous avez choisi).

Voici le contenu de mon fichier de configuration après ajout des dernières lignes.

arch: amd64
cores: 2
features: nesting=1
hostname: frigate
memory: 4096
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=AA:73:AE:CB:75:D9,ip=dhcp,ip6=dhcp,type=veth
ostype: debian
rootfs: local-lvm:vm-100-disk-0,size=16G
swap: 512
onboot: 1
unprivileged: 0
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.entry: /dev/bus/usb/002 dev/bus/usb/002 none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

Nous allons en profiter pour ajouter un montage de disque, pour permettre d'avoir la configuration stockée sur le NUC et la sauvegarde des médias sur le NAS Synology où j'ai plus d'espace de stockage.
Sur le NAS, il faut ajouter configurer le dossier partagé en NFS, je vous ai mis une capture d'écran de ma configuration juste en dessous.
Retournons sur Proxmox pour ajouter le stockage NFS dans le datacenter, où il vous faudra renseigner un nom pour le montage, l'adresse IP du serveur, le chemin d'accès au dossier (il est possible de rajouter des sous dossiers) et en contenu choisir Conteneur.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Maintenant, direction le LXC pour rajouter le Point de montage comme Ressources. Il vous faudra sélectionner le Stockage monté précédemment, dans mon cas NVR, et choisir la taille du disque ainsi que le chemin de montage sur le LXC. Vous pourrez vérifier le bon montage une fois le conteneur LXC démarré.

Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox
Installation de Frigate dans un LXC Proxmox

Le moment de démarrer le conteneur LXC est enfin arrivé ! Cela peut être long au premier démarrage, il faut avoir un peu de patience.

Comme sur chaque nouvelle installation, je vous recommande de commencer par mettre à jour le système avec les commandes apt-get update && apt-get upgrade.

Frigate est disponible en tant que conteneur Docker, nous allons donc installer Docker et pour cela je vous renvoie vers l'article qui en parle.

Installation de Frigate dans un LXC Proxmox

Suite à cela, nous allons installer Docker compose ou Portainer, dans mon cas j'utilise Portainer.

On va pouvoir vraiment attaquer Frigate avec la création de sa stack. Voici le contenu, à adapter selon vos besoins.

version: "3.6"
services:
  frigate:
      container_name: frigate
      restart: unless-stopped
      privileged: true
      image: blakeblackshear/frigate:stable-amd64
      volumes:
        - /dev/bus/usb:/dev/bus/usb
        - /etc/localtime:/etc/localtime:ro
        - volume-frigate-config:/config
        - /frigate/media:/media/frigate
#        - /ruser/0:/tmp/cache
#        - <path_to_directory_for_recordings>:/media/frigate/recordings
        - type: tmpfs # 1GB of memory, reduces SSD/SD Card wear
          target: /tmp/cache
          tmpfs:
            size: 1000000000
      ports:
        - 5000:5000
        - 1935:1935 # RTMP feeds
      healthcheck:
        test: ["CMD", "wget" , "-q", "-O-", "http://localhost:5000"]
        interval: 30s
        timeout: 10s
        retries: 5
        start_period: 3mfr

volumes:
  volume-frigate-config:
      driver: local

Le conteneur ne devrait pas réussir à démarrer car il manque le fichier de configuration. Dans le volume config, créer un fichier config.yml.

Voici la page de la documentation officielle pour vous aider à remplir ce fichier de configuration, et vous trouverez ci-dessous l'exemple de base :

mqtt:
  host: mqtt.server.com
cameras:
  back:
    ffmpeg:
      inputs:
        - path: rtsp://viewer:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2
          roles:
            - detect
            - rtmp
    detect:
      width: 1280
      height: 720

Une fois le fichier renseigné, vous pouvez relancer le conteneur Docker et accéder à l'interface depuis votre navigateur sur l'adresse http://<IP.DU.LXC>:5000. Vous arriverez directement sur le Dashboard (sur lequel il n'y a pas de mot de passe).
Voilà à quoi il ressemble chez moi après avoir ajouté quelques caméras :

Installation de Frigate dans un LXC Proxmox

Conclusion

J'espère que cette découverte de la mise en place l'outil Frigate vous a plu, et je pense rédiger un second article pour vous le présenter en détails et voir ensemble comme le configurer et l'utiliser.

Si vous avez des questions sur l'installation de Frigate, ou même sur sa configuration ou son utilisation, n'hésitez pas à laisser un commentaire ou à venir nous retrouver sur le groupe Telegram de la communauté.

❌
❌