Hello, i will share with you a example of controlling my Roomba with OpenHAB. The module used with the Roomba is RooWiFI.
Here is the OpenHAB config i used for this example(Just replace the IP_ADDRESS with the IP address of your RooWifi module):
Rules
var String Roomba_IP = "http://admin:roombawifi@IP_ADDRESS/" var String myROOMBA_CLEAN = "rwr.cgi?exec=4" var String myROOMBA_STOP = "rwr.cgi?exec=6" var String myROOMBA_DOCK = "rwr.cgi?exec=6" var String myROOMBA_OFF = "rwr.cgi?exec=7" var String myROOMBA_ON = "rwr.cgi?exec=10" //#####roomba clean rule "Roomba Clean" when Item Roomba_Clean changed to ON then var String url var String tmp var Integer timeout postUpdate(Roomba_Dock,OFF) postUpdate(Roomba_Clean,OFF) postUpdate(Roomba_Stop,OFF) url = Roomba_IP + myROOMBA_OFF timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule”,"URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } url = Roomba_IP + myROOMBA_ON timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } url = Roomba_IP + myROOMBA_CLEAN timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } else postUpdate(Roomba_Clean,OFF) end //#####roomba dock rule "Roomba Dock" when Item Roomba_Dock changed to ON then var String url var String tmp var Integer timeout postUpdate(Roomba_Dock,OFF) postUpdate(Roomba_Clean,OFF) postUpdate(Roomba_Stop,OFF) url = Roomba_IP + myROOMBA_OFF timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } url = Roomba_IP + myROOMBA_ON timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } url = Roomba_IP + myROOMBA_DOCK timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } else postUpdate(Roomba_Dock,OFF) end //#####Roomba Battery status rule "Roomba baterija" when Item roomba_b_capacity received update then var Integer baterija var Integer ukupno=roomba_b_capacity.state as DecimalType var Integer kapacitet=roomba_b_charge.state as DecimalType baterija=(kapacitet/ukupno)*100 roomba_capacity_percent.postUpdate(baterija) end //#####roomba stop rule "Roomba Stop" when Item Roomba_Stop changed to ON then var String url var String tmp var Integer timeout postUpdate(Roomba_Dock,OFF) postUpdate(Roomba_Clean,OFF) postUpdate(Roomba_Stop,OFF) url = Roomba_IP + myROOMBA_OFF timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 } url = Roomba_IP + myROOMBA_ON timeout = 0 tmp = sendHttpGetRequest(url) logInfo("rule","URL: " + url + " –> " + tmp) while (!tmp.contains("1") && timeout < 10) { tmp = sendHttpGetRequest(url) Thread::sleep(5000) tmp = sendHttpGetRequest(url) logInfo("rule","(timeout=" + timeout + ") " + url + " –> " + tmp) timeout = timeout + 1 }
Sitemap
Text label="Usisavač (Roomba)" icon="roomba" { Frame label="Upravljanje" {
Switch item=Roomba_Clean label="Čišćenje" mappings=[ON="Start"] icon="roomba"
Switch item=Roomba_Dock label="Punjenje" mappings=[ON="Start"] icon="roomba"
Switch item=Roomba_Stop label="Stop" mappings=[ON="Stop"] icon="roomba"
}
Frame label="Status"
{
Text item=roomba_charging_state label="Status [MAP(roomba.map):%s]" icon="roomba"
Text item=roomba_voltage label="Napon baterije[%.0f mV]" icon="battery" visibility=[roomba_charging_state!="10"] valuecolor=[>13000="green",<13000="red"]
Text item=roomba_current label="Struja [%.0f mA]" icon="voltage" visibility=[roomba_charging_state!="10"] valuecolor=[>0="green",<0="red"]
Text item=roomba_b_capacity label="Maksimalni kapacitet [%.0f mAh]" icon="battery" visibility=[roomba_charging_state!="10"]
Text item=roomba_b_charge label="Trenutni kapacitet [%.0f mAh]" icon="battery" visibility=[roomba_charging_state!="10"] valuecolor=[>1348="green",<1348="orange"]
Text item=roomba_capacity_percent label="Stanje baterije [%.0f %%]" icon="battery" visibility=[roomba_charging_state!="10"] valuecolor=[>50="green",<50="red"]
}}
Items
Switch Roomba_Clean // cleaning
Switch Roomba_Dock // dock
Switch Roomba_Stop // stop</p>
Number roomba_voltage (grp_roomba) { http="<[http://admin:roombawifi@IP_ADDRESS/rwr.xml:5000:REGEX(.*?<r15>(.*?)</r15>.*)]"}
Number roomba_temperature (grp_roomba)
Number roomba_charging_state (grp_roomba) { http="<[http://admin:roombawifi@IP_ADDRESS/rwr.xml:5000:REGEX(.*?<r14>(.*?)</r14>.*)]"}
Number roomba_current (grp_roomba) { http="<[http://admin:roombawifi@IP_ADDRESS/rwr.xml:5000:REGEX(.*?<r16>(.*?)</r16>.*)]"}
Number roomba_b_charge (grp_roomba) { http="<[http://admin:roombawifi@IP_ADDRESS/rwr.xml:5000:REGEX(.*?<r18>(.*?)</r18>.*)]"}
Number roomba_b_capacity (grp_roomba) { http="<[http://admin:roombawifi@IP_ADDRESS/rwr.xml:5000:REGEX(.*?<r19>(.*?)</r19>.*)]"}
Number roomba_capacity_percent (grp_roomba)
Hello, try loading this configuration in Openhab 2 without success (placing the configuration files in the path / etc / openhab2 and their respective folder), is there any extra step that I am missing?
se puede conectar a google home?
Yes
Hello,
i’m trying to use it with openhab 2.4 and it looks like it not compatible with it.
do you have new version?
Hi, im currently using it with OpenHAB 2.4.. It should be compatible.