Orvibo AllOne IR Blaster Guide

Controlling IR devices using Orvibo AllOne IR blaster and openHAB

Background
I have been an openHAB user for around 3 months and have the majority of my house lights converted to INSTEON using dimmer switches as well as INSTEON Micro On/Off modules installed internally to control all of the roller shutters. Before using openHAB, I had used the INSTEON app to control the lights and shutters. The INSTEON way of setting up groups was time consuming and the app rarely worked externally even though I forwarded the ports correctly.

This guide focuses on the next step of my openHAB configuration which was setting up the Orvibo AllOne IR blaster to control my Air Conditioner (split system).

My Air Conditioner is brand new but does not contain any “smart” features to control it, it just came with an Infrared remote. This guide will explain how to use the Orvibo Python library and learn and emit IR commands using two different sitemap display types in openHAB: On/Off switch and Button press.

Install Exec binding

The guide makes use of the exec binding to run python scripts. You will need to have this installed.

Getting Orvibo Python library (cherezov’s)

The Python library created by @Pavel_Cherezov is excellent. It enables you to control both the AllOne product and the S20 Socket product.
Download the zip file from Github here


The only file I am using is orvibo.py that you will find in the orvibo folder.
I used FileZilla to transfer the file to /home/pi/orvibo/orvibo.py

Learning and testing IR codes manually

Launch a terminal session and change directory to /home/pi/orvibo
Run the orvibo.py using the python3 interpreter.
This shows that I have both an irda device and a socket device.

The IP address of my AllOne IR blaster is 192.168.1.82
Note: In my modem, I have added my orvibo devices to the static lease list so the DHCP server will assign them the same IPs each time.

As an example I will be using my air conditioner remote.

The next command with the -t argument saves the IR code to a file called test-ac-on.ir.
As soon as you hit enter to run the command, your AllOne will light up red and wait for you to point your remote and press a button to learn.

The final command with the -e argument emits the IR code from the file called test-ac-on.ir.
As soon as you enter enter, your AllOne will transmit the code, print out the device details and say Done.

Repeat the above steps to save an .ir file for every button press you would like to learn.
You will end up with a collection or .ir files.

Items and Sitemap
Now comes the time to make the Switch item that is going to represent the air conditioner being on or off.

I defined an item in my items file called AirConditioner. It runs the Orvibo Python script with the -e argument for emitting IR.

Switch AirConditioner “Air Conditioner” <climate> {exec=”>[ON:python3 /home/pi/orvibo/orvibo.py -i 192.168.1.82 -e /home/pi/orvibo/ac-turn-on.ir] >[OFF:python3 /home/pi/orvibo/orvibo.py -i 192.168.1.82 -e /home/pi/orvibo/ac-turn-off.ir]”} Switch ACPowerful “Powerful” <climate> {exec=”>[ON:python3 /home/pi/orvibo/orvibo.py -i 192.168.1.82 -e /home/pi/orvibo/powerful.ir]”, autoupdate=”false”}

Note: The autoupdate set to false enables this to be a push button rather than On/Off.

I have dedicated a frame for Climate in my sitemap file. Here is a section of my sitemap file.

Frame label=”Climate” { Switch item=AirConditioner Switch item=ACPowerful mappings=[ON=”Powerful”] }

The mappings parameter enables me to have a single button with Powerful text inside.

Final result

This is the final result and what it looks like on my phone.

In the future I wish to add more buttons. It currently works extremely well with openHAB. I have had 100% reliability.

A big thank you to the openHAB developers, @Pavel_Cherezov and the community forum.

Enjoy.

-robinson

4 Likes

Superb tutorial. Thank you!
Which air cond model are you using with this?
Is it still working as it should?

I have a Fujitsu ASTG18KMCA 5kW.
Yeah the system works perfectly.

Thanks for the posting here. This “push button” example is what I’m looking for.
However, I’m trying to put the items in a group and not having any success with that.
For example, I’m trying to do this in my items file:

Switch AirConditioner “Air Conditioner” (gUnit1) { mqtt=“>[mosqittoBroker:/test/ac:command:ON:AirConditioner_ON], >[mosqittoBroker:/test/ac:command:OFF:AirConditioner_OFF]” }
Switch ACPowerful “Powerful” (gUnit1) { mqtt=“>[mosqittoBroker:/test/ac:command:ON:AirConditioner_PowerfulButton_PUSH]”, autoupdate=“false”}

Then in my sitemap file:

Frame label=“Climate”
{
Group item=gUnit1 icon=“groundfloor”
Switch item=AirConditioner
Switch item=ACPowerful mappings=[ON=“Powerful”]
}

But what shows in the web UI is a group link (called gUnit1) as I expect, but there is nothing in it.
And the items that I expected to be in that group are shown on the main page, ie: underneath the gUnit1 link.

How can I get those 2 items to display in the gUnit1 group?
(Have been browsing thru the forum 
 is this even possible? BTW
 using OH2)

I usually just use sub Frames.
You could try something like this


Frame label="Climate" {
    Frame label="Ground Floor" {
        Switch item=AirConditioner
        Switch item=ACPowerful mappings=[ON="Powerful"]
    }
}`

I haven’t had too much of a play with groups in openHAB.

thanks @robinson that’s kind-of-what I’m looking for.
But if I have a lot of items to pack into each frame (which I do), and a large number of frames (which I do), then the main page gets pretty large very quickly.
I like the sub-page concept that groups offer.
So, is possible to do this with groups?

I use rules for this. This allows to control different items from one line
I define a Number in items thar run a rule like

rule "Air cond Off"
when Item z_air_cond received command 0
then
executeCommandLine("python3 /etc/openhab2/sh_scripts/orvibo.py -i  -e 
end
rule "Air cond 22C Auto"
when Item z_air_cond received command 1
then
executeCommandLine("python3 /etc/openhab2/sh_scripts/orvibo.py -i  -e 
end
 rule "Air cond 24C Auto"
when Item z_air_cond received command 2
then
executeCommandLine("python3 /etc/openhab2/sh_scripts/orvibo.py -i 
end

e.t.c

Than in sitemap

Switch item=z_air_cond mappings=[0=Off, 1=“A22C”, 2=“A24C”, 3=“F22C”]

1 Like

Thanks @moskovskiy82. That’s a cool way to collect related switches into one interface item on the UI with multiple push buttons.
But I still have too many main items (ie: following the above examples, I have too many air conditioners) on the main page.
I would like to be able to group these and have them show up on sub-pages on the basic UI.
Any other ideas?

So figured out another way to skin this using a rule

With a “received command” rule, I can create a “fake” push button with a switch item.
When I receive ON, I delay for 1s, then postUpdate(OFF) to the same switch item.
This gives the effect on the UI that the switch slider is changed from OFF to ON for 1s, and then automatically slides back to OFF.
The “push button” created via the sitemap with “mappings” is more visually appealing, but cannot seem to get that working in a group. With my “hack” I can put the switch into a group.

Any gotcha’s with this approach?
Any other ideas?

Found a post that shows how to add PushButtons to groups here: multi state switches
Thanks @Udo_Hartmann for the example.

Hi. Firstly, thank you for creating this tutorial. It has been really useful in helping me begin to make progress with a long desired wish: to get down from 9 different remote controls next to the sofa to zero. This is think would be a genuinely useful outcome to the ridiculous amount of hours I have spent tinkering!

Thanks to this tutorial, I am in the process of setting up openhab such that I can say “Hey Siri, watch Tivo” and the orvibo will send out the correct commands to turn on the TV, change the input to the HDMI splitter, select the correct HDMI splitter input, and power up the surround sound. I can then control the Tivo with the wiwo app. Further down the line I may try to cut down on how much I would need to the use the wiwo app, by creating some more scenes such as “watch BBC2” etc.

The basics of this are working and it just a case of setting up the appropriate rules/themes now.

My one issue I am yet to crack is the xbox. I have apple tv but thanks to their rivalry, I cannot watch amazon video on this. I can on my xbox 360. My problem is that this is the one piece of hardware that I cannot power up with ir. I have the smart glass app to control the xbox once on, but it won’t connect until the power is on. It should be possible to use the orvibo for this as the 360 has an ir receiver.

My problem is that I don’t have an ir remote for the xbox with which to programme the orvibo. There only seems the option to “learn” ir codes, and if you don’t have the tool with which to teach it, you are stuck. I’ve had the obligatory several hours of googling, and have found both the HEX code that supposedly turns on the xbox, and the format of the orvibo commands, but the length of the hex code doesn’t match the length of the portion of the hex code that is sent from the orvibo as the “blast”, so I don’t think I can manually create my own "xbox-on.ir’ file.

Anyone any ideas? (or an orvibo and a programmable remote who can produce an xbox-on.ir file? :wink: I could just purchase on and programme it but it seems overkill for a single use).

Thanks.

1 Like

Same dilemma i’m having here for the Roomba.
On option is to use arduino with ir. But maybe somebody can publish theirs IR files?

Thanks for the great tutorial! I don’t know why but on my device the learn commands always work correctly, but the emit commands are not working all the time. Most of the times when I give an emit command the blue led on the Orvibo allone blinks quickly (when it works the red one blinks quickly). It seems just like the Orvibo locks up until I give a command from my Wiwo.(maybe socked gets blocked by something?) Any help will be apreciated!

Also experience the weird behaviour of orvibo sometime locking up. Disconnecting the plug helps.

What method are using for referencing your orvibo in your emit code? You can now use the mac code and type instead of the ip. This is supposed to reduce latency apparently - it might be worth trying to see if this improves this issue?

If you run python orvibo.py, you can find the mac address of your orvibo:

python orvibo.py
Orvibo[type=irda, ip=192.168.1.37, mac=‘accf4378efdc’]

And then instead of using

python3 orvibo.py -i 192.168.1.37 -e test-ac-on.ir

use

python3 orvibo.py -m accf4378efdc -x irda -e test-ac-on.ir

Not sure if this will work, but worth a try.

It works! Thank you for the head up

1 Like

hello Robinson I just bought a Orvibo ALLONE IR
but I can not find the code for my Fujitsu conditioner.
What should I sare to make it work? if you can help me?
thank you

If you follow the section in the original post with the heading:

this will explain how to learn the codes from your fujitsu conditioner remote, presuming you still have it.

Hello, thanks for the answer
but how do I get on my allone? through the terminal? I have a mac there’s a little guide? thank you

Yes you would use the terminal. Do you have the remote for the conditioner? And which version of openhab do you have installed?