Roomba mit eingebautem WLAN

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

virgin
Beiträge: 636
Registriert: 09.01.2013, 18:36
Wohnort: Leichlingen
Hat sich bedankt: 124 Mal
Danksagung erhalten: 5 Mal
Kontaktdaten:

Re: Roomba mit eingebautem WLAN

Beitrag von virgin » 24.02.2015, 19:13

Ich habe noch einmal eine Frage zum Roowifi: ich kann die Website des Moduls NUR mit Safari v meinem iPad oder dem iPhone aufrufen. Gebe ich die ip im Laptop unter Explorer, chrome oder Firefox ein komme ich nicht drauf. Hat jemand eine Idee, woran das liegen könnte?
Bernd

Chiemgauer77
Beiträge: 12
Registriert: 14.07.2015, 16:14

Re: Roomba mit eingebautem WLAN

Beitrag von Chiemgauer77 » 15.07.2015, 10:29

Hallo,
gestern ist mein Roomba mit ThinkingCleaner bei mir angekommen.
Nun stellt sich die Frage wie bekomme ich ihn in HM. Da es ja anscheinend schon fertige Scripte zur Statusabfrage und Steuerung gibt, wollt ich fragen ob diese jemand zur Verfügung stellen kann.
Wäre sehr dankbar.
Grüße

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Roomba mit eingebautem WLAN

Beitrag von DrTob » 15.07.2015, 10:31

Wenn ich heute Abend nach Hause komme (und noch daran denke ;)) kann ich meine Lösung gerne Zur Verfügung stellen.

Chiemgauer77
Beiträge: 12
Registriert: 14.07.2015, 16:14

Re: Roomba mit eingebautem WLAN

Beitrag von Chiemgauer77 » 16.07.2015, 12:49

Habe gerade gesehen das du auch Mediola nutzt. Nutzt du auch den creator?
Wenn der Roomba in der Homematic ist, wäre die Visualisierung des Roomba in der Mediola mein nächstes Projekt gewesen. Hast du auch hierzu schon Skripte zur Datenaufbereitung und ein FB-Seite in Mediola?

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Roomba mit eingebautem WLAN

Beitrag von DrTob » 16.07.2015, 13:02

Ja. Habe ich. War gestern aber sehr spät und habe es nicht mehr geschafft, heute wird's wohl auch nichts. Ich versuche es morgen zu schaffen.

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Roomba mit eingebautem WLAN

Beitrag von DrTob » 16.07.2015, 19:01

ist doch etwas früher geworden...

Du benötigst folgendes:

1. Systemvariable "RoombaAkku" Zahl 0-100
2. Systemvariable "RoombaKapazitaet" Zahl 0-65000
3. Systemvariable "RoombaLadung" Zahl 0-65000
4. Systemvariable "RoombaSaugt" Logikwert
5. Sysetmvariable "RoombaStatus" Werteliste

Code: Alles auswählen

unbekannt;auf Homebase;auf Homebase, Wiedererstellungsladung;auf Homebase, Lade...;auf Homebase, Erhaltungsladung;auf Homebase, Wartend;Netz angeschlossen, läd nicht;Netz angeschlossen, Wiedererstellungsladung;Netz angeschlossen, Lade...;Netz angeschlossen, Erhaltungsladung;Netz angeschlossen, Wartend;Gestoppt;Saugt;Saugvorgang gestoppt;Spot-Reinigung;Max-Reinigung;Verzögerte Reinigung startet demnächst...;Sucht Homebase;Hochgehoben;Ferngesteuertes Fahren;Wartet auf Kommando;Aus;Fehler;Findme;Unbekannter Status
6. Systemvariable "RoombaStaubbehaelter" Logikwert, wahr = voll, falsch = leer
7. Systemvariable "RoombaStrecke"




8. Ein CuxD-Timer (in meinem Beispiel CUX2800001:1) mit folgenden Einstellungen:
SYSTEM|TIMER_PRESET = 30
SYSTEM|REPEAT = JA
SYSTEM|CMD_EXEC = wget -q -O - 'http://IP_DES_ROOMBA/full_status.xml'
SYSTEM|EXEC_FUNC = popen()
SYSTEM|EXEC_TIMEOUT = 1


7. Ein Programm:

Wenn CuxD-Timer CMD_RET im Wertebereich größer gleich "" (Bei Aktualisierung auslösen)
Dann
SCRIPT:

Code: Alles auswählen

var statusXML = dom.GetObject("CUxD.CUX2800001:1.CMD_RET").Value();



integer p1 = statusXML.Find("cleaner_state");
integer p2 = statusXML.Find("/cleaner_state");
string curStat = statusXML.Substr(p1 + 14, (p2 - p1) -15);

!WriteLine("Status: " # curStat);

string states = "st_base;st_base_recon;st_base_full;st_base_trickle;st_base_wait;st_plug;st_plug_recon;st_plug_full;st_plug_trickle;st_plug_wait;st_stopped;st_clean;st_cleanstop;st_clean_spot;st_clean_max;st_delayed;st_dock;st_pickup;st_remote;st_wait;st_off;st_error;st_locate;st_unknown";

integer cnt = 23;
integer statVal = -1;

while (statVal < 0){
!	WriteLine("TEST:" # curStat # " -- " # states.StrValueByIndex(";", cnt));
	if (curStat == states.StrValueByIndex(";", cnt)){
!			WriteLine("MATCH:" # curStat # " -- " # states.StrValueByIndex(";", cnt));
			statVal = cnt + 1;
	}
	cnt = cnt - 1;
	if (cnt < 0){
		statVal = 0;
	}
}


if (statVal <> dom.GetObject("RoombaStatus").Value()){
	dom.GetObject("RoombaStatus").State(statVal);
}



integer newVal = 0;


!p1 = statusXML.Find("battery_charge");
!p2 = statusXML.Find("/battery_charge");
!curStat = statusXML.Substr(p1 + 15, (p2 - p1) -16);

!newVal = curStat.ToInteger();
!if (newVal <> dom.GetObject("RoombaAkku").Value()){!
!	dom.GetObject("RoombaAkku").State(newVal);
!}


p1 = statusXML.Find("cleaning");
p2 = statusXML.Find("/cleaning");
curStat = statusXML.Substr(p1 + 9, (p2 - p1) - 10);
newVal = curStat.ToInteger();
if (newVal <> dom.GetObject("RoombaSaugt").Value()){
	dom.GetObject("RoombaSaugt").State(newVal);
}


p1 = statusXML.Find("cleaning_distance");
p2 = statusXML.Find("/cleaning_distance");
curStat = statusXML.Substr(p1 + 18, (p2 - p1) - 19);
newVal = curStat.ToInteger();
if (newVal <> (dom.GetObject("RoombaStrecke").Value() * 1000).ToInteger()){
	dom.GetObject("RoombaStrecke").State(0.001 * newVal);
}

p1 = statusXML.Find("bin_status");
p2 = statusXML.Find("/bin_status");
curStat = statusXML.Substr(p1 + 11, (p2 - p1) - 12);
newVal = curStat.ToInteger();
if (newVal <> dom.GetObject("RoombaStaubbehaelter").Value()){
	dom.GetObject("RoombaStaubbehaelter").State(newVal);
}

p1 = statusXML.Find("charge");
p2 = statusXML.Find("/charge");
curStat = statusXML.Substr(p1 + 7, (p2 - p1) - 8);
newVal = curStat.ToInteger();
if (newVal <> dom.GetObject("RoombaLadung").Value()){
	dom.GetObject("RoombaLadung").State(newVal);
}

p1 = statusXML.Find("capacity");
p2 = statusXML.Find("/capacity");
curStat = statusXML.Substr(p1 + 9, (p2 - p1) - 10);
newVal = curStat.ToInteger();
if (newVal <> dom.GetObject("RoombaKapazitaet").Value()){
	dom.GetObject("RoombaKapazitaet").State(newVal);
}

newVal = (dom.GetObject("RoombaLadung").Value() * 100) / dom.GetObject("RoombaKapazitaet").Value();
if (newVal.ToInteger() <> dom.GetObject("RoombaAkku").Value()){
	dom.GetObject("RoombaAkku").State(newVal.ToInteger());
}


in Mediola habe ich den aktuell nur sehr rudimentär integriert. Lediglich eine Statusgrafik (
roomba128.zip
(670.17 KiB) 178-mal heruntergeladen
) und ein Textfeld mit dem aktuellen Ladezustand. (+ Tastendruck = Reinigungsstart)

Chiemgauer77
Beiträge: 12
Registriert: 14.07.2015, 16:14

Re: Roomba mit eingebautem WLAN

Beitrag von Chiemgauer77 » 17.07.2015, 07:36

Super, Danke! Werde es am Wochenende testen.
Wo trage ich die IP-Adresse meines Roomba und die Abfrage nach Status usw. ein?

Chiemgauer77
Beiträge: 12
Registriert: 14.07.2015, 16:14

Re: Roomba mit eingebautem WLAN

Beitrag von Chiemgauer77 » 17.07.2015, 08:30

Oh, steht ja da. Habe es jetzt erst gesehen. Sorry.

lxuser
Beiträge: 487
Registriert: 11.01.2015, 21:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 25 Mal
Danksagung erhalten: 28 Mal

Re: Roomba mit eingebautem WLAN

Beitrag von lxuser » 17.07.2015, 17:53

Hallo,

die Roombas lassen sich übrigens auch direkt über die gut dokumentierte serielle Schnittstelle ansprechen: http://cfpm.org/~peter/bfz/iRobot_Roomb ... e_Spec.pdf

Hierzu reichen kompakte Bluetooth-Serial-Adapter wie HC05 oder HC06 für unter 10€.

Gruß

Chiemgauer77
Beiträge: 12
Registriert: 14.07.2015, 16:14

Re: Roomba mit eingebautem WLAN

Beitrag von Chiemgauer77 » 01.08.2015, 08:40

Bei dir ist die Statusleiste eine xml. Bei mir heißt es Full-Status.json. Muss ich da noch etwas umwandeln?
Es funktioniert nämlich nicht. Mein hm ließt nichts aus.
Danke für die Hilfe!

Antworten

Zurück zu „Projektvorstellungen“