My Yeelights are detected but offline.
Why?
you need to set the token.
Check out this:
Thank for the hint!!!
It worked for me now.
Here is my code:
Turn on/off
YeelightWhiteEsszimmer_ActionsCommands.sendCommand("set_power['on', 'smooth', 500]")
YeelightWhiteEsszimmer_ActionsCommands.sendCommand("set_power['off', 'smooth', 500]")
Set Brightness :
case YeeDimmer.state == 30:
YeelightWhiteEsszimmer_ActionsCommands.sendCommand("set_bright[30, 'smooth', 500]")
And here is my udated and better solution:
Number YeeDimmer
Number YeeColor
For Brigthness
YeelightWhiteEsszimmer_ActionsCommands.sendCommand("set_bright["+YeeDimmer.state.toString+", 'smooth', 500]")
For color temprature
YeelightWhiteEsszimmer_ActionsCommands.sendCommand("set_ct_abx["+YeeColor.state.toString+", 'smooth', 500]")
Here is the sitemap:
Frame label="Dimmer"{
Setpoint item=YeeDimmer label="" icon="light" minValue=1 maxValue=100 step=1
Switch item=YeeDimmer label="" icon="light" mappings=[1="1",5="5",10="10",30="30",50="50",80="80",100="100"]
}
Frame label="Farbtemperatur" {
Setpoint item=YeeColor icon="heating" minValue=1700 maxValue=6500 step=100
Switch item=YeeColor icon="heating" mappings=[2700="2700K",3000="3000k", 3500="3500K",4000="4000K",5400="5400K",6000="6500K"]
}
Ive tried it with my Xiaomi Mi6 but saddly it didnt work with a random phone CLI.
Tried it with my Raspberry too, but requires Python 3.5 or higher.
The default Python version on my Pi is 2.7, after installing a higher version, nothing happened.
Am I missing something?
Thanks
Sorry dude, it was my fault. Actually i did it like here:
Its in german, in case u dont get nothing here a short guide:
You dont need any Python. I did it with java.
-
Install ADB:
https://www.xda-developers.com/install-adb-windows-macos-linux/ -
Navigate in command prompt to your ADB folder
3.Check if your device is connected
adb devices
- Then do the adb backup
adb backup -f backup.ab com.yeelight.cherry
now u should get a backup.ab file.
5.Create an ab extract(tar) with this tool:
5.1. therefore put the extracted android-backup-tookit to your adb folder
5.2 in cmd use this:
java -jar .\android-backup-tookit\android-backup-extractor\android-backup-extractor-20180203-bin\abe.jar unpack .\backup.ab backup.tar
- one its done u will get a tar which u can extract
- check the \apps\com.yeelight.cherry\sp\ folder for miot file
- Get your token, be happy
I hope it will help.
Thanks alot!
Im German, so thats pretty precious.
Does the Token change over time? I’ve been setting up everything via Yeelight App and I have to reset and implement all Yeelights within the Mi Home App now once again.
So Would be a shame, If I had to do this all over again, If something crashes and I added them back to the Yeelight App after extracting the token.
Hi NIco im glad to hear that i could help
The token will be always the same until you reset the bulb! -->DO NOT DO THIS!!! NEVEREVER!!!
Turning the bulb 5x on and off in a row will reset everything and u will need to extract the token once again!
Greetings
Niko
Running this CLI command: (as Admin and without Admin)
java -jar .\android-backup-tookit\android-backup-extractor\android-backup-extractor-20180203-bin\abe.jar unpack .\backup.ab backup.tar
Im getting this Exception:
Unable to access jarfile .\android-backup-tookit\android-backup-extractor\android-backup-extractor-20180203-bin\abe.jar
Does someone know the answer?
Edit: The version just updated lol I got it
Is there a way to send a rgb value to the Yeelight with the MI IO binding?
I just did the update to OH 2.3 and now this addon isnt working anymore. Will there be an updated version soon?
I assume you refer to the yeelight binding?
The Mi IO binding should work with 2.3 and 2.4-snapshop
A year ago I programmed this lambda, it works reliably:
val org.eclipse.xtext.xbase.lib.Functions$Function4<ColorItem, SwitchItem, StringItem, Object ,Boolean> yeelightCP = [
org.eclipse.smarthome.core.library.items.ColorItem colorYee,
org.eclipse.smarthome.core.library.items.SwitchItem switchYee,
org.eclipse.smarthome.core.library.items.StringItem Yee,
java.lang.Object commandYee |
var String data = ""
if(switchYee.state.toString == "ON") {
if(commandYee instanceof HSBType) {
var HSBType hsbValue = colorYee.state as HSBType
var hueValue = hsbValue.hue.intValue
var satValue = hsbValue.saturation.intValue
var briValue = hsbValue.brightness.intValue
data = String::format('{"id":1,"method":"set_hsv","params":[%1s, %2s,"smooth",150]}\r\n', hueValue, satValue)
data += String::format('{"id":2,"method":"set_bright","params":[%1s,"smooth",150]}\r\n', briValue)
}
if(commandYee instanceof PercentType) {
var HSBType hsbValue = colorYee.state as HSBType
var briValue = hsbValue.brightness.intValue
data = String::format('{"id":2,"method":"set_bright","params":[%1s,"smooth",150]}\r\n', briValue)
}
if(commandYee instanceof OnOffType) {
if(commandYee == ON ) {
data = '{"id":1,"method":"set_power","params":["on","smooth",150]}\r\n'
}else if (commandYee == OFF ) {
data = '{"id":1,"method":"set_power","params":["off","smooth",150]}\r\n'
}
}
var java.net.Socket clientSocket = new java.net.Socket(Yee.label, 55443)
var java.io.DataOutputStream outToServer = new java.io.DataOutputStream(clientSocket.getOutputStream())
outToServer.writeBytes(data)
clientSocket.close()
} else {
postUpdate(colorYee, "OFF" )
}
true
]
Example item:
Color FlurYeePicker "Flur Licht" <colorwheel>
String FlurYee "192.168.0.30"
Switch flurYeeWLAN "Yeelight Stromnetz [MAP(yeelight.map):%s]" <bulb>
Example rule:
rule "FlurYeeColorPicker"
when
Item FlurYeePicker received command
then
yeelightCP.apply(FlurYeePicker, flurYeeWLAN, FlurYee, receivedCommand)
end
Example sitemap:
Frame label="Licht" {
Switch item=FlurYeePicker label="Schalter Lampe" icon="switch" visibility=[flurYeeWLAN==ON]
Colorpicker item=FlurYeePicker label="Farbe Lampe" visibility=[flurYeeWLAN==ON]
Text item=flurYeeWLAN visibility=[flurYeeWLAN==OFF]
}
Everything works without a specific binding
As of today the binding is finally merged and can be installed in snapshot builds: https://github.com/openhab/openhab2-addons/pull/3582
Hello,
This is great for me because unfortunately the new xiaomi lamp is not supported by the old binding.
But where should I copy the above code?
Script?
val org.eclipse.xtext.xbase.lib.Functions$Function4<ColorItem, SwitchItem, StringItem, Object ,Boolean> yeelightCP = [
org.eclipse.smarthome.core.library.items.ColorItem colorYee,
org.eclipse.smarthome.core.library.items.SwitchItem switchYee,
org.eclipse.smarthome.core.library.items.StringItem Yee,
java.lang.Object commandYee |
var String data = ""
if(switchYee.state.toString == "ON") {
if(commandYee instanceof HSBType) {
var HSBType hsbValue = colorYee.state as HSBType
var hueValue = hsbValue.hue.intValue
var satValue = hsbValue.saturation.intValue
var briValue = hsbValue.brightness.intValue
data = String::format('{"id":1,"method":"set_hsv","params":[%1s, %2s,"smooth",150]}\r\n', hueValue, satValue)
data += String::format('{"id":2,"method":"set_bright","params":[%1s,"smooth",150]}\r\n', briValue)
}
if(commandYee instanceof PercentType) {
var HSBType hsbValue = colorYee.state as HSBType
var briValue = hsbValue.brightness.intValue
data = String::format('{"id":2,"method":"set_bright","params":[%1s,"smooth",150]}\r\n', briValue)
}
if(commandYee instanceof OnOffType) {
if(commandYee == ON ) {
data = '{"id":1,"method":"set_power","params":["on","smooth",150]}\r\n'
}else if (commandYee == OFF ) {
data = '{"id":1,"method":"set_power","params":["off","smooth",150]}\r\n'
}
}
var java.net.Socket clientSocket = new java.net.Socket(Yee.label, 55443)
var java.io.DataOutputStream outToServer = new java.io.DataOutputStream(clientSocket.getOutputStream())
outToServer.writeBytes(data)
clientSocket.close()
} else {
postUpdate(colorYee, "OFF" )
}
true
]
Did you test the binding I linked above? Also which device model are you talking about? There is an ongoing effort to support newer devices as well: https://github.com/openhab/openhab2-addons/issues/3665
Device: Yeelight Color Bulb YLDP06YL 10W
Xiaomi Mi IO Binding :
yeelight binding is the same
LAN Control enabled.
Did you try to add it (manually) as a basic device and overwrite the modelid to yeelink.light.color1
Is it that working? If yes, I add it as such device
That is the new generation color bulb. I own the same and it is working for me, but maybe you have a different hardware revision with model changed to color1
?
Does the inbox/manual searching for things display this bulb in the results?
I’ve added it to the database. If you update the binding it should recognise it