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.