Difficoltà: Media | Tempo stimato: 2–3 ore | Requisiti: Home Assistant OS/Supervised, account Tuya IoT Platform, gateway Tuya BT/Wi-Fi


1. Introduzione: cos’è il Parkside PMRC 250 A1 e perché integrarlo in Home Assistant

Il Parkside PMRC 250 A1 (venduto da Lidl) è un robot tagliaerba compatto, economico e sorprendentemente capace. Nonostante il prezzo contenuto, nasconde sotto la scocca un’anima smart: il firmware è basato su Tuya, la stessa piattaforma IoT usata da migliaia di dispositivi connessi in tutto il mondo.

Caratteristiche tecniche principali

CaratteristicaValore
Superficie massima250 m²
Larghezza di taglio16 cm
Altezze di taglio25 / 35 / 45 mm
BatteriaLi-Ion 20 V – 2,0 Ah
ConnettivitàBluetooth (BLE) via app Parkside
Pendenza massima15° (27%)
Modalità di taglioBordo completo, Zone secondarie (fino a 5), Spot
ProtezioneSensore pioggia, PIN, sensore sollevamento/inclinazione
MotoreBrushless

Il robot è controllabile tramite l’app Parkside via Bluetooth, ma non supporta il Wi-Fi nativamente. Questo è il punto cruciale: per integrarlo in Home Assistant occorre un passaggio intermedio — un gateway Tuya Bluetooth/Wi-Fi che faccia da ponte tra il BLE del robot e la rete di casa.

Perché integrarlo in Home Assistant?

Una volta collegato, potrai:

  • Monitorare stato, livello batteria, errori e avvisi in tempo reale
  • Avviare e fermare il taglio da dashboard o da automazioni
  • Programmarlo in base a condizioni meteo, orari, o altri sensori della tua smart home
  • Ricevere notifiche push su smartphone quando il robot torna alla base o segnala un errore
  • Integrarlo in routine complesse (es. “non falciare se piove o se ci sono persone in giardino”)

2. Configurazione del gateway Tuya Bluetooth/Wi-Fi

Il Parkside PMRC 250 A1 comunica solo via Bluetooth BLE. Per esporlo sulla rete Wi-Fi locale (e quindi renderlo raggiungibile da Home Assistant via tuya-local), serve un gateway multi-protocollo Tuya che supporti BLE Mesh/BLE Sub-device.

2.1 Gateway consigliati

Cerca su Amazon o AliExpress gateway con queste caratteristiche:

  • Protocolli: Wi-Fi 2,4 GHz + Bluetooth (BLE/BLE Mesh)
  • Ecosistema: Tuya / Smart Life compatibile
  • Modelli noti funzionanti: gateway Tuya multi-mode (es. quelli venduti sotto brand Moes, Aubess, LSC Smart Connect)

⚠️ Attenzione: Non tutti i gateway Tuya BT supportano sub-device generici. Cerca modelli descritti come “BT Gateway” o “Multi-mode Gateway” che nella scheda tecnica citino “BLE Mesh sub-device support”.
Io ho preso questo modello di MOES su Aliexpress perchè mi piaceva la compattezza.

2.2 Installazione fisica del gateway

  1. Posiziona il gateway entro 5–10 metri dalla stazione di ricarica del robot — il Bluetooth ha portata limitata.
  2. Alimenta il gateway tramite USB o presa a muro secondo il modello scelto.
  3. Assicurati che il tuo router eroghi il segnale Wi-Fi 2,4 GHz in quella zona.

2.3 Configurazione tramite app Tuya Smart / Smart Life

  1. Scarica l’app Tuya Smart o Smart Life su Android/iOS.
  2. Crea un account (o accedi se ne hai già uno).
  3. Tap su “+” in alto a destra → “Aggiungi dispositivo”.
  4. Cerca il tuo gateway nell’elenco o scansiona il QR sul dispositivo.
  5. Segui la procedura guidata: inserisci le credenziali Wi-Fi di casa (solo 2,4 GHz), attendi il lampeggio di conferma.
  6. Una volta aggiunto il gateway, torna alla home dell’app.

2.4 Aggiunta del robot al gateway

  1. Nell’app Tuya Smart, apri il gateway appena aggiunto.
  2. Cerca l’opzione “Aggiungi sub-device” o “Cerca dispositivi Bluetooth”.
  3. Avvicina lo smartphone al robot, accendilo e attivalo in modalità pairing (consulta il manuale: di solito basta tenerlo acceso con il coperchio chiuso).
  4. Il robot dovrebbe comparire come “Parkside Robot Mower” o con Product ID 7yr5iwga.
  5. Conferma l’aggiunta: il robot è ora visibile nell’app Tuya come sub-device del gateway.

Verifica: Prova a mandare il robot al taglio e al rientro dalla base direttamente dall’app Tuya. Se funziona, il bridge BT→Wi-Fi è operativo.


3. Collegamento a Home Assistant con l’integrazione Tuya Local

Ora che il robot è su Wi-Fi tramite gateway, possiamo collegarlo a Home Assistant localmente, senza cloud, usando l’integrazione tuya-local (HACS).

3.1 Ottenere le credenziali Tuya IoT

Poiché il robot è collegato come sub-device del gateway, tuya-local richiede tre valori distinti:

ValoreA cosa si riferisce
IP addressIndirizzo IP locale del gateway
Device IDID del gateway (non del robot)
Local KeyChiave locale del gateway
node_idID univoco del robot all’interno del gateway

Il modo più semplice per recuperare tutti questi valori è lo strumento tinytuya:

  1. Vai su iot.tuya.com e accedi (o registrati).
  2. Crea un nuovo progetto: Cloud → Development → Create Cloud Project.
    • Nome: qualsiasi (es. “HomeAssistant”)
    • Tipo: Smart Home
    • Regione: Europe (West)
  3. Nella tab “API Products”, abilita almeno:
    • Smart Home Scene Linkage
    • IoT Core
    • Device Status Notification
  4. Vai su “Link Tuya App Account” e collega il tuo account Tuya Smart scansionando il QR con l’app.
  5. Installa tinytuya ed esegui il wizard:
pip install tinytuya
python -m tinytuya wizard
  1. Inserisci Client ID, Secret e Region (eu) dal tuo progetto IoT quando richiesto. Il wizard scarica automaticamente tutti i dispositivi associati all’account e li salva in devices.json.
  2. Apri devices.json e individua i due dispositivi che ti servono:
    • Il gateway — annotane id (device_id), key (local_key) e ip
    • Il robot (elencato come sub-device) — annotane il campo node_id

💡 Come riconoscerli: Il gateway compare come dispositivo Wi-Fi con un IP nella tua rete locale. Il robot compare come sub-device privo di IP proprio, con un node_id nel formato xxxxxxxxxxxx.

3.2 Installazione di tuya-local via HACS

  1. In Home Assistant, vai su HACS → Integrazioni → “+”.
  2. Cerca “Tuya Local” e installala.
  3. Riavvia Home Assistant.

3.3 Aggiunta del dispositivo

  1. Vai su Impostazioni → Dispositivi e Servizi → Aggiungi integrazione.
  2. Cerca “Tuya Local” e avvia la configurazione.
  3. Inserisci i valori recuperati con tinytuya nel passaggio precedente:
    • IP address → IP locale del gateway
    • Device ID → ID del gateway
    • Local Key → chiave locale del gateway
    • node_id → ID del robot (sub-device)
    • Protocol version: 3.3 o 3.4 (prova 3.3 prima)

ℹ️ Perché gateway e non robot? tuya-local si connette via Wi-Fi al gateway, che fa da proxy verso il robot BLE. Il device_id identifica il gateway sulla rete, mentre il node_id permette all’integrazione di indirizzare i comandi specificamente al robot registrato come sub-device.

3.4 Selezione del profilo dispositivo

A partire dalla versione 2026.5.0 di tuya-local, il Parkside PMRC 250 A1 è supportato ufficialmente — il profilo del robot viene riconosciuto e selezionato automaticamente durante la configurazione. Ho testato personalmente questa versione: il dispositivo viene identificato correttamente senza alcuna configurazione manuale dei data point (vedi issue #4859 su GitHub).

Assicurati di avere tuya-local ≥ 2026.5.0 prima di procedere. In HACS puoi controllare la versione installata in HACS → Integrazioni → Tuya Local.

4. Setup e ottimizzazioni in Home Assistant: dashboard e automazioni

Con il robot integrato, è il momento di costruire un’esperienza d’uso che valga davvero.

4.1 Dashboard Lovelace

Crea una card dedicata al robot nella tua dashboard. Ecco un esempio con la card Mushroom (da HACS):

type: vertical-stack
cards:
  - type: custom:mushroom-entity-card
    entity: lawn_mower.parkside_pmrc250
    name: Robot Tagliaerba
    icon: mdi:robot-mower
    tap_action:
      action: more-info

  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: "Batteria"
        secondary: "{{ states('sensor.parkside_battery') }}%"
        icon: mdi:battery
        icon_color: >
          {% if states('sensor.parkside_battery')|int > 50 %}green
          {% elif states('sensor.parkside_battery')|int > 20 %}orange
          {% else %}red{% endif %}

      - type: custom:mushroom-template-card
        primary: "Stato"
        secondary: "{{ states('sensor.parkside_status') }}"
        icon: mdi:information-outline

  - type: custom:mushroom-chips-card
    chips:
      - type: action
        icon: mdi:play
        tap_action:
          action: call-service
          service: lawn_mower.start_mowing
          target:
            entity_id: lawn_mower.parkside_pmrc250
      - type: action
        icon: mdi:pause
        tap_action:
          action: call-service
          service: lawn_mower.pause
          target:
            entity_id: lawn_mower.parkside_pmrc250
      - type: action
        icon: mdi:home
        tap_action:
          action: call-service
          service: lawn_mower.dock
          target:
            entity_id: lawn_mower.parkside_pmrc250

4.2 Automazione: taglio programmato con controllo meteo

Fai lavorare il robot solo quando il tempo lo permette, sfruttando l’integrazione meteo di HA:

alias: "Parkside: taglio mattutino (se sereno)"
description: "Avvia il robot ogni mattina in settimana se non piove"
trigger:
  - platform: time
    at: "08:30:00"
condition:
  - condition: time
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
  - condition: state
    entity_id: weather.casa
    state: sunny
    # oppure 'partlycloudy', 'cloudy' — escludi 'rainy', 'pouring', 'lightning'
  - condition: numeric_state
    entity_id: sensor.parkside_battery
    above: 30
action:
  - service: lawn_mower.start_mowing
    target:
      entity_id: lawn_mower.parkside_pmrc250
  - service: notify.mobile_app_tuo_telefono
    data:
      message: "🌿 Robot tagliaerba avviato!"
      title: "Parkside PMRC 250"
mode: single

4.3 Automazione: notifica al completamento e rilevamento errori

alias: "Parkside: notifica stato"
trigger:
  - platform: state
    entity_id: sensor.parkside_machinestatus
    to: "CHARGING"
    from: "MOWING"
  - platform: state
    entity_id: sensor.parkside_machinestatus
    to: "ERROR"
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: sensor.parkside_machinestatus
            state: "CHARGING"
        sequence:
          - service: notify.mobile_app_tuo_telefono
            data:
              message: "✅ Taglio completato! Il robot è tornato alla base."
              title: "Parkside PMRC 250"
      - conditions:
          - condition: state
            entity_id: sensor.parkside_machinestatus
            state: "ERROR"
        sequence:
          - service: notify.mobile_app_tuo_telefono
            data:
              message: "⚠️ Errore robot tagliaerba! Controlla il giardino."
              title: "Parkside PMRC 250"
mode: single

4.4 Il problema del tasto “Torna alla base” e come risolverlo

Se hai usato la card standard lawn_mower di Lovelace, avrai notato che il pulsante “Dock” (🏠) a volte non funziona come ci si aspetta: se il robot è in modalità di taglio attivo, inviare direttamente lawn_mower.dock non lo riporta alla base in modo affidabile. Questo perché il Parkside PMRC 250 A1 richiede una sequenza precisa di stati intermedi prima di poter eseguire il rientro:

  1. Prima deve essere messo in pausa (lawn_mower.pause)
  2. Poi deve ricevere il comando “Cancel mowing” (tramite l’entità button.parkside_robot_cancel_mowing esposta da tuya-local)
  3. Solo a quel punto lawn_mower.dock viene accettato correttamente

Per gestire questa sequenza in modo trasparente ho creato uno script che la esegue in automatico, e un’automazione che intercetta ogni chiamata a lawn_mower.dock sul robot e la reindirizza allo script — così il pulsante della card funziona correttamente senza dover cambiare nulla nella dashboard.

Script: parkside_torna_alla_base

Crea questo script in Impostazioni → Script → Aggiungi script (o in scripts.yaml):

alias: Parkside - Torna alla base
icon: mdi:home-import-outline
mode: single
sequence:
  # 1. Se sta falciando, metti in pausa e aspetta che lo stato sia "paused"
  - if:
      - condition: state
        entity_id: lawn_mower.parkside_robot
        state: mowing
    then:
      - action: lawn_mower.pause
        target:
          entity_id: lawn_mower.parkside_robot
      - wait_for_trigger:
          - trigger: state
            entity_id: lawn_mower.parkside_robot
            to: paused
        timeout: "00:00:15"
        continue_on_timeout: true
  # 2. Se è in pausa, premi "Cancel mowing" e aspetta che sia tornato in dock/standby
  - if:
      - condition: state
        entity_id: lawn_mower.parkside_robot
        state: paused
    then:
      - action: button.press
        target:
          entity_id: button.parkside_robot_cancel_mowing
      - wait_for_trigger:
          - trigger: state
            entity_id: lawn_mower.parkside_robot
            to: docked
        timeout: "00:00:15"
        continue_on_timeout: true
  # 3. Manda il comando definitivo di ritorno alla base
  - action: lawn_mower.dock
    target:
      entity_id: lawn_mower.parkside_robot

Automazione: intercetta il tasto Dock della card

Questa automazione fa sì che ogni volta che qualcuno (o un’altra automazione) chiama lawn_mower.dock sul robot, venga eseguito lo script sopra invece del comando diretto. La condizione sul script.parkside_torna_alla_base in stato 'off' è fondamentale: evita la ricorsione, ovvero fa sì che quando lo script stesso chiama lawn_mower.dock al passo 3, l’automazione non si rilanci su se stessa all’infinito.

alias: Parkside - tasto base usa script
description: >
  Intercetta lawn_mower.dock dal tasto "base" della card lawn_mower e lancia
  lo script che fa la sequenza pause+cancel+dock. La seconda condition evita
  la ricorsione: quando lo script stesso chiama lawn_mower.dock, la sua
  entità è in stato 'on', quindi l'automation skippa.
mode: single
trigger:
  - platform: event
    event_type: call_service
    event_data:
      domain: lawn_mower
      service: dock
condition:
  - condition: template
    value_template: >-
      {%- set eid = trigger.event.data.service_data.entity_id -%}
      {%- if eid is string -%}
        {{ eid == 'lawn_mower.parkside_robot' }}
      {%- else -%}
        {{ 'lawn_mower.parkside_robot' in (eid or []) }}
      {%- endif -%}
  - condition: state
    entity_id: script.parkside_torna_alla_base
    state: "off"
action:
  - action: script.parkside_torna_alla_base

💡 Nota: I wait_for_trigger con continue_on_timeout: true garantiscono che la sequenza non si blocchi se il robot impiega più del previsto a cambiare stato. In condizioni normali il timeout di 15 secondi è abbondante.


Conclusioni

Integrare il Parkside PMRC 250 A1 in Home Assistant richiede un po’ di lavoro iniziale — soprattutto il setup del gateway BT/Wi-Fi e il recupero delle credenziali Tuya — ma il risultato è una gestione completamente locale, veloce e personalizzabile del tuo robot tagliaerba. Niente cloud, niente latenza, pieno controllo.

A partire da tuya-local 2026.5.0 il supporto per questo robot è ufficiale e funzionante out of the box: basta inserire i dati giusti e il profilo viene riconosciuto automaticamente.

I’m back after years on this blog to write a mini how-to, mainly a note for myself.

I’m an enthusiast Home Assistant user, the most used open platform for home automation.
I aimed to use my own custom subdomain for Home Assistant. I wanted an SSL certificate issued by Let’s Encrypt in cPanel.

My recipe

  • cPanel Dynamic DNS to setup a dedicated subdomain for my Home Assistant installation (the dynamic IP is automatically updated by HA when IP change)
  • SSL certificate auto-generated by cPanel. The certificated is issued by Let’s Encrypt and expire every 3 months
  • SSL cert (and private key) configured in HA with addon “NGINX Home Assistant SSL proxy

The problem

On my first try, I just copied the SSL cert from cPanel to HA folder /ssl/fullchain.pem file and private key to /ssl/privkey.pem (the are just text files with .pem extension) and restarted NGINX plugin.
This exposed the SSL cert to the https domain. However, I had problems with the Samsung SmartThings Integration. The SmartThings cloud could not connect to my Home Assistant webhook URL.

SmartThings could not validate the webhook URL. Please ensure the webhook URL is reachable from the internet and try again

After some attempts and searches I figured out that the SSL cert, even if valid, was not completely trusted. SSL Checker website (like this) reported me a yellow warn icon under the certificate chains of trust.

This pointed me to the right direction…

The solution

This Let’s Encrypt page had the solution I needed. Basically, I needed to add both intermediate and root certificates inside the “/ssl/fullchain.pem” file in home assistant.

First figured out which kind of certs did I need: in my case the where Intermediate R10 and Root X1. I downloaded both “pem” certificates from Let’s Encrypt page.

Then I composed my fullchain.pem like this:

-----BEGIN CERTIFICATE-----
MAIN SSL Certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Let's Encrypt Intermediate Certificate (R10)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Let's Encrypt Root X1 Certificate
-----END CERTIFICATE-----

I saved the file and rebooted NGNIX.
After another SSL check, my domain looked like this:

This solved all my issues with SmartThings integration.