Purger un dossier spécifique tous les jours

Mon objectif

J’ai remarqué qu’un nombre important de fichiers vient charger mon ordinateur inutilement.

Les fichiers que je télécharge pour consulter une doc, lire un article ou autre, les chargements de logiciels qui laissent leur fichier EXE d’instalaltion et autres…

Je voudrais m’obliger à utiliser un dossier temporaire et que celui-ci se purge tous les jours si les fichiers ont plus de 2 jours. Lire la suite

Je vérifie les fuites de mes courriels

Objectif

En ce moment, c’est la cata, les cyberattaques et les exfiltration de données sont presque quotidiennes, j’ai besoin d’être rassuré sur les fuites de mes adresses mails.

J’ai donc créé cette carte HA:

Principe

Il existe plusieurs sites qui sont capables de tester si mon adresse mail est compromise ou pas.

La compromission d’une adresse e-mail se produit lorsque les informations associées à cette adresse (comme le mot de passe, les contacts, ou les données personnelles) sont exposées à des tiers non autorisés, généralement à la suite d’une violation de données. Cela peut se produire lorsque des bases de données de services en ligne sont piratées, et les informations des utilisateurs sont volées puis divulguées ou vendues sur des forums ou des sites du darknet. Une adresse e-mail compromise peut être utilisée pour envoyer des spams, des attaques de phishing, ou accéder à d’autres comptes liés à cette adresse, mettant en danger la sécurité et la confidentialité de l’utilisateur.

Le site le plus connu d’entre tous est :

Mais ce site ne fourni plus d’API sans abonnement, j’ai cherché une autre solution et j’ai trouvé le site :

Ce site propose une APIV2 payante mais a laissé son APIV1 en ligne, elle est plus légère mais elle me suffit pour savoir si mon courriel est compromis et s’il est compromis, combien y a t il de fuites. Cette api n’a en plus pas besoin de token d’authentification, c’est donc bien plus simple.

Voici le lien vers la doc de l’API :

Je crée des requêtes REST dans sensors.yaml

J’ai de manière très classique organisé mes fichiers de configurations dans des fichiers YAML qui sont appelés par configuration.yaml.

sensor: !include sensors.yaml

L’appel que je vais faire est au format :

https://leakcheck.io/api/public?check=monmail@mail.fr

Le résultat est au format json, par exemple :

{
  "success": true,
  "found": 7,
  "fields": [
    "last_name",
    "country",
    "first_name",
    "username",
    "dob",
    "password",
    "city"
  ],
  "sources": [
    {
      "name": "Deezer.com",
      "date": "2019-09"
    },
    {
      "name": "Badoo.com",
      "date": "2013-07"
    }
  ]
}
  • found donne le nombre de compromission ou plutôt le nombre de bases de données pirates qui contiennent le mail. 
  • fields est inutile à ce stade
  • sources donne les noms et bases de données des compromissions mais dans la version gratuite, on n’a visiblement pas l’exhaustivité.

Voici le code que j’ajoute pour un mail d’exemple :

- platform: rest
  name: "demo46@mail.comr"
  unique_id: "sensor.fuite_demo46_mail_com"
  resource: https://leakcheck.io/api/public?check=demo46@mail.com
  scan_interval: 86400  # Intervalle de scan en secondes 86400s = 1 jour
  value_template: "{{ value_json.success }}"  
  json_attributes:
    - found
    - sources  

Je renomme le sensor créé

Je dois relancer HA ou au moins recharger la config Yaml, et le sensor arrive.

Je suis toujours surpris que l’unique_id ne soit pas pris en compte, rien de grave, je le corrige manuellement. J’utilise sensor.fuite* car c’est une carte auto-entities que j’utiliserai ensuite.

Je vais créer la carte

Le code est assez complexe, je suis parti du code de l’excellent herveaurel pour ses batteries.

Voici ce que j’ai ajouté dans l’éditeur de configuration pour configurer type: custom:button-card  et template: leak_card

button_card_templates:
  leak_card:
    variables:
      entity: '[[[ return entity.entity_id ]]]'
    entity: '[[[ return variables.entity ]]]'
    icon: |
      [[[
        return entity.state === "True" ? "mdi:car-brake-alert" : "mdi:shield-lock-outline"
      ]]]
    name: '[[[ return entity.attributes.friendly_name ]]]'
    label: |
      [[[
        return entity.state === "True" 
          ? `Compromis<br>${entity.attributes.found} fuites` 
          : "Protégé"
      ]]]
    show_icon: true
    show_state: false
    show_label: true
    template:
      - no_style
      - police
    tap_action:
      action: more-info
    double_tap_action:
      action: toggle
    custom_fields:
      barre:
        card:
          type: custom:bar-card
          entities:
            - entity: '[[[ return variables.entity ]]]'
              color: |
                [[[ 
                  var state = entity.state;
                  if (state === "True") {
                    return "var(--card-red)";
                  } else {
                    return "var(--card-green)";
                  }
                ]]]
          direction: right
          positions:
            name: 'off'
            indicator: 'off'
            value: 'off'
          height: 50px
          width: 100%
          icon: 'off'
          entity_row: true
    styles:
      card:
        - height: 40px
        - padding: 2px
        - animation: blink 0.8s ease infinite
      icon:
        - position: absolute
        - width: 25px
        - color: var(--orange)
        - left: calc((7%) - 5px)
        - margin-bottom: 2px
      name:
        - position: absolute
        - font-size: 13px
        - color: var(--orange)
        - font-weight: 500
        - left: calc((20%) - 15px)
      label:
        - position: absolute
        - font-size: 13px
        - color: |
            [[[ 
              var state = entity.state ;
                if (state === "True")   
                return "var(--red)"              
                else 
                return "var(--green)"
             ]]]
        - font-weight: 600
        - width: 100%
        - text-align: center
        - left: calc((10%) + 70px)
      custom_fields:
        barre:
          - top: '-19%'
          - left: '-50%'
          - width: 100%
          - position: absolute
          - z-index: 0
    state:
      - value: 'False'
        styles:
          icon:
            - color: var(--green)
          name:
            - color: var(--green)
          card:
            - animation: none
      - value: unknown
        styles:
          name:
            - color: var(--grey)
          label:
            - color: var(--grey)
          card:
            - animation: blink 0.8s ease infinite
      - value: unavailable
        styles:
          name:
            - color: var(--grey)
          label:
            - color: var(--grey)
          card:
            - animation: blink 0.8s ease infinite

Et voici le code de la carte :

type: entities
card_mod:
  style: |
    ha-card { 
     background-color: var(--card-background-color);
     border-radius: var(--ha-card-border-radius) !important;
     } 
entities:
  - type: custom:decluttering-card
    template: header
    variables:
      - name: Fuites des courriels
      - icon: mdi:home-battery
  - type: custom:auto-entities
    card:
      type: entities
      show_header_toggle: true
    filter:
      include:
        - entity_id: sensor.fuite*
          options:
            type: custom:button-card
            template: leak_card
    sort:
      method: state
      numeric: true
      ignore_case: false
      ip: false
    show_empty: true

Et la carte terminée apparait

 

Serrures de la marque Welock

Objectif

Sur sollicitation de la marque, j’ai testé leurs produits. Et franchement, ils méritent que je leur dédie cette page pour présenter leurs produits.

En passant par Alexa, je suis arrivé à assurer le lien entre les commandes vocales d’Alexa et les serrures de cette marque, c’est particulièrement intéressant.

 

Dans l’autre sens, je suis arrivé à faire figurer sur mon Dashboard les serrures et d’un clic sur ce widget, j’active le déverrouillage de la serrure. 

Qui est Welock ??

WELOCK est une entreprise spécialisée dans les solutions d’accès intelligentes pour les maisons, combinant plus de 10 ans d’expérience dans le développement, la fabrication et la commercialisation de serrures intelligentes. Fondée en 2013, WELOCK s’est rapidement imposée comme un acteur majeur dans le secteur des serrures connectées, avec un accent particulier sur la sécurité et la commodité. Leur mission est de populariser des produits de maison intelligente de haute qualité, offrant aux utilisateurs une expérience de vie plus sûre et pratique.

L’innovation est au cœur de la stratégie de WELOCK, avec des produits phares comme les cylindres de serrures intelligentes et les cylindres de serrures à empreintes digitales. L’entreprise a marqué l’industrie en étant la première au monde à intégrer la technologie biométrique d’empreintes digitales dans les cylindres de serrures. Cette avancée technologique permet un contrôle d’accès moderne, sécurisé et simplifié, sans avoir besoin de clés physiques.

WELOCK a su étendre son influence à l’échelle mondiale, établissant des partenariats en Europe, en Amérique du Nord, au Moyen-Orient et en Australie, afin de fournir des services et un support localisés à ses utilisateurs. La société est basée à Shenzhen, en Chine, sous la dénomination MYHAND IN CHINA LIMITED, située dans un important centre technologique du pays.

Mon interlocuteur WELOCK se situe en Allemagne, cela confirme l’implication européenne de la marque.

Le site de WELOCK est disponible sur https://www.welock.com/ Toute la gamme de ses produits est présentée.

Les trois produits que j’ai testé

  • La serrure biométrique Touch61

La serrure à clavier (PCB41)

La wifibox3 qui assure l’interface domotique

Message temporaire, une promotion d’été

Pour le lancement de ses nouveaux produits, Welock a une promotion d’été particulièrement intéressante.

Je vous offre les codes qui m’ont été envoyés, je ne suis pas commissionné dessus, c’est cadeau, profitez en :

  • Touch61 Fingerprint Door Lock
https://www.welock.com/SIGABL58666
Origin price: 219EUR
Coupon code: VD50
Final price: 169EUR
  • PCB41 keypad smart lock
https://www.welock.com/SIGLBL58666
Origin price: 149EUR
Coupon code: FD40
Final price: 109EUR
  • Touch41 fingerprint smart lock (work for 50-100mm door thick)
https://www.welock.com/SIGUBL58666
Origin price: 189EUR
Coupon code: VD50
Final price: 139EUR
  • SECBN51 fingerprint smart lock (work for 30-70mm door thick)
https://www.welock.com/SIALBL58666
Origin price: 189EUR
Coupon code: VD50
Final price: 139EUR

 

Je teste la serrure connectée WELOCK à empreinte digitale (Touch61)

Objectif

Sur proposition du fabriquant, j’ai accepté de tester cette serrure qui peut s’intégrer facilement dans une maison domotisée.

Le modèle testé est le tout nouveau modèle avec lecteur d’empreintes digitales adapté aux portes entre 50 et 90mm de large. La gamme du fabriquant compte plusieurs modèles, il faudra bien choisir celui qui correspond à la largeur de la porte. Lire la suite

Je teste la passerelle Welock wifibox3 pour une intégration domotique des serrures Welock

Objectif

Sur proposition du fabriquant, j’ai accepté de tester cette passerelle BT-Wifi, complément des serrures connectées de la marque, qui peut s’intégrer facilement dans une maison domotisée.

Je vais donc tenter de relier la serrure Welock à Alexa et ainsi la piloter à distance ou à la voix.


Je vais également tenter d’intégrer la serrure au sein de Home Assistant pour pouvoir la déverrouiller depuis mon Dashboard Home Assistant…

Lire la suite