NEWS
map für xiaomi / roborock Staubsauger
-
-
@fastfoot
habe iob schon seit Jahren in einer VM auf proxmox. -
log durchkämmen, ist dein roboter supported, objekte löschen und nach neustart adapter nachsehen. ist ein folder map mit drei states drinnen. was zeigt der roborock tab? gibts die map in deiner app?
sonst bliebe ein issue zu erstellen
log durchkämmen
nix drin
dein roboter supported
natürlich
nach neustart adapter nachsehen
nix drin
folder map mit drei states drinnen.
nein (sonst hätte ich nicht geschrieben)
was zeigt der roborock tab
ist grün (oder meinst du was anderes ?)
map in deiner app
natürlich
sonst bliebe ein issue zu erstellen
ne, mach ich nicht.
Habe ich bei mihome-vacuum schon probiert.
Antwort war: Dafür habe ich momentan keine ressourcen. -
log durchkämmen
nix drin
dein roboter supported
natürlich
nach neustart adapter nachsehen
nix drin
folder map mit drei states drinnen.
nein (sonst hätte ich nicht geschrieben)
was zeigt der roborock tab
ist grün (oder meinst du was anderes ?)
map in deiner app
natürlich
sonst bliebe ein issue zu erstellen
ne, mach ich nicht.
Habe ich bei mihome-vacuum schon probiert.
Antwort war: Dafür habe ich momentan keine ressourcen. -
Bei mir funktioniert es auch seit mindestens einem Jahr nicht mehr mit dem Mihome-Vacuum.
Hab gerade überlegt ob man nicht einfach den Google KI Modus oder ChatGPT nach ner Lösung fragt 😄@haselchen
Hallo, ja mihome funktioniert schon länger nicht.
Deshalb ja der Versuch mit roborock.
funktioniert aber auch nicht (zumindest bei mir)Und ja, chatgpt hab ich versucht.
Erst wurde mihome-vacuum empfohlen; dann gesagt dass dieser nicht mehr geht; dann wurde roborock empfohlen; geht aber auch nicht; dann wurde ein Script ohne Adapter erstellt, hab ich noch nicht hinbekommen.Anbei Script, vielleicht findest du eine Lösung. Danke für die Info.
// map_fetch.js // Node.js Skript zum Abruf der Roborock-Map (Base64) via MiIO (lokal) const miio = require('miio'); const fs = require('fs'); const path = require('path'); const ip = '192.168.xxx.xxx'; // <-- deine Roborock-IP hier const token = "xxx"; const outputDir = '/opt/iobroker/roborock_maps'; // OUTPUT_PATH hier, z.B. ein Ordner für Maps // Liste potenzieller Map-Property-Namen (je nach Firmware/Adapter-Version) const propCandidates = [ 'map_image', 'mapImage', 'map_image_base64', 'map_image_base64_string', 'mapData', 'lastMap', 'currentMap', 'last_map', 'map' ]; function ensureDir(dir) { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } } (async () => { try { ensureDir(outputDir); console.log(`Verbinde mit ${ip} ...`); const device = await miio.device({ address: ip, token: token }); // Test: einfache Prop-Abfrage, um Funktion zu prüfen // (Hinweis: je nach Funktion kann diese Abfrage fehlschlagen, wir verwenden fallbacks weiter unten) // const test = await device.call('get_prop', [['battery']]); // console.log('Battery:', test); let found = false; for (const name of propCandidates) { try { // Versuch, das Property zu lesen const res = await device.call('get_prop', [[name]]); const val = res && res[0] ? res[0] : null; if (val && typeof val === 'string' && val.trim().length > 0) { console.log(`Gefundenes Map-Property: ${name}`); // Decide, ob es Base64-Bild oder JSON ist const isBase64 = /^[A-Za-z0-9+/= \n\r]+$/.test(val) && val.length > 100; if (isBase64) { // Entferne ggf. Whitespaces/newlines const base64 = val.replace(/\s+/g, ''); // Dateinamen const t = new Date().toISOString().replace(/[:.]/g, '-'); const filePath = path.join(outputDir, `roborock_map_${name}_${t}.png`); // Speichern als PNG (Base64 speichern) fs.writeFileSync(filePath, Buffer.from(base64, 'base64')); console.log(`Map (Base64) gespeichert: ${filePath}`); } else { // Falls JSON oder anderer String: versuch als JSON zu speichern try { const json = JSON.parse(val); const filePath = path.join(outputDir, `roborock_map_${name}_${Date.now()}.json`); fs.writeFileSync(filePath, JSON.stringify(json, null, 2)); console.log(`Map-Daten als JSON gespeichert: ${filePath}`); } catch (e) { // Fallback: reiner String const filePath = path.join(outputDir, `roborock_map_${name}_${Date.now()}.txt`); fs.writeFileSync(filePath, val); console.log(`Map-String gespeichert: ${filePath}`); } } found = true; break; } else { // Kein nutzbarer Wert // console.log(`Prop ${name} leer`); } } catch (err) { // Proxy-Fehler bei diesem Prop, weiter zum nächsten // console.error(`Fehler bei ${name}:`, err.message); } } if (!found) { console.log('Keine Map- oder MapData-Property gefunden. Prüfe Firmware/Token/Names.'); } } catch (err) { console.error('Fehler beim Map-Abruf:', err.message); } })();Dein Token musst du finden; gibt im Netz einen token Extractor.
-
@haselchen
Hallo, ja mihome funktioniert schon länger nicht.
Deshalb ja der Versuch mit roborock.
funktioniert aber auch nicht (zumindest bei mir)Und ja, chatgpt hab ich versucht.
Erst wurde mihome-vacuum empfohlen; dann gesagt dass dieser nicht mehr geht; dann wurde roborock empfohlen; geht aber auch nicht; dann wurde ein Script ohne Adapter erstellt, hab ich noch nicht hinbekommen.Anbei Script, vielleicht findest du eine Lösung. Danke für die Info.
// map_fetch.js // Node.js Skript zum Abruf der Roborock-Map (Base64) via MiIO (lokal) const miio = require('miio'); const fs = require('fs'); const path = require('path'); const ip = '192.168.xxx.xxx'; // <-- deine Roborock-IP hier const token = "xxx"; const outputDir = '/opt/iobroker/roborock_maps'; // OUTPUT_PATH hier, z.B. ein Ordner für Maps // Liste potenzieller Map-Property-Namen (je nach Firmware/Adapter-Version) const propCandidates = [ 'map_image', 'mapImage', 'map_image_base64', 'map_image_base64_string', 'mapData', 'lastMap', 'currentMap', 'last_map', 'map' ]; function ensureDir(dir) { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } } (async () => { try { ensureDir(outputDir); console.log(`Verbinde mit ${ip} ...`); const device = await miio.device({ address: ip, token: token }); // Test: einfache Prop-Abfrage, um Funktion zu prüfen // (Hinweis: je nach Funktion kann diese Abfrage fehlschlagen, wir verwenden fallbacks weiter unten) // const test = await device.call('get_prop', [['battery']]); // console.log('Battery:', test); let found = false; for (const name of propCandidates) { try { // Versuch, das Property zu lesen const res = await device.call('get_prop', [[name]]); const val = res && res[0] ? res[0] : null; if (val && typeof val === 'string' && val.trim().length > 0) { console.log(`Gefundenes Map-Property: ${name}`); // Decide, ob es Base64-Bild oder JSON ist const isBase64 = /^[A-Za-z0-9+/= \n\r]+$/.test(val) && val.length > 100; if (isBase64) { // Entferne ggf. Whitespaces/newlines const base64 = val.replace(/\s+/g, ''); // Dateinamen const t = new Date().toISOString().replace(/[:.]/g, '-'); const filePath = path.join(outputDir, `roborock_map_${name}_${t}.png`); // Speichern als PNG (Base64 speichern) fs.writeFileSync(filePath, Buffer.from(base64, 'base64')); console.log(`Map (Base64) gespeichert: ${filePath}`); } else { // Falls JSON oder anderer String: versuch als JSON zu speichern try { const json = JSON.parse(val); const filePath = path.join(outputDir, `roborock_map_${name}_${Date.now()}.json`); fs.writeFileSync(filePath, JSON.stringify(json, null, 2)); console.log(`Map-Daten als JSON gespeichert: ${filePath}`); } catch (e) { // Fallback: reiner String const filePath = path.join(outputDir, `roborock_map_${name}_${Date.now()}.txt`); fs.writeFileSync(filePath, val); console.log(`Map-String gespeichert: ${filePath}`); } } found = true; break; } else { // Kein nutzbarer Wert // console.log(`Prop ${name} leer`); } } catch (err) { // Proxy-Fehler bei diesem Prop, weiter zum nächsten // console.error(`Fehler bei ${name}:`, err.message); } } if (!found) { console.log('Keine Map- oder MapData-Property gefunden. Prüfe Firmware/Token/Names.'); } } catch (err) { console.error('Fehler beim Map-Abruf:', err.message); } })();Dein Token musst du finden; gibt im Netz einen token Extractor.
-
Bin erst in 2 Wochen wieder im Lande .
Schönen Urlaub.
-
Hallo,
wie holt ihr die map für eueren Staubsauger ?
mihome-vaccum und roboroch Adapter funktionieren ja nicht mehr diesbezüglich.
Gibt es die map nicht mehr; oder wie macht ihr dies ?
mfg
Dieter -
da scheint sich jetzt etwas zu tun: https://forum.iobroker.net/post/1350541
-
da scheint sich jetzt etwas zu tun: https://forum.iobroker.net/post/1350541
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
