Guide pratique de dorita980 pour contrôler les aspirateurs robots iRobot Roomba

Introduction à dorita980

dorita980 est une bibliothèque Node.js non officielle qui permet d'interagir avec les aspirateurs robots iRobot Roomba, tels que les modèles i7/i7+, 980, 960, e5, 690 et 675. Elle offre une interface pour envoyer des commandes via le réseau local ou l'API cloud d'iRobot, récupérer des données sur l'état du robot, configurer des préférences de nettoyage et suivre les missions en temps réel. En raison de son statut non officiel, il est conseillé de désactiver les mises à jour autoamtiques du firmware pour éviter les problèmes de compatibilité et de vérifier la compatibilité avec les nouvelles versions avant toute mise à jour.

Installation

Pour installer dorita980, utilisez npm avec la commande suivante :

npm install dorita980 --save

Obtention des identifiants d'authentification

Pour utiliser dorita980, vous devez récupérer le blid (identifiant) et le mot de passe du robot. Deux méthodes sont disponibles :

Via l'API cloud (recommandée)

Installez dorita980 globalement et exécutez la commande suivante :

npm install -g dorita980
get-roomba-password-cloud <nom_utilisateur_iRobot> <mot_de_passe_iRobot> [clé_API_optionnelle]

Via le réseau local (pour les anciens firmwares)

Trouvez l'adresse IP du robot via votre routeur ou un outil de scan réseau, puis exécutez :

get-roomba-password <adresse_IP_robot>

Les identifiants obtenus ressembleront à ceci :

Robot "Dorita" (sku: R98---- SoftwareVer: v2.4.16-126):
BLID=> xxxxxxxxxxxxx
Password=> :1:1486937829:gktkDoYpWaDxCfGh

Conservez ces informations pour une utilisation ultérieure.

Contrôle de base avec dorita980

Voici un exemple de connexion au robot via le réseau local et envoi d'une commande de nettoyage :

const dorita = require('dorita980');
const robotLocal = new dorita.Local('identifiant_blid', 'mot_de_passe', '192.168.1.105');

robotLocal.on('connect', () => {
  robotLocal.clean()
    .then(() => robotLocal.end())
    .catch(erreur => console.error('Échec de la commande:', erreur));
});

Ce code établit une connexion, lance le nettoyage, puis termine la session.

Récupération de l'état du robot

Pour obtenir des données comme le niveau de la batterie ou les informations de charge :

robotLocal.getRobotState(['batPct', 'bbchg3'])
  .then(etat => {
    console.log('Charge batterie:', etat.batPct);
    console.log('Détails charge:', etat.bbchg3);
  })
  .catch(err => console.error('Erreur de récupération:', err));

Configuration des préférences

Modifiez les options de nettoyage, par exemple pour activer le mode boost tapis et le nettoyage des bords :

robotLocal.setCarpetBoostAuto()
  .then(() => console.log('Mode boost tapis activé'));

robotLocal.setEdgeCleanOn()
  .then(() => console.log('Nettoyage des bords activé'));

Planification hebdomadaire

Définissez un calendrier de nettoyage pour la semaine :

const calendrier = {
  cycle: ["none","start","start","start","start","start","start"],
  h: [9,9,9,9,9,9,9],
  m: [0,0,0,0,0,0,0]
};

robotLocal.setWeek(calendrier)
  .then(() => console.log('Calendrier mis à jour'));

Fonctionnalités avancées

Suivi en temps réel des missions

Pour les modèles compatibles, écoutez l'événement 'mission' pour obtenir la position et l'état du nettoyage :

robotLocal.on('mission', donnees => {
  console.log('Position actuelle:', donnees.pose);
  console.log('Statut mission:', donnees.cleanMissionStatus);
  // Intégrer ici la logique de cartographie
});

Commandes MQTT personnalisées

Envoyez des commandes brutes via MQTT pour explorer des fonctionnalités non documentées :

const commandeBrute = {
  command: 'start',
  time: Math.floor(Date.now() / 1000),
  initiator: 'app_custom'
};

robotLocal.publish('cmd', JSON.stringify(commandeBrute), err => {
  if (err) console.error('Échec envoi commande:', err);
});

Bonnes pratiques

1. Gestion des connexions : Le robot Roomba n'autorise qu'une seule connexion locale à la fois. Appelez toujours la méthode end() après utilisation pour libérer la connexion pour l'application officielle.

2. Traitement des erreurs : Utilisez des blocs try-catch ou des gestionnaires .catch() pour capturer les exceptions.

3. Compatibilité firmware : Vérifiez la documentation de dorita980 avant de mettre à jour le firmware du robot.

4. Sécurité réseau : Si vous exposez une API REST, envisagez d'utiliser HTTPS et une authentification de base pour sécuriser les accès.

5. Stabilité des applications : Gérez les événements tels que 'offline' pour assurer la robustesse des solutions à long terme.

Étiquettes: dorita980 iRobot Roomba Node.js MQTT

Publié le 2 juin à 02h40