Elixir and E-Robot for Android by Tamás Barta

Documentation of E-Robot

What It Is

E-Robot is an automation application which makes it possible for your device to execute commands automatically - all you need to do is define these commands. When you create a command you can specify which actions to execute when a given event occurs. Furthermore you can set conditions for both events and actions.

The application allows you to specify more than 130 event types and execute more than 50 action types; furthermore, all event and action types can be parameterized, making the app even more versatile, and its functionality may be expanded in the future. E-Robot can handle events which are location-based, time-triggered, application-handled, and more. It can of course execute Elixir 2 profiles as well, so you can automate profile activation easily.

Commands can also be executed manually from the application itself or using shortcuts, and not just automatically as a result of specific events occuring.

Creating a Command

After the application is launched, the welcome screen appears and briefly explains how the program works; following this, click NEW COMMAND at the bottom:

Give the command a name and click [OK]:

After this you will see the main commands screen, which links together Events and their accompanying Actions. The name of the current screen appears top left, next to the icon:

Continuing with the top line there is the "tags" icon, which allows you to organize your commands into GROUPS, and the final icon next to it is a menu which makes it possible to access other features of the application, including E-Robot's settings.

The next row down contains tabs, one per created command, each bearing the command's given name. You can jump from one command to the next using these; in the screen capture above there is only one command created ("HELLO") and so it is the only tab in evidence.

The space which begins below this tab row and which extends almost to the bottom (the "middle" of the screen) is reserved for the definition of the selected command.

Finally the toolbar at the very bottom contains icons which execute actions pertaining to the selected command (as selected using the tabs), and so you can save, rename, delete or execute the command using these (the "+" sign that appears first is to create a new command.)

A command is simply an event→action declaration, i.e. if event(s) occur(s), as defined by you, then you want action(s) to be executed. We have already declared a "HELLO" command; we will now define it to display a welcome notification message whenever the screen is turned on. Thus, in this case event will be defined as the screen turning on, and action will be defined as displaying the specified message. We will begin by adding this event using the + sign on the line marked Events, under the "HELLO" tab:

The event selector screen appears (as witnessed next to the icon top-left) where you define the event. Because of their large number, event types are organized by group, again using tabs (ACCOUNTS & SYNC group, APPLICATIONS group, etc.) Scrolling right through the group tabs will reveal the DISPLAY tab we will use to define this event; you can also click the name of any other tab (convenient if you were already there for another purpose) and you will be presented with the tab header names of all event groups. Using either method go to the DISPLAY tab and select the desired event, which in this case is Screen turned on (Sent after the screen turns on):

The selected event appears on the commands screen:

We have defined the event; now we need to define the action to take in case of said event, which is done in virtually identical fashion: click on the + sign on the line marked Actions, go to the OTHER tab (again by scrolling or via list selection by clicking any other tab header) and select Display a notification (Post a notification to the status bar). You will see that this action can be parameterized:

Parameters allow us to configure the action according to need; in this case, scroll down a bit to content text: and its associated value: field below, and type "Hello" (which is the text we wish to display whenever the screen will be turned on as per our "HELLO" command definition). Leave the other parameters untouched for now, then click [OK]:

Our first command is now ready; save your work by clicking the second icon on the toolbar at the bottom. Note that by clicking the execute icon (bottom toolbar, far right) we can test-run our "HELLO" command on-the-fly before trying it for real by power-cycling the display (in this case); either way, pull down the status bar after executing the command and observe the new notification you created, which appears along with the E-Robot logo and the current time:

Application-based Events

Application-based events allow you to execute actions based on application-type events, such as an app launching (i.e. if such-and-such app launches, then do this), stopping, receiving focus, or losing focus. Oftentimes the same commands will be useful for more than one application, so it is useful to organize applications into groups and refer to these app groups as a unit when they are to be part of a command definition.

For example, let's assume we want to turn Wi-Fi off when using certain applications, because we don't want them to use internet, but we do want Wi-Fi to be on when certain other apps that really need it are in use. This will be the focus of our next example.

First we need to create a new application group for the apps we don't want to use Wi-Fi (so the apps which will not be part of this group will automatically be the ones which do need Wi-Fi): using the top right-hand corner menu, select Applications. E-Robot will take a moment to scan the apps installed on your device, then present these apps in list form. At this point we select the applications for which we want Wi-Fi to be disabled (select some apps on your device which you know do not need network access, such as certain games (Hearts® in the example below) and most utilities (such as Link2SD® below). You would not, of course, select an application like Maps®, which cannot function without network access (if unsure, leave the app unselected):

When selection is complete click on the left button of the toolbar at the bottom (with a "+") to add these applications to a group, then click the [New group] button and select a name for this app group – in this case we will name it "no wifi" – then click [OK]. Looking at the app list now we can see which apps belong to the "no wifi" group because the group name appears in blue below the app name:

We have sorted our apps by creating the "no wifi" group; now we need to leave the Applications screen and go back to the Commands screen to create the commands which will turn Wi-Fi ON and OFF. How E-Robot will determine whether Wi-Fi should be ON or OFF will depend on which application is currently receiving focus. For example, if we are playing Hearts® the focus is on that game, and since Hearts® is in the "no wifi" group, we will define our Wi-Fi OFF command to say that if the "no wifi" group is currently receiving focus (we do this by defining the group itself as a parameter inside the command), turn Wi-Fi OFF. Conversely, if we are using Maps® the focus would be there instead, and since Maps® is not in the "no wifi" group, we need to define our Wi-Fi ON command to say that if the "no wifi" group is not currently receiving focus (again, by defining it as a parameter inside the command), turn Wi-Fi ON.

In brief then, the steps for creating action "Wi-Fi OFF" are:

  • Using the top right-hand corner menu, select Commands
  • Create new command "Wi-Fi OFF"
  • Find event Application group received focus and use it (with parameter "no wifi" group) to define the "Events" field in command Wi-Fi OFF
  • Find action Toggle Wi-Fi and use it with parameter value off to define the "Actions" field in command Wi-Fi OFF

Now create action "Wi-Fi ON"; the steps are identical to above with one exception: the event this action is concerned with is Application group lost focus (i.e. lost focus instead of received focus, as for Wi-Fi OFF).

If done correctly, the screen will look like this:

When you launch an application from your defined "no wifi" group, Wi-Fi will be turned off automatically and if you pull down your device's status bar you will see this notification:

… and when you are doing anything that does not involve an application from the "no wifi" group, Wi-Fi will be turned on again automatically and the notification message will look like this:

Location-based Events

Some may find the ability to create location-based commands one of the most useful features of E-Robot, giving your device the ability to operate with different settings based on your location. Before creating this type of command we need to first tell E-Robot how we define our locations. As before, we begin with the top right-hand corner menu, only selecting Locations this time:

Locations option

A "How to Use" message will appear; read it, then click NEW LOCATION and select a name ("Home" in the example below). The screen will look like this:

New location

Locations can be defined using cells (GSM or CDMA) or map coordinates. Many people are acquainted with the idea of latitude and longitude-based map coordinates, but perhaps not as many with cells. By "cell" we just mean the area around a cell phone tower base station. Your city has a great many such towers because their effective range is limited, so just think of your city as having been "chopped up" by your carrier into cells with a communication tower in each cell. So using cells to set location just means using the cellular towers closest to you to pinpoint your location.

Cell-based positioning is less accurate than positioning via map coordinates but requires quite a bit less power. Coordinate-based positioning is more accurate but needs either GPS or at least mobile networks to be on.

To use cell-based positioning for your current location, click the "+" sign at the far right of the "GSM cells" row (your own device may show "CDMA cells" here, but for purposes of this example the text will make reference to GSM as it is still the most widely used cellular technology in the world). Depending on your location you may get results quickly or it may take a bit longer. In any case, click on "Collect data …" now and let E-Robot scan for area cells:

Collecting cells

It is suggested you let E-Robot scan for at least 5 minutes to collect data on as many adjacent cells as possible, as it will sometimes take that long to obtain more than a single result. If doing this for home, as in the example, you may get a better result if you walk around your house. And as a final point on the matter, you may find that opportunities arise that let you add new cell info to a location (this will be made clear further along in this section). Whenever you are ready to have E-Robot save the scanned info to the selected location, click on the [Add cells] button.

To use coordinate-based positioning for the same location, simply click the "+" sign at the far right of the "Coordinates" row and tap the "pencil" icon that will appear. The screen will change to the familiar "Maps" look with your location appearing using a red marker. Move the marker to your current location, which may or may not be directly over a blue dot (the blue dot is your device's idea of your current location using mobile networks alone or mobile networks with GPS enabled) and click [OK], then click [OK] again.

The screen capture below shows the results of both of the above procedures being performed on a HOME location, with the info from a single cell appearing under "GSM cells" and the latitude/longitude info for the same location appearing under "Coordinates". A second location ("WORK") has also been created, although we cannot see its data here:

Locations

At this point you would go back to the Commands screen using the main menu and create the command(s) you wish your device to execute when you find yourself at the locations you have defined (eg. HOME and maybe WORK). You would define your event by searching for Enter location" under the LOCATION & SECURITY tab and pointing to the "Home" (or "Work") parameter from the list which would now appear. You would then choose to toggle Wi-Fi ON (for example) under the WIFI tab, which would accomplish the goal of always having Wi-Fi turned on when we are at home. The "with 10 seconds timeout" confirmation at the bottom is simply the user's preference of having a notification message appear for ten seconds upon action completion, in this example:

Enter locations

Assuming we have defined only two locations, HOME and WORK, can we specify what we would like E-Robot to do if we are at neither location? The answer is yes, we can do so using Exit locations" which is also under the LOCATION & SECURITY tab. Below we see a command which has been created to ensure Wi-Fi is OFF when we are at neither location:

Exit locations

As a final word on location-based events, note that it is technically possible that E-Robot believes you have left a location that you have not really left and acts on it, by, using the above example, turning Wi-Fi off. The way this can happen is if your device communicates with an adjacent cell you hadn't yet added to your current location, probably because it was not visible at the time you had defined the location. If this were to happen you would be able to see it in the notification area (note at 21:41 "Last command: Exit locations"):

Robot exited from locations

If you were to then click on this notification you would access the History screen (which is also always accessible through the main menu) on which you could see a history log of executed commands:

History screen

Using the History screen would allow you to determine why in this case E-Robot thought you were no longer in any of your defined locations. For example you would be able to see the cell info that was not defined as part of your location and which consequently triggered the corresponding exit action(s). If you know you really were at the location in question, you could click on the row in the History with the new cell data and add it to the location, but you may also choose to define the cell as an "ignored cell (by clicking "Add to location as ignored" in the screen capture above). You would do this if it was a "fluke", meaning in this case that your device communicated with a remote cell, as occasionally happens. Adding the fluke cell to the location as an ignored cell offers the advantage that, if it were to ever happen again, E-Robot would not react as if you left your location (unlike the first time), but neither would E-Robot react as if you entered your location were it to encounter this cell (and thus erroneously trigger "Enter location" commands). It is in this important way that "Add to location as ignored" differs from the more basic "Add to location".

Time-based Events

You can schedule actions to occur at predetermined times using the Alarm event to be found under the DATE & TIME tab. These alarms can be one-time events or repetitive. Clicking the "Alarm" event brings up the screen below, where the desired date and time of the event can be specified:

When parameter

Scrolling up reveals parameters which can be set, such as the repeat interval for a repetitive alarm, as well as which day(s) of the week it should be active:

Repeated events

One use for a repetitive alarm event is to turn certain things on or off at the same time every day. For example, keeping the device from continuously scanning for Wi-Fi network connections at night would be useful in preventing unnecessary battery drain. A command to accomplish this might look something like the screen capture below, which shows a command which will turn Wi-Fi off at 10:00 PM (22:00) every night:

Go Sleep command

It would then be desirable to allow Wi-Fi scanning to resume every morning. But instead of just creating the obvious Wi-Fi On command, why not use your location in the morning to determine Wi-Fi settings? This is a neat way of combining two features of E-Robot. It works like this: first, you need to already have your Wi-Fi-related location-based events defined, as explained in the previous section (i.e. events that do "when I'm here turn Wi-Fi on" and "when I'm there turn Wi-Fi off"). Once those are set up, you can set up an alarm here like in the previous example but eg. for 07:00 AM, only when it comes to defining your action you would choose, from the LOCATION & SECURITY tab, Reenter location (instead of simply "Toggle Wi-Fi"). This would have the added attraction of deciding how to toggle Wi-Fi in the morning based on your location at that moment, instead of just turning it on blindly. This is what was done in the screen capture below:

Wake Up command

Conditions and expressions

Conditions can be set for both events or actions. If you set a condition for an event and this event triggers then the command will be executed only when the condition is satisfied. If you set a condition for an action then the command itself will be executed but only the actions without a condition or with satisfied condition will be executed.

Let's assume that we want to mute our device when we turn it over during ringing. Add the Device turned over event to a command, click on the row of the event and select the Set condition option:

Set condition

A new windows appears where we have to set a logical expression as a condition, as we can see it from the title. If the value of this logical expression is true than the condition is satisfied. If you set a condition then the default expression is the And operator to be able to set complex conditions easier, for example: screen is on AND wifi is on.

Configure the condition

You can change or set an expression if you click on the icon next to it and select the Change expression option. So you can change the And operator this way too if you want to use something else. Now click on the icon next to No expression to set the condition "when the phone is ringing". An expression selector screen appears where you should go to the tab Telephony and select the Is call state expression.

device-2013-03-30-203456

After that you can set the parameters of the expression so keep only the ringing state selected:

device-2013-03-30-203817

Now you can see the whole expression and finish the configuration by click on the OK button. New condition can be added easily if you click on the + button of the And operator. The created expressions can be deleted by clicking on the icon next to the expression and selecting the Delete expression option.

device-2013-03-30-203623

You can evaluate and try an expression if you click on the icon next to the expression and select the Evaluate expression option. You will see the type and current value right below the expression. In our case it is logical false because the device isn't ringing right now:

device-2013-03-30-204355

On the Commands screen you can see the condition we have just set:

device-2013-03-30-203956

The type of an expression can be number (for example: 42), text (for example: android) or logical (for example: true). When you configure an expression you can select only from those which are appropriate for the expected type, shown in the title of the window. If you set a condition then you have to use a logical expression, other expressions are displayed in grey and a warning message is displayed if you click on it:

device-2013-04-02-093448

The Battery percent expression has number type so you can't use it directly in logical expressions. But you can use it with combination of logical operators which accepts numbers, for example: Battery percent EQUALS 100 or Battery percent GREATER THAN 90:

device-2013-04-02-094131

Confirmation of Command Execution

As expected, all of the command examples in this documentation perform their action(s) based on their respective command's associated event(s), as defined by the user, but they also have one other thing in common: the actions are all performed automatically once the conditions are met. Is this not to be expected? It certainly is, as it is the basic idea behind E-Robot. But we need to introduce here an idea we have not yet considered: the fact that automatic command execution can, in certain instances, actually be annoying.

Let's imagine we created a command that automatically turns Wi-Fi off at 10:00 PM (22:00) every night, because we tend to retire for the night shortly thereafter (we have seen such an example earlier in this documentation). But what if, once in a while, you wish to continue using your device – AND therefore Wi-Fi – for a while longer, say an extra hour or so. It would obviously be irritating if your device automatically toggled Wi-Fi off at 10:00 PM on those nights. If this were to happen you could just manually turn Wi-Fi back on of course, but this would defeat the purpose of E-Robot somewhat.

E-Robot has foreseen such eventualities and offers a more elegant solution by allowing one to specify that a time-delimited confirmation be associated with the execution of a command, allowing the user to postpone (or outright block) execution of said command.

Exit locations

As can be seen in the screen capture above, command confirmation is enabled simply by clicking the "Confirmation" field that appears toward the bottom of the screen when defining commands. A choice of time spans (eg. 10 sec, 30 sec, etc.) will appear, or you can choose "no confirmation" if you've thought better of it. Confirmation of command execution may be specified whenever the field appears under "Settings" on the Commands screen where commands are defined.

Note that confirmation of command execution is only useful if the device's user (you) are physically close enough to the device at the time it was set to appear; otherwise, the command will execute automatically after the specified confirmation time has elapsed. If you are present, you will see the popup confirmation (see final screen capture below) and may choose to outright cancel execution of the command ("Cancel"), execute it immediately after all ("Run"), or postpone execution ("Later"):

Confirmation

If you choose to postpone execute ("Later"), another popup will appear with a selection of time spans (eg. 5 min, 15 min, etc.) For example, if you know you only need to continue using the device for another couple of minutes because you are just about finished what you are doing, you could choose "5 minutes later" from the menu; E-Robot would then automatically request command execution confirmation again five minutes later.

Shortcuts for manual command execution

You can create shortcuts for commands or command groups to manually execute a command. When you create an E-Robot shortcut you can select which command you want to execute:

Select a command

After that you can change the label of shortcut or set a custom image for it:

Change image

Ipack icons are supported or you can pick an image from your device too:

Select an Ipack icon

The result is a customized shortcut which will execute the selected command:

The customized shortcut

If you have created command groups then you can create a shortcut for a group too:

device-2013-02-26-110036

Clicking on this shortcut will open a command selector dialog of the specified group:

device-2013-02-26-110055

Example: Connect to the strongest Wi-Fi network

If you have multiple Wi-Fi networks available and you would like to be connected to the strongest one then you can do it with two commands. The first command is to initiate a Wi-Fi scan in every minute. If you use the Current time changed event then you can set time interval filters too:

Wi-Fi scan in every minute

In the second command you can use the Connect to the strongest network when a Wi-Fi scan finishes:

Connect to the strongest network

Comments (301) Trackbacks (0)
  1. Hi, thank you for the App. I need a Howto for using a NFC-Tag to switch to a specific Elexir2-Profile. For writing to the tag I use the App ‘Tagstand Writer’. I can write a text string to the tag. But when the Nexus 4 is reading the tag it displays the typical windows ‘with whick app do you want to open this event’. There E-Robot can be choosen. But the allways / once Buttons are missing. So I have to go through this scree each time the tag is scanned. What can I do?

  2. I see. Thank you for that information. Can you help me with two other problems that I can’t solve?

    1: When loosing the connection (too far away) to Wifi ‘Foo’ (at Home) or ‘Work’ (at work) I need to switch to Elexir 2 Profile ‘on the road’. And when I come in reach of the Wifi ‘Work’ I want to switch to the profile ‘Office’.

    2: When I discover the bluetooth partner ‘headset X’ I want to start the app ‘Gogle Music’.

    How can I automate theese two tasks?

    TIA.

    • To detect loosing wifi connection you can use the Network/ Network connectivity changed event with when=disconnected and type=wifi

      To detect if wifi ‘Work’ is connected you can use the Wifi / Network state changed event with when=connected and set bssid or ssid of your Work network. The pencil icon auto-fills the field if you are connected to that network.

      To detect the connection to your headset you can use the Bluetooth & NFC / Bluetooth ACT connected with device name ‘headset X’. I suggest you to select the device name from the list of bonded devices by using the pencil icon. To start Google Music you can use the Applications / Start application action.

  3. With the ALARM Event. Is the Parameters supposed to increased by 1 day, if the repeat is set to 1 day.
    Eg: ALARM: 26/04/2013 @ 11:00

    When I check the parameters on the next day. Should it read: ALARM 27/04/2013 @ 11:00? or will it still read 26/04/2013?

  4. How does “Collect data in the background” work for a location? I can find no documentation.

    • I am not sure but I think it works like this:

      Lets say you create a ‘Home’ location and you stay at home for at least an hour, then you can turn on ‘Collect data in the background’ for an hour. All cells your phone connects to in that hour will be added to your Home location.

  5. What is the difference between
    Network/ Network connectivity changed event with when=disconnected and type=wifi
    and
    WiFi / Supplicant connection changed when= disconnected

    ?

  6. I have been trying to get a location/movement based set of actions set up. I want the Gps to be shut off when I have been in a location for more than 10 minutes. I then want to detect when I start moving again and turn the Gps back on.
    Currently I have not been able to get the movement detection to detect false, or no movement. I can get the Gps to turn on when I start moving.
    Suggestions?

    • How do you detect start moving without gps?

      The Location changed event has output parameters: latitude, longitude. You can store these variables in the command into persistent variables with the Set variable action. Using these variable you can calculate movement from a previous position.

      • I use the network option for location detection. It isn’t perfect but it is better than not at all.

        I am not sure how to set up the ability to store the lat and long.

      • Hello, Mr. Barta!

        Thanx for a great app! I’m a beginner and fiddling with it with little success – I must admit.

        My question is similar to that of Mr/Ms. R. T. Vance REF: Movement Detection:

        How do I switch-on the GPS in a Battery Saving Mode while in motion [driving], switch it off when I stop for a certain number of minutes or hours and switch it on; when I get moving again?

        Looking forward to receiving a simple solution.

        Thanking you,

        With warmest regards,

        Alhad

        • Hi,

          I don’t know if it is a good idea. Sensor-based moving detection costs much more than GPS I guess. It would be better to detect if an application started or stopped to toggle GPS.

  7. Hi,

    I’ve just started using e-robot, and it fits in well great with the rest of the elixir suite – I love that it can use the same profiles, for example.

    Is it currently possible to use wildcards in calender event names? And might it be possible to have a calendar-event-end event?

    Thanks again!

  8. Hi barta
    I resolved the problem of toggle lockscreen. Now I’d like to create a command which turns lockscreen off when I’m within my home WLAN (but not connected to it).
    Is that possible? I tried the event “Network state changed” = “available”, but this does not seem to work.
    Thanks a lot
    Martin

    • How is it that Wi-Fi is on, home network is available but not connected? When do you want turn lock off and on?

      • I want to turn off lockscreen when I am at home i.e. within my home WIFI, but I would not like to have to CONNECT to my WIFI to have the command executed.
        Then, when my WIFI is no more available, e.g. when I left home, I ‘d like to have lock screen turned on.
        (This works fine for GSM – cell – based locations, but I’d like to limit the area to my home WIFI)
        best, Martin

  9. Hello,
    I’m new to e-robot, but I can say I like it!

    But i have som questions and perhaps suggestions:

    Is ist possible to change the color of the e-robot-Logo in Statusbar with conditions? Example: i’m in my home-location and the logo is green. When i change the Location and i’m at Work the Logo get’s orange.

    I think it would be nice, if you hightlight the current conditions in perhaps green. So you can see why some rules are not active. Example. I have a Rule that says turn on mute-modus on 8pm. And current time ist 7.30pm The Condition “in location home” is green and 8pm is red.

    What about time ranges? Example from 7am – 17pm turn on mute-modus and vibration on?

    Thanks a lot

  10. hi,

    my question is, is it possible to combine e-robot and greenify to create some kind of auto-hibernation?
    i find that greenify doesn’t hibernate properly at times, and my attempt to add action > 3rd party > hibernate now only result in directly calling greenify to hibernate instead of creating hibernating action in e-robot.

    thank you for your time

    • I have configured the same. I went:

      Event: screen turned off
      Action: Wait 300000 (in my case 5 minutes); Start shortcut: Hibernate Now, not screen state (which means screen is still off.)

    • Hello, Mr. Barta!

      I have another question about Time-based Events:

      Every day, between 23:00 Hrs & 05:00 Hrs; I’d like my mobile to be in the Airplane Mode OR without the wifi & without the network connections.

      How do I configure it?

      • Create a command:

        – Add an “Alarm event” with 1 day repetition and set time to 23:00, set it to be exact and wake the phone up
        – Add an “Change airplane mode” action and set its state to off (depending on your Android version it needs rooted phone). If you can’t use Airplane mode action you can try “Toggle wifi” and “Change mobile data state”

        Create a similar command, but in the alarm event set time to 5:00 and in the action(s) set state on.

  11. Hi barta, first of all, thank you for creating an awesome app!
    I’m flooded with lots of possibilities everytime i think of your app. One of them is shell command. Could you give instruction on what shell command can be used? Or if you havent got the time, could you give me some websites/pdf/any links to read available shell commands ready to use in your apps?

    Second, i noticed that some of those function needs root access. Can u give me a hint on how to enable root acces for e-robot app?

    • Just configure the options that need root access. Normally when an app performs an action that need root access Superuser or similar app prompts to allow or deny root access. This is of course when your device is rooted.

  12. Thank you for creating such Magnificent App
    You are simply THE BEST
    Thank YOU

  13. Great app! But personally I think that if you want to create a little more sophisticated commands this app is very difficult and lacks proper documentation. I understand that writing documentation takes a lot of time so hopefully someone here can tell me how to configure it.

    I want to start an application when I connect my phone to power and when I am NOT connected to my home WiFi network.

    Thanks.

    • Event: Battery / External power is connected, set condition: Not (Equals(Wi-Fi SSID, “yourssid”))
      Action: Applications / Start application

  14. Thanks.

    I am struggling in configuring the last part of the first line. Could you explain a little more?

    • – After you added the event click on it and select “Set condition” to set a condition.
      – Click on the first pencil to “Change expression”
      – Select Operators / Not
      – Click on the pencil and select Operator / Equals
      – For the first part set Wi-Fi / Wi-Fi SSID
      – For the second part set Constants / Text / NAME OF YOUR NETWORK
      – Click on OK 3 times

      • Thanks.

        I think I get it 🙂 Am I correct that this cannot be done with Bluetooth? So when I disconnect from power AND my phone is NOT connected to ‘device x’ by Bluetooth then turn off BT

        • There is no way to determine if a bluetooth device is connected or not. The only way to do that is to create separate commands with events bluetooth device connected/disconnected and store a value in a variable and after that you can use this variable in expressions. For example in device connected command set deviceIsConnected=true, in devices disconnected command set deviceIsConnected=false and then use this variable.

  15. Hi, Barta!
    Thank you for the beautiful application!
    How can I delete some SMS through the Robots commands?
    (sorry for my english)

  16. Hi Barta,

    Any chance you can add HDMI event?
    I’m looking to execute several commands when my S3 is connected via MHL for HDMI output.
    There is “hdmi” event that happens when phone outputs via microUSB audio and video.
    Let me know if you’ll need catlog for this event.

    thanks.

    Mike

  17. I need to create an action to unlock the screen. I tried with ‘Change lock screen state’ action by providing pin. But it doesn’t work. Any idea how to implement this?

    • Did you install Elixir 2 – Admin add-on and gave admin permission to it?

      • Ok. This is what I did.
        Installed Elixir – 2 –> Gave super user permission.
        Installed Elixir – 2 – Admin addon –> Enabled device administrator

        Created action – ‘Change lock screen state’ – ‘toggle’ – provided pin

        Still unlock is not happening.

  18. Thank you for the beautiful application!

  19. I am new to e-robot. I have left ‘settings profile’ as they apparently offer no more support or development.. so far i love this! the one thing i did like about settings profile was the ability to launch a “command” for a period of time.. for example i want to launch tethering for 30 minutes.. or brightness to 100% for 10 minutes.. the advantage to this is too many times i would tether and forget to shut it off (battery drain!) same thing for brightness… is there away to do this?
    Thanks!

  20. Thanks for the awesome app! Is there a way to save the profile/commands (export to SD or save to dropbox)?

    • Yes, open the Backup screen and you can click on an item to share or backup. Or you can select multiple items and share or backup all of them.

      • Awesome app. Just getting started and looking for something easier than Tasker.
        Backup works, mostly. Sent to drive but screen shows no Backup. More important question. Where is RESTORE? If we are going to take on Tasker, we will need to make sharing recipes much easier.

        In fact Backup and Restore should be a command option within E-Robot as part of Proof of concept.

        • Backup in E-Robot makes backup at /sdcard/Android/data/com.bartat.android.robot.KEEP directory. Restore works for files in these directory structure. If you “share” backups and copy to Drive for example then now you can’t restore from then.

        • Never mind. I see it now. On widescreen Nexus the checkbox was very dim.
          Also Folder=Restore and Disk=Write Backup is not intuitive.

  21. Hello all,

    I’m looking for a good way to configuring the following: When I am at home and it is between 22:00 and 06:00 then do a couple of actions. I know I can create an event ‘enter location’ with a condition of between 22:00 and 06:00. But in that way it only executes when I enter home location and time condition is true. I want it also to execute when I am already at home and it becomes 22:00.

    Can somebody help?

    • You wrote down well what you should do. Add a new event to the same action:

      Alert, repeat: 1 day, 22:00, wake up the device
      Add a condition to it: Is in location (Home)

  22. Is it not possible to add content anymore?

    • How do you mean that?

      • I tried to post a problem but I get the message that it is already posted but I do not see it

        Hi Barta,

        I’m migrating my Llama actions to E-robot, but I have a command which as it executes crashes reboots my phone. The command is as follows:

        Event:
        External Power is connected (when not connected to my home Wifi)

        Actions:
        Turn screen on
        Turn GPS on
        wait 1 sec
        Simulate key press: menu
        wait 2 secs
        start shortcut: Nova launcher jump to page 3
        Turn BT on
        Turn auto-rotation on
        Change media volume to 100
        Toggle stay awake always: on

        Are there known issues with one of these actions or is there way to determine what goes wrong and make my phone crash and reboot? When I do the same actions with Llama there is no problem.

        Thanks.

        • I did some more testing and it it seems that I narrowed the problem to one action ‘turn auto-rotation – on’

          Anybody else with the same problem or even better a solution?

  23. where are erobot backups placed and how do I restore one?

    • They are at EXT/Android/data/com.bartat.android.robot.KEEP/*

      The backups are listed at the Backup screen too. Select any of them using checkboxes or click on one and then Restore.

      • Tried posting a reply recently but seems it got lost. Basically I wanted to suggest you place the backups in a safer place as other cleanup programs such as SD Maid and Cache Cleaner appear to wipe out your backup files. Also, another suggestion to allow the user to specify his own notification icons for commands.

      • Question/suggestion: it seems I can add a condition to an event which offers only a limited set of possible scenarios I wish you would extend. For example, if I want to create a command to start YouTube in case a particular Bluetooth device is connected and a phono/audio cable has been plugged in, I would create the event for the one but add the other as a condition. However whether I start with Bluetooth as the event or with Audio as the event, I cannot find the other as an option in the Set Condition menus. Unfortunately, adding both events to the command causes the command to fire if either my Bluetooth device *or* the Audio cable is plugged in, and E-Robot does not evaluate and trigger the event at the presence of both conditions (a logical *and*). I guess an alternative solution (instead of using Set Condition) would be to allow events to be combined with logical AND/OR operators.

        • Hi,

          Unfortunately it cannot be determined if the specified bluetooth device is connected or not so it cannot be used in condition. But you can solve this with new commands.

          1. Create a command with event Bluetooth device is connected and set a variable (for example blConnected) to true.
          2. Create a command with event Bluetooth device is disconnected and set that variable to false.
          3. Now you have a variable which is able to determine if the device is connected or not. Add two events to your command:

          – Bluetooth device is connected, condition: headset is plugged in
          – Headset is plugged, condition: variable blConnected

          Events are events notified by the system, they cannot be combined with logical operations. Only one of them happens in a moment.

  24. In fact, this app is really for computer wizards, because it is not at all easy to use or understand.

    After trying for over an hour to do the simplest thing, which is simply lower volume levels at a specified time at night, and then increase the volume in the morning, I failed utterly!!!

    Just could not for the life of me figure out how to set the volume level!!!

    Managed to get it to mute OK, but that is not what I wanted, I wanted to be able to hear the phone at night without waking everybody else up!

    Anyways, you guys seem to like it, so that’s great, but for non-computer geeks, really there should be some basic pre-set commands which are very common, like what I was trying to do!

    • Hi,

      You can change volume this way:

      – Add action: Audio / Change volume
      – Select the streams you want to change, notification and ring for example
      – click on the pencil next to percent to set volume percent
      – Select Constants / Integer number
      – Set 10 for 10% percent for example

      I guess the strange things for you to set percent value. It would be easiest if you could enter number without selecting Integer number. But it can be any expression to be able to do more advanced things.

  25. Hi Barta ! Excellent 🙂
    One Suggestion,
    Please introduce RECIPE for common tasks, i am sure many people struggling for the same task at their own. So Please maintain Ready Made Recipes to download or in repository like something. So anyone can contribute their own ideas and get some too 🙂 Enjoy. Best of luck.

  26. Hi Barta,

    My e-robot sometimes does not respond to events nor do they appear in the history or debug section. Can you advise how to troubleshoot?

    Another question…is it possible to react to a specific NFC tag?

    Thanks.

  27. This is indeed a GREAT app!!
    While i know the stock Android does not have this, is it possible to have e-robot toggle the “Power Saver” options (Samsung Galaxy S3)

    I would like to have the Powersaver on, during time intervals when i konw i want my phone to not consume much battery consuming actions…

  28. Hi,

    For the send SMS event, could you give me the exact syntax for inputting a phone number? Also, which constant should I use?

    Thanks.

    • The best way to be sure is that add an action which displays income number, for example Display dialog with Variable value (name: from). Then you will see how to enter the number to match.

  29. Hi,
    I don’t understand how I can make a backup for my commands and/or groups
    When I see the backup screen, I don’t have any button to make a backup.
    Can you explain me?
    Thanks

    • There are checkboxes next to items. Select commands, locations, etc you want to backup. If you want to backup every command, click on the checkbox next to the Commands header.

  30. I have no clue how to set the gravity event. It says something about “x,y,z,length” but when selected it prompts for lower and higher values. What do I put there? Can I make it trigger on a particular angle of the phone?

    • I think you should use the orientation event to detect “angle of the phone”.

      degree: angle between the magnetic north direction and the y-axis, around the z-axis (0 to 359). 0=North, 90=East, 180=South, 270=West
      pitch: rotation around x-axis (-180 to 180), with positive values when the z-axis moves toward the y-axis.
      roll: rotation around the x-axis (-90 to 90) increasing as the device moves clockwise.

      • Is gravity event a useful function?

        What is the syntax for orientation?
        I selected the event, but it did not prompt me for anything.
        When I select “Set condition” and get “Logical expression” I don’t know what to enter there.
        Can you give an example? Thanks.

        You describe both pitch and roll as being around the X axis. Is that right?

        • Well I got (pitch >= 30) and (pitch = 300 and <= 330 and I can't get it to work. Also it's only occasionally responsive even with the first set of numbers.

          • What I meant to say is, between 30 and 60 works, but between 300 and 330 doesn’t.

          • From some experimentation it seems 0-180 works but > 180 does not. I thought maybe it was really -180 to 180, but negative numbers don’t work.

            Can you let me know how this works?

          • OK, yes you did say pitch was -180 to 180, and I see from observing Elixir Sensors that what I want is indeed pitch between -30 and -60.

            However using integers for -30 and -60 does not work. Maybe you have a signed/unsigned problem. And when I try to use a decimal (float) numbers, it refuses to accept a negative value (can’t even type the “-“).

            How do I do this?

          • Pitch is from -180 to 180 as I wrote. I can add a condition to the event: And (Greater than (Variable value “pitch”, Integer constant -61), Less than (Variable value “pitch”, Integer constant -29))

            So you can enter positive or negative numbers if you use Integer constant expression.

            My only problem now is the app is that there is secure limit in command execution that a command can run only 10 times in a minute. Maybe a command setting would needed that “max execution counts per minute”

        • I don’t understand orientation sensor much, you can check the android documentation here:

          http://developer.android.com/reference/android/hardware/SensorEvent.html

          I think the easiest way to understand sensor variables is to install Elixir 2 (or any other sensor app), open the Sensors screen and check the values of degree, pitch and roll to understand them.

          Every sensor event (and other events) has output variables, you can use this variables using the Variable value expression.

          I can’t say if gravity sensor is useful or not. I added to the app because Android can provide this feature but I can’t know if there is a user or not who can use it for some useful feature. My opinion is that sensor events are to low-level events to use directly. So if somebody ask me a feature which needs sensor then I create a high-level event based on a sensor event to make a new, easy-to-use feature. For example I created:

          – Device shaked event based on Accelerometer sensor
          – Device turned over event based on Orientation sensor, using the pitch value
          – Device turned back event based on Orientation sensor, using the pitch value

          • I’m not sure where it was, I can’t find it now, but there was definitely a place where I could not enter the “-” sign with a number. It was where you type in the text directly. But with the +/- incrementers I can make it negative. Also for Gyroscope, which has float numbers up to 8, I cannot enter a “.”, only ints.

            Gravity is not what I was looking for. It does not show the direction of gravity but rather the amount. I guess it’s useful if your phone is in free-fall then gravity will drop below 9.8.

            I think I have it working now as I want. The overall goal was to be able to turn the screen on and off without pressing buttons. Face down works for screen off and now holding at 45deg, like holding it normally in your hand, will do screen on (and shouldn’t happen in my pocket). Can you think of another way, besides shake?

            It may not be optimal as the system is telling me that it is spending a majority of power on E-Robot. I know wake-locks are a problem with some apps, not sure if it’s that or what. If this app drains my battery I’ll have to stop using it.

            I experienced a fair degree of frustration with it not behaving consistently during my testing. Even the face down did not seem to work all the time. But now that you tell me that it has a limit of 10x a minute, that was probably it. I’ll observe during normal use (10x should be fine) and see if it is more consistent.

            No offense but the system for entering expressions is awkward. You are able to print it out as a normal expression, and it would be nice if we could enter it as a normal expression. Take a look at Zooper Widget. E-Robot is an awesome and powerful app, but expression entry is it’s biggest drawback.

  31. Finally! Kitkat removed the ability to toggle GPS and many apps claim ROOT will work with their apps, but doesn’t. This is the only app that I’ve found that successfully allows this toggle. The downside, the other apps allow me to toggle my Mobile Networks, but e-robot does not allow this. 8-(

    Scenario: I never use GPS or Data over my Carrier (cell provider/data over network) as I like to stay off grid and save money. However there are times in my car that I need both these features turned on to accurately calculate trips to unknown destinations. Times like these I enable data networks and GPS (and additionally disable Google Maps’ toggle for download data only over wifi, as it would be hoping from free signal to free signal intermittently losing the route calculated by Maps). All these settings take a handful of clicks that I am trying to automate. So far I’ve gotten it down to two cliks between 2 programs, but would only need this one program if you could add functionality to toggle that setting.
    Kitkat 4.4.2, Settings>Mobile Networks

    Much thanks and great work! 😎

  32. Hi .. perfect app 🙂

    I read that E-Robot can retrieve variables from tasker plugins… what are these variables? can I find a “list”?

    Thank You

    • Hi,

      I can’t add a list because it depends on plugins.

      You can do only one thing, when plugin is executed check the Debug screen where retrieved parameters are logged.

      Maybe I should create an expression to be able to display current variable values in a dialog.

  33. The temperature sensor says, “sensor not available.” This is a Galaxy S4. What’s wrong?

  34. Jó estét, Tamás

    I have a question about E-Robot with conjuction with Elixir 2, I want to create a command that will work as follows (i wrote it as in fictive programming lang… 😀 ):

    IF (( $time IS IN [22:59 – 06:59] ) && ( $ELIXIR_PROFILE != “day”) && ($E-ROBOT_LOCATION == “home”))
    THEN
    ELIXIR_PROFILE=”day”
    ENDIF

    Thanks for your advice.

    Peter

    • Hi,

      Maybe it is a mistake that you active “day” profile during night (22:59-06:59)
      In E-Robot you can do similar settings this way:

      1. command: Home-Day

      events:
      – Enter location (“Home”), condition: Is in time (22:59-06:59)
      – Alarm (22:59 repeated daily), condition: Is in location (“Home”)

      actions:
      – Elixir profile (“day”)

      2. command: Other

      events:
      – Exit location (“Home”)
      – Alarm (06:59 repeated daily)

      actions:
      – Elixir profile (“not day”)

      • Köszönöm szépen, Tamás. (thank you Tamas)

        for your quick answer. Perfect app (sorry for the mistake with time period in desc. of my prb)

        Peter

  35. I want my phone alarms me when my bedroom at night goes dark such as in the case of electricity failure. How to set Light Event commands? Please help

    • At first you should find it out what is the “value” below you want your phone to alarm. Use this Light event and display “value” variable out (toast message for example) to find this upper limit. This value is in SI lux units.

      If you say that limit is 4 lux for example then set lower limit to 0 and upper limit to 4. The command will be executed when for example light sensor value changes from 10 to 3.

  36. Hello,
    is it possible to switch the default Launcher?
    I want to start (and make it default) Nova Launcher when I am in my car (and set orientation, brightness, gps, etc)
    I want to start (and make it default) Apex Launcher when I am not in the car.

    I am not asking for help on how to set up the conditions, just would like to know if it’s possible to change the default launcher.

    Thanks!

  37. Hi

    some applications are not visible/listed in applications. In example Google+ can’t be check. I tested it on two phones with cyanogen 11. Is ther some reason why? Can I fix it somehow?

    Thank you for great application. It’s very powerfull (it just took some time to me to start understand it and I am still learning).

  38. Hi. Please help find the answer.
    As in the E-robot i can specify the path and file name of the audio recording process from the value of my variable? (my variable name is for example “datetime”)
    And more. Where (in which variable) find a number of the called / calling abonent when the state of telephony “in the call”?
    Thank you.

    • Hi,

      In the next release path can be any expression so a variable value too.

      You have to use the “Incoming call” event to grab the “number” output variable of the event.

  39. Hi excelente app!!! You are a genious. But i’m not so i boder you asking if you could explain me how to make e robot do This.
    I use a tablet 7″ as GPS and to listen Music in the car through aux car sistem and what i need is when the car start moving to launch Poweramp Music player and when the car stop for a period of time to turn off Poweramp because i always forget to turn it off and to turn it on requires steps that makes me dont pay atention to driving.
    Thank’s in advance

    • Hi,

      Maybe you should use the “Location changed event” and use the outgoing “speed” parameter to determine if car stops or not. If it is zero then start a new command which set a variable “stop” to true and waits and after that stops Poweramp if “stop” is still true. If speed is not zero and if “stop” is true then set “stop” to false.

  40. Hi great app.
    I was wondering how I can make a button that says yes or no before execution like the confirmation. The confirmation splashing the e-robot app for a sec. I want to see if there is an work-around.

    • There is only one workaround:

      – create a “Yes” command
      – create a “No” command
      – add both of them to the same command group
      – create a shortcut to execute this command group

      A command group shortcut displays command names in a list, so in this case it will display Yes and No. And will execute the selected command.

  41. Hi Barta,

    Now I’m testing Your app but I can’t solve a simple problem.
    I have phone connected with my car radio by minijack to play internet radio on car’s speakers.

    I want start my internet radio (Xiialive app) when I connect headset (minijack) to my phone and when my phone is connected by bluetooth with my car.

    I prepared 2 events:

    1. Headset is connected
    2. Bluetooth & NFC / Bluetooth ACT connected with device – my car (I use this event because I need set media volume for maximum when I’m connected with car’s radio)

    Actions:
    1. Run App – Xiialive
    2. Media Volume – maximum

    What is not ok:
    E-robot start Xiialive when one of the events is true, but I want to start app when both of my events will be true (operator “And”).

    Could You help me?

    • Hi,

      Connection between events cannot be “AND” because they are moments not states, and only one event can happen at the same time.

      When you talk about can be handled as “conditions” in E-Robot. Unfortunately in the current version of E-Robot there is no expressions to determine if a bluetooth device is connected or headset is plugged. So you need 4 commands to do what you want.

      1. command: RunXiialive

      Events: –
      Actions:
      – Run App – Xiialive
      – Media Volume – maximum

      2. command: Car-Connected

      Events:
      -Bluetooth ACL connected, name=YOUR CAR NAME
      Actions:
      – Set variable, name=carConnected, value=logical constant TRUE
      – Execute Robot command: RunXiialive, condition: Variable value(“headsetPlugged”)

      2. command: Car-Disconnected

      Events:
      -Bluetooth ACL disconnected, name=YOUR CAR NAME
      Actions:
      – Set variable, name=carConnected, value=logical constant FALSE

      3. command: Headset

      Events:
      – Headset plugged or unplugged (keep all checkbox on)
      Actions:
      – Set variable, name=headsetPlugged, value: Equals operator(Variable value(“state”), Integer constant 1)
      – Execute Robot command: RunXiialive, condition: And operator(Variable value(“carConnected”), Variable value(“headsetPlugged”))

  42. Hi I’m trying to read text from a file (.text) so I can parse the information.

    I tried the action read file to variable with no success. I also tried read file line by line.
    Can you offer some guidance ?

    Also, can you give tips on parsing the information ?

    Thanks in advance,
    Steve

    • Hi, Could you write what the file contains and what information you would like to retrieve from it?

      • Thanks for responding but I figured it out. The variable the file is read to doesn’t show up in the variable tab, but it still can be used.

        I’m doing this so I can pull weather data, parse it and have my phone speak the weather every morning.

  43. Can you give me instructions to perform the following task:

    When WiFi is active, disable cellular data

    When screen is off, disable cellular data and WiFi

    • 1. command: Screen is off

      Event: Screen turned off
      Actions: Turn Wifi off, Turn Mobile data off

      2. command: Wifi turned on

      Event: Wifi state change (enabled)
      Action: Turn Mobile data off

  44. Hi Barta,

    I have inboxed you a query from my side. Great app so far it seems.

    I think the one thing the site could use is an idea bank. Where users of the app (and you) can present ideas or save some custom actions. I think this will save a lot of time that you would spend supporting guys like me and also create more usability for your apps overall. Any plans to do this soon?

  45. Hi Barta,

    I think you have a winner here. I’m slowing learning E-robot but I am struggling with one particular problem. When charging by wireless overnight, when the charge reaches 100% the charging stops and the screen turns on, when the charge drops below 100% charging starts again, turning the screen on. The constant screen on, screen off toggling is disturbing our sleep. I can turn off the screen while charging using e-robot, but I’m not sure how to keep if off until I remove the phone from the wireless charging pad/dock.

    Thanks for your suggestions.

    • So there is a system application which turns screen on when charged. I think there should be a setting to turn this feature off. E-Robot can’t prevent an other app to turn screen on.

  46. Unable to turn mobile data on – off.. I have written some commands to turn mobile data on and off on some events. In History and Debug, I can see the commands being fired but mobile data is not turned off or on. I am using Android L on Nexus 4. Is it Android L issue? Do I need root for this command?
    In Debug I can see:
    Execute action: mobile_data, params:[state=on]
    Set mobile_data state to true.

  47. Thanks Barta. I will wait for you to test L. I think data on/off function is broken.

    Also, is it possible to setup a command like this
    Event: When Wifi scan results are available
    Condition: If a particular Wifi network is available
    Action: Turn on Wifi and connect to that Wifi network

    Basically there can be many configured wifi. i want to detect availablity of one specific Wifi and connect to it.

  48. Great application, but I ran into a problem. I created a wifi / audio command on my Galaxy S4. When my phone connects or detects a specific SSID it will trigger the audio to un-mute. I set the action to mute:off, but it doesn’t do anything. When I add another action after, mute:update, it seems to take my phone off mute. Here is the problem. After that event runs and my phone is plugged into power, the screen gestures become very erratic. Trying to type becomes impossible and navigating around the screen is very difficult. If I unplug the power, it seems to work fine. To resolve this, I have to delete the event I created, force stop E-Robot, clear the cache, close all open apps and restart E-Robot. After all this, the phone operates normal, even with the power plugged in. I have other events that work great and no issues. Any ideas? Any information will be appreciated.
    Best Regards, KK

  49. Hi,

    How do you specify > 1 event to occur (A and B) as the condition?

    I’m trying to create an event where: then:

    However it seems that the event is fired whenever condition is satisfied.

    This app is great, by the way.

    Thanks.

    • Sorry, I don’t understand what you mean.

      If you add events to a command with conditions then the command is executed if one of the events triggered and its condition is satisfied, condition value is logical true.

      • Sorry, I’ll try to clarify.

        I’m trying to create a command that:

        WHEN
        – Bluetooth headset is connected AND
        – phone is answered
        THEN
        – turn off Bluetooth (and)
        – set variable $bluetoothWasConnected to true

        What I’m currently experiencing is that the event is triggered when either Bluetooth is connected OR phone is answered.

        Thanks

        • The event should be “Phone answered” and you have to add Headset is connected as a condition.

          If I see right there is no such expression to detect if headset is connected or not. Then create a new command with event “Headset is connected” and action: Set variable value “headsetIsConnected” = Equals(Variable(“state”, 1))

          Then add a condition to your Phone answered event: Variable value(headsetIsConnected)

  50. Can you help me? My tab may send and receive phone call, but speaker goes to handsfree speakerphone mode automatic by default. I switch normal mode every time and it not satisfied me. I try your e-robot and teach my pad send call with normal speakerphone mode, but i have trouble when i receiving call. How properly switch speakerphone in receiving call mode?

    • Hi. Do you use “Toggle speakerphone” action to turn speakerphone off?

      I guess you should create a command with event “Incoming call” and with action “Toggle speakerphone”. Have you tried that?

  51. Hi,
    I am trying to automaticaly unlock phone when screen turns on and proximity sensor indicates that phone is not in my pocket. I have added “Screen turned on” event, then I tried to add condition to it. But I don’t see proximity sensor in conditions. Then I added “Proximity event” but I don’t know which values should I use. Where can I get this values?

    • You can do the following.

      Command 1: near

      Event: proximity sensor, when enter interval 0 .. 1
      Action: set variable “far” to logical false

      Command 2: far

      Event: proximity sensor, when enter interval 1 ..
      Action: set variable “far” to logical true

      In your command add condition to screen on event: Variable value (far)

      This means that “far” variable will contain the value if sensor detects far or not. So the screen on event will be triggered if sensor detects far.

      • Thanks, I’ll try this. But this is quite big setup for one task. Any chances to have proximity sensor in conditions in future versions of E-Robot?

        • I try explain it why it isn’t an expression. Expressions have to be evaluated. There is no way in Android to detect if proximity detects near or far in synchronous mode. I mean it cannot be determined immediately. How it works, I have to register a listener which will be called later when sensor detects changes.

          In future versions of E-Robot I’m going to improve the app to be able to evaluate asynchronous expressions too.

          • I tried the sample commands to do this, but it seems the battery gets drained very fast. Is there a way of limiting the frequency of sensor reading to something like 5 per second? That shouldn’t impact the battery too much.
            I think some phones (MTK) use techniques to save battery that cause things like sensors, cell site changes and WiFi scans to not work whilst the screen is off.

  52. I’m trying to turn on the screen when a volume button (+/-) is pressed because the power button on my phone doesn’t work well. I tried connecting the event “media button pressed” to the action “Turn screen on” but it is not working. Please help me achieve this.

    • Hi, I can’t find a solution. It seems volume buttons cannot be detected in a background service.

      • I’m using proximity sensor to turn on the screen. But I have to keep the phone awake (partially) always. Otherwise the sensor wouldn’t work. Atleast I can use the phone now without using power button.

  53. Not sure what I am doing wrong, but after creating 2 commands to turn sound up or down based of cell tower id’s, whenever I get switched to a new cell tower I get a alert/notification at the bottom of the screen. It repeats about 10ish times before disappearing. My rule has about 10ish tower id’s. Either i did something wrong or you forgot to uncomment some debug code? Notification has been checked off. Not on.

  54. The notification is the cell tower id string.

    • I can’t find a debug code like that. What is the event you use? Didn’t you add a Toast action to your command?
      Could you send me debug information and screenshot?

  55. Events
    location: “some name”, which is a set of GSM cells that I collected with “Collect data …”. 13 of them.
    use detection: no
    Output variables: location

    Action
    Change volume
    stream: notification, ring, system
    percent: 0

    Settings
    Notification: (not checked) off
    Confirmation: no confirmation

    The message is a “Toast” message. The ones you make with (Toast.MakeText) and is just one text:
    “mmc:242, mnc: 1, cid:3000, lac:30000” or whatever the current cell tower ID is.

    It looks like it has been repeated for about 10 times. As it would if you just did a for loop 10 times with the same message. Seems to happen each time the cell tower id changes.

  56. Sajna nem működik. Már mindent megpróbáltam, de az éjjel-nappal üzemmód kapcsolón kívül semmi más nem megy. A proximity-kapcsoló a beállítás után megy, az első újraindítás után soha többé, még a letöltött példa sem. Minden szükséges jog megadva, admin telepítve stb, megvásárolt kulcs. Szomorú vagyok

  57. I’m trying to execute shell command something like “adb shell getevent”
    How can I get the return value from this command?

    • Use the “Shell command result” expression instead of the “Shell command” action.
      You can put the result to a variable, display, save to a file, …

      • Thank you for the reply! 🙂
        I used the “Display dialog” and the “Shell command result” expression to display the result executing the shell command somthing like “getevent /dev/input/event5” & “cat …/data”, but the dialog shown “java.lang.NullPointerException:-“.
        It seems like the adb shell object hadn’t been called correct, and how to solve this problem?

        • Additionally, I selected the “su” option under the “Shell command result”
          Because if I un-selected the “su” option, the dialog shown “error: device not found” when I executing the shell command.

          • I see now that getevent command never completes, it runs continuously and displays events. I’m afraid you can’t handle it from E-Robot. A new action would needed similar to Read file.

        • If it displays “NullPointerException” please send me related logcat log for the full stack trace.

          • Maybe I have to change the method to capture the sensor data,but the question is how to execute a list of shell command and get the return value?
            The list of shell command shown as following:
            adb shell
            cd sys/class/sensors/apdsXXXX-proximity/device
            cat pdata

  58. I think I solved the problem to use the following method
    Events:Proximity event
    Actions:Display dialog
    titlle: Text value = “result”
    message:Shell command resuld
    command: Text value = “cd sys/class/sensors/apdsXXXX-proximity/device
    cat pdata”
    The dialog will show the “pdata” value when proximity event changed
    And the only question is how can I save the Proximity event’s output variables and the “pdata” value to a specified file such as *.csv or *.txt?

    • I think it is clear to use “cat cd sys/class/sensors/apdsXXXX-proximity/device/pdata” instead two commands.

      There is a “Save file” action. There is an append parameter to append new content to the end of file.
      The content is an expression and you can concatenate parts, for example:

      Concatenate(
      ‘X: ‘,
      Variable(‘x’),
      ‘, Y:’,
      Variable(‘y’),
      ‘, pdata: ‘,
      Shell command result(“cat cd sys/class/sensors/apdsXXXX-proximity/device/pdata”)
      )

      • Thank you very much for the method!
        I succeed to save the file 🙂
        But the new issue is the output variable “timestamp” of the proximity event saved in the file is “1970.01.01 01:17” which is not the actual system time “2015.03.04 09:27”.

        • How do you append timestamp to the expression? With “Time text” expression?

          • I use the output variables of the proximity event as following:

            Events: Proximity event
            This evnet can output variables: value, timestamp

            Action: Display dialog/Save file
            In this action, I use the “Concatenation operator” as following:
            expressions 1 : Variable (‘timestamp’) — which from the “Proximity event”
            expressions 2 : Variable (‘value’) — which from the “Proximity event”
            expressions 3 : Shell command result (‘cat xxxx/pdata’)

            Then I can record these values to the file : timestamp, value, pdata

            And the issue is the “timestamp” shown in the file is “1970.01.01 01:17” which is not the actual system time.

          • I sent you an e-mail. It will be fixed in the next release or you can use the Timestamp expression instead.

  59. Thanks very much for your e-mail!
    Now the timetstamp can be shown/saved correctly.
    But there is a small question: how can I save a “timestamp-value-pdata” string with a new line to file?
    I can not find the method such as “\r\n”

    • If you and a Text constant to the end of Concatenation, then you can press ‘enter’ to enter ‘enter’ 🙂

      • And now, I want to do some complicated actions as following:

        Events1: Proximity event
        This event can output variables: value, timestamp
        Events2:Light event
        This enent can output variables: value, timestamp

        Action: Display dialog/Save file
        In this action, I use the “Concatenation operator” as following:
        expressions 1 : Variable (‘timestamp’) — which from the “Proximity event”
        expressions 2 : Variable (‘value’) — which from the “Proximity event”
        expressions 3 : Shell command result (‘cat xxxx/pdata’)
        expressions 4 : Variable (‘timestamp’) — which from the “Light event”
        expressions 5 : Variable (‘value’) — which from the “Light event”

        How can I use these same name variables? :@

        • Only one of the events can be triggered at a moment.
          So “value” and “timestamp” will be set this only one event, there is no need to differentiate them.

          So in every row in your log file there should be data of only one event:

          ‘Proximity’, Timestamp, Value
          ‘Light’, Timestamp, Value

          The question is now how you know which event is triggered. There is two option:

          1. Create two commands, one for one event
          2. There is an unpublished “_event” variable which contains the name of the triggered event.

  60. Hello, I greatly appreciate your application.
    I use another application for managing tasks and like to know how do I format my usage syntax.
    example:
    I made a command to activate the GPS and mobile data when I get to a certain location (and also to turn it off).
    However, I would like that the command was only used once or twice a day (if fully completed).
    How to do this in the e-robot.
    Thanked.

    • I don’t understand what you mean when you write “only once or twice a day” or “if fully completed”.
      If you arrive somewhere and you want to do something then I guess it should do it every time when you arrive there (not only once or twice).

  61. I said that the command i created only turn on in the location only one time in a day, when you arrive at certain location, not every time you arrive at certain location, because drains a lot of battery.
    Did you understood?
    (sorry for my english)

    • Then you can do the following. When event triggers (enter location) then:

      – create a variable with current date: Set variable, name=’today’, value=Time text(pattern: ‘yyyy.MM.dd’)
      – break command if last date was today: Break command, condition: Equals(Variable value(‘lastDate’), Variable value(‘today’))
      – set lastDate variable to current date: Set variable, name=’lastDate’, value=Variable value(‘today’)
      – Execute your actions

  62. Not in a specific time, but any time on the day.

  63. Is there any event show the “Screen State” something like “Screen ON/OFF” and the output variable is ?

  64. Hi!

    I use waze when I ride my bike but I only hear the indications. I don’t see the phone while I’m riding. I want to receive an audio alert if the phone lost GPS signal to know that I’ll not receive the following indications.
    I tried to do that with E Robot but I couldn’t figure out how to create an event that detects GPS signal lost.
    Can I do that? How?

    Thanks!

    • Hi,

      I can’t find a method to detect gps signal lost. Maybe you can use Location changed event to detect if accuracy is too high or last event received too long ago.

  65. Hi
    I’m testing some sensors these days, and now I want to upload the sensor data saved in TXT to a specific URL when the phone connect to network by Wifi, but I can not find any action in your application.

    So,please tell me how can I upload the TXT files through Wifi?
    Thanks 🙂

  66. Hello Barta.

    How would I create an action which takes a photo using the front camera. There is an option to “use flash” under actions -> camera but I cannot find any other action there.

    • I sent you an email with test version, this function will be available in the next release.

      • Thank you for the test version. I’m able to capture an image using the camera. It would be nice to detect a failed login attempt. Right now, I’m using a 3rd party plugin called “secure settings” to detect a failed login attempt.

  67. Hi
    How can I get the millisecond of the current time from “Timestamp”?

  68. I wasn’t able to read all these comments, but where can I learn more about variables I can use with this great app?

    • Open the Examples screen in E-Robot, there are a few examples where
      variables are used: 2, 3, 4, 9

      During command execution you can evaluate any expression and set its
      value to a variable, for example:

      Set variable, name=screenIsOn, expression=Screen state

      After that you can use this variable in any expression using the
      Variable value expression, for example:

      Display message, message=Concationation(“Screen is on: “, Variable
      value(“screenIsOn”))

  69. Is there a way to use E-robot to manipulate ‘Waze’ [gps app] on a conditional basis? IE: I would love to use E-robot to start app/kill app & set a desination using current logic of ‘Is in location’ and ‘Is day of week’.

    Feel like looking at the waze api for data hooks?
    BTW: Thanks a bunch for making my life easier with E-robot, I use it everyday to automate many ‘geek’ essentials. 😉

    • It can be done easily using “Execute shell command” action. Here you an find Waze API: https://www.waze.com/about/dev

      For example you can search for something via the following url: waze://?q=Paris

      You can execute the following shell command to do this:

      am start -a android.intent.action.VIEW -d waze://?q=Paris

  70. Hi barta, I have another problem that a specific phone’s PDATA can not got when I used the following method: Shell command result(“cat cd sys/class/sensors/apdsXXXX-proximity/device/pdata”)

    But The PDATA can be shown with the value of Proximity-event by a app named “Sensor List”

    Maybe this phone use a different way to save/transmit the PDATA

    So is there any method to show the PDATA with the value of “Proximity-event” in your application? Because the “Sensor List” app can not save the concatenation data to a TXT file.

    Thanks 🙂

  71. I sent a mail to you includ the screenshot of the “sensor list” app
    I wish it can be useful

  72. Hi Thamas,

    Suggestions for future implementations in e-robot:

    *search commands, actions and events
    *autorename actions, error signal (from the app) in case of renaming actions –> because when you rename one action and don’t fix it in the whole command, the command don’t execute

  73. Hi Barta, I had some problems when I executed the command, and I send you mails. Please help me to check it .
    Thanks a lot! 🙂

  74. Szia, szeretnék segítséget kérni GPS beállításhoz.
    Minden működik, beállítom amit szeretnék, de a
    Változó beállítva
    név: igo
    Kimenő változó : name ezt nem tudom változtatni, egyszer betallóztam a
    “package_recevied, package_lost” parancsot a, de többször nem sikerült.

    töröltem, ujraindítottam, stb. üdv: zoli

  75. pesze, köszi

    Tehát a GPS ki-be kapcsolását próbálom megoldani.
    Új parancs:
    IGO BE
    Események
    Változó beállítva
    Név: IGO
    Kimenő változó: name – ezt kellene változtatnom, egyszer sikerült de csak az IGO KI parancsnál, ugye itt kellene betallóznom a ““package_recevied, package_lost” utasítást de nem találom.
    A további is ok,
    Műveletek
    GPS beállítása
    Állapot: be
    Eddig jutottam, de nem tudok továbblépni.

    • Csak félig sikerült megértenem.

      A “Változó beállítva” esemény “name” nevű kimenő változóját maga az esemény állítja be. Ide teszi bele hogy milyen nevű változó változott. Ezt csak akkor van értelme használni ha nem adsz meg név paramétert, tehát nem szűrsz arra hogy IGO. Ha szűrsz változó névre akkor a kimenő “name” paraméter is ugyanaz lesz. Szóval a kimenő változót nem tudod módosítani, az magától állítódik be a megváltozott változó nevére.

      Azt hogy mire gondolsz amikor azt írod hogy:

      ““package_recevied, package_lost” utasítást

      sajnos továbbra sem értem.

  76. Hi Barta,
    Please help me to check the following command which can not record the sensor data:
    Events:
    Orientation event — Output variables: direction,degree,pitch,roll
    Actions:
    While — condition:Application “Beach Buggy Blitz” in focus
    Actions:
    Save file — Timestamp + + + + \n
    file: /storage/emulated/0/graresult.txt
    append: yes
    Wait — 100ms
    There is not any txt file when the application in focus.
    Thanks a lot!

    • Save file — Timestamp +”degree” +”pitch” +”roll” + \n

    • Hi,

      It is wrong. That is why it won’t work. You mustn’t use “while” here. Orientation event variables changes when orientation event triggers. And for better performance too do this way:

      *** Command 1 ***
      Event: Application received focus: “Beach Buggy Blitz”
      Action: Enable Robot command: Command 3

      *** Command 2 ***
      Event: Application lost focus: “Beach Buggy Blitz”
      Action: Disable Robot command: Command 3

      *** Command 3 ***
      Event: Orientation event
      Actions:

      Save file,
      content: Timestamp +”degree” +”pitch” +”roll” + \n
      file: /storage/emulated/0/graresult.txt
      append: yes

      Wait — 100ms

      • And is there any possible to add some new expressions to E-Robot?
        Such as:
        Orientation Sensor value -output: degree\pitch\roll
        Gtavity Sensor value -output: x\y\z
        Proximity Sensor value -output: x\y(pdata)

  77. Hi Barta.
    I used the way you suggested, but there is a long delay to record the data when I close the application.
    So is there any method to achieve the scenario that I can get one set of data when I want to log the data and there is not any redundant data?

  78. How can I create a shortcut. I could not find the related menu in e-robot.

  79. Hi, love your app. I was trying to figure out a way to automate some processes while on the go or moving from location to location and was having some trouble getting the location to update without waking the phone is there some sort of event trigger that I should set up to continually ping the cell towers for location? I have erobot configured to use the network and passive provider but like I said I’m having issues updating my location on the move without activating my phone and checking the notifications bar. Any help is appreciated, thanks again.

  80. Hi, love your app. I was trying to figure out a way to automate some processes while on the go or moving from location to location and was having some trouble getting the location to update without waking the phone is there some sort of event trigger that I should set up to continually ping the cell towers for location? I have erobot configured to use the network and passive provider but like I said I’m having issues updating my location on the move without activating my phone and checking the notifications bar. Any help is appreciated, thanks again.

    • Hi,

      Try to enable “Use cells” at settings. If it is enabled then “Daytime start”, “Daytime stop”, “Daytime polling interval” and “Nighttime polling interval” determines how often the app tries to wake the phone up and request location updates.

    • If you are using a Mediatek-based phone then the RIL does not pass on cell change events whilst screen is off in order to save battery. My workaround is:

      1. Use Gravitybox to set the lowest possible screen brightness to a level where the backlight is off.
      2. Use Velis Auto Brightness to define a profile that sets the screen to the lowest brightness level when the light sensor indicates it is dark (i.e. case is closed).
      3. E-Robot to run a command every few minutes when no wifi connected to turn the screen on for 5 seconds and initiate a location update, then turn the screen off.

      Unfortunately the proximity sensor is rubbish and reacting to sensor events kills the battery (I guess so many are fired per second).

      It’s a bit of a kludge but seems to work.

  81. hi.. what a great ap.… How to start an activity of other app… parameter intent, category, package name, class nam.… what must i fill.… can you give example?

    • Hi,

      It depends on what is the intent filter declared for the required activity. For example if it reacts for an action then you have to enter the action. If it doesn’t have intent filter then you have to enter package name and class name too. It is possible that you have to set data or other parameters.

      • Thanks for your feedback. i have tried to other app example Chat app…but it doesnt work. it has broadcast group activity example: “org.chatapp.ui.BroadcastGroupActivity”. i fill it to intent action or packagename or classname, still doesnt work Or i missed something like app path ‘/’ in parameter ?

  82. I use ERobot to start Poweramp when connected to my car bluetooth and bluetooth headphones. Is there a way to pass a parameter through e-robot to poweramp to specify what playlist and/or equalizer preset to use?
    For instance:
    If connected to car bluetooth, have erobot set poweramp equalizer preset to “flat” and set playlist to “All”.
    If connected to headphone bluetooth, have erobot set poweramp equalizer preset to “rock” and set playlist to “gym”.

    • Hi,

      At first you should now how to start Poweramp to set these parameters. Is it possible at all? I suggest to ask the developer of that app.
      After that I guess it is possible to start Poweramp with “Start activity” action instead of “Start application” where you can set parameters.

  83. Love the e-robot app. But since updating to lollipop, I cannot get action “system>open notification area” to work. Any feedback would be appreciated. Thx.

  84. Hi, first of all I want to say Thanks for this feature rich application. I am new user to this app and not familiar with this. I want to make a command in which when I place my phone on a table ( flat surface) with the screen is upward position , the phone will automatically screen off. And when I pick the phone up, it should screen on automatically. I want to use accelerometer sensor. How should I write the codes. And how can I retrieve x,y,z data of a sensor to know current value. I am waiting your answer and Thanks a lot.

    • Hi,

      At first create a command, and turn its “Notification” off. This is because it will execute very often and wouldn’t be good if it would create a notification every time. After that add a Sensors / Accelerometer event to your command. If you don’t set any parameter then the command will be executed every time a sensor event occurs. This event has the following output variables: x, y, z, length and timestamp. If you would like to check z parameter for example then you can use the Contants / Variable expression, by setting name parameter to z. You can use this expression to do mathematical calculations, comparisons, etc.

  85. Hello Barta, first: thanks for this great big tool !
    Is it possible to make a variable for WhatsApp ?
    I will say the Name with tts who send the message…
    Thanks

  86. Hi Barta,
    nice work. I need your help in this one. When my battery is charged 100%, I want the Ringtone played for 10 seconds and stop automatically, or the ringing to stop if I press the power or home button. I could not figure this out. Thanking you in advance

    • There is no way to detect if you press home button.

      Use the “Play ringtone” action, then “Wait” for 10 seconds then use the “Stop playing” action to stop playing ringtone. I hope it works.

  87. hi, thank you for such a great app. is there an action I can use to automatically backup or restore e-robot commands??

    thanks 🙂

  88. Hello, is there a limit on the Google Calendar? I want to create a command that is seen in the in the subscribed calendar, when the sun rises. However, this calendar is not in the list.

    can you help me?

    Many Thanks

  89. Hi, Thank you for the nice tool, just wanted to know following:
    I have multiple commands,
    commands based on the time
    comm 1) morning travel time – use the phone ring higher
    Comm 2) In office reduce the ring to low volume of 40% and turn on the mobile data.
    Comm 3) In evening travel – Turn the ring on at 100%.

    based on battery charge –
    comm 4)If battery charge remaining is less then 15 then switch off the mobile data, wifi & bluetooth.
    comm 5) If i am charging the battery during that time also all should be off.

    Now how do i prioritize the commands, as when i checked the battery level below 10%, still it was enabling the mobile data on, so is there any way to prioritize the commands?

    • Hi,

      You should configure your commands to work together as expected. If I understand your commands well then only “Comm 2” turns your mobile data on, and “Comm 4” and “Comm 5” turns it off. Your problem was that mobile data turned on when battery was low, so “Comm 2” command needs a modification. Add a condition to “Mobile data” action of “Comm 2” command to turn mobile data on only if battery level is higher than 15%.

  90. hi,

    I try to make a command to handle receiving SMS. Does the field “from” support only digits?
    How can i make an condition of receiving SMS from all my contacts from phone book and some other letter numbers?

    thanks in advance

    • Yes, phone numbers can contain only digits, like 36203453567.
      There is a “Contact name for phone number” expression. If you use it with “from” variable then you can retrieve the contact name the sms received from. If the result is empty then it means that the number isn’t in your address book.

      • Could you help me please to realize the scenario. If i receive SMS from a contact of my phone book E-robot plays a sound. I created a variable “from” and linked it with “Contact name for phone number” expression. Then I added an event “Variable is set” and got nothing

        • You should create a command:

          events:
          – sms received

          actions:
          – set variable, name=from, value=Contact name for phone number (phone number=Variable value(from))
          – play sound, condition: Exists operator(Variable value(name=from))

  91. Hello,

    is there a way to forward an SMS? I know how to send an SMS, but I would like it to appear as though it is coming from the original sender.

    Also, can one delete an SMS or mark it as read?

    Thank you,
    Jiří

    • Unfortunately you can’t do these. I tried to create an action to mark an sms read but it isn’t possible for 3rd party apps.

  92. Llama can autostart in yunos, a Chinese Android clone for smart TV sets and settop boxes,but E-robot cannot, can you do something?

    • Hi,

      I checked Llama and it listens for BOOT_COMPLETED event as E-Robot does. It should be sent by the system after reboot, I don’t know why it isn’t received by E-Robot.
      Can you get logcat logs after start from your device and send it to me?
      I see that Llama listens for USER_PRESENT too, maybe this is the cause why Llama can start and E-Robot not. If you would like to test it, I can add it to E-Robot and send a version to you.

  93. Hi Barta,

    Thank you for the tool.
    I am looking to set the condition – 1) if my mobile is charging & 2) if my battery is less than 15% it should disable all the mobile data, WIFI & Bluetooth connection.

    Considering only “mobile data” command “Comm 2”
    I have his Events and actions, in both i have tried to set the conditions, both menu shows majority of the items are greyed out.

    In Events – i set alarm for every 1 hr, i gave one condition – to start between 8 am to 22 hrs evening, and when i click on “Change Condition” – Logical expression menu – when i click on timestamp expression – everything is greyed out in the battery tab.

    In actions i have “Change mobile data State” – state: on
    Click on set condition- and operator – click on expressions – in Battery tab it shows all grayed menu like Battery percentage,

    Battery plugged. It only enables logical expression – Is battery charging & Is stay awake.

    Please advise.

    • Yes, because a condition must be a logical expression. Battery percent is a number. So you have to use it with a comparator operator, for example:

      Lower than operator(Battery Percent, 15)

  94. Hello

    I need to change system setting (LenovoGesture) in settings menu. I tracked with CatLog record in the system log when I change the setting manually. The record in CatLog look like:

    | pid 769 | LenovoGesture_Config | setSlideUnlock enabled=false |

    How can I turn the setting into “true” with the E-robot? Is it possible? Thanks in advance

  95. Hi! Great app!
    Is it possible to send/copy same command to multiple devices somehow?

    • You can send a command with Share from Backup screen or you can send files manually from /sdcard/Android/data/com.bartat.android.robot.KEEP/commands after you created a backup. You have to save commands there on the other device.

  96. Hello !
    Kis segítség kellene… Alkalmazás indításának (iGO) kapcsolnia kellene az adatforgalmat, illetve a GPS-t
    (energiatakarékosról nagyon pontosra), de nem teszi.
    Root van és pl. az NFC tag érzékelése pik-pakk indítja a Runtastic Bike Pro-t, kapcsolja az adatot és a GPS-t is. Viszont ha alkalmazás indítása a művelet, nem történik semmi. ?????
    (xperia Z2 5.1.1, ha ez fontos)

  97. I have set a command which would initiate a call, however E-Robot opens the dialer with the pre-set number but won’t make the call automatically, it will wait for me to press call button. My operator accepts commands by phone numbers, I am trying to forward calls to my VOIP number in case I forget the phone home by sending an email.
    I got the trigger to work, however I am not sure how to get the call be initiated automagically without my intervention…
    Any help would be very much appreciated.

  98. Hi Barta, this is such a great app. I absolutely love it.
    I’m having difficulty with one thing though.
    When my phone connects to my car’s bluetooth, I’d like it to turn on its Wi-Fi Hotspot. I can’t find out how to do that. Can you help?

  99. Hi Barta,

    The event: Enter location ( home)
    Condition: When time is between 8 am and 6 pm

    Action: Open garage door

    The command was working until I added the condition:

    is Time: 8:00-18:00

    it no longer worked after that!

    Could you please help. Thank you.

    • Hi,

      You know that it should work only when you enter home between 8-18. It won’t open garage door at 8 when you arrive home before 8.

      BTW it should work. What do you see at Debug screen? Do you send me logs or share Debug screen?

  100. Hi Barta, E-Robot is a great app – I love it more than toast and jam! Couple of things though – the location detection doesn’t seem to be that reliable. I have a command called “enter wifi zone” which enables the wifi, and another called “leave wifi zone” which disables it when it detects that all locations are exited. I have tried using both pure GPS and cell sites, but it continually triggers “leave wifi zone”. Any idea why it is doing this?

    The other thing is related. I used to use the competing app Locale, and this appears to have a more accurate location detection algorithm. It is also very powerful app but not as customisable as E-Robot. I have used it to detect locations in absence of fixing the issue above however. I discovered that E-Robot has 3rd party plugins for Locale, but when ever I try to select any of them it FCs immediately. Its the paid-for version and the latest release of Locale. Is this something you are aware of and have a fix for?

    If you can solve my location issue above, then I will uninstall Locale and it would be problem solved!

    • > but it continually triggers “leave wifi zone”. Any idea why it is doing this?

      On the “History” screen you will see “Exit location” entries and it explains why it was detected. I hope it helps. If you use cells then the reason should be a cell tower your phone entered and which isn’t in your location settings. Add this cell as a normal or as an ignored cell.

      > but when ever I try to select any of them it FCs immediately

      Is your phone rooted? Could you send me somehow the log about this error (stack trace) to check?

  101. To work around the problem of updating the list of cells, would it be possible to add a command to add the current cell to a location? That way, if connected to a specific WiFi AP (e.g at home), one can be sure that any cell connected to is at that location.

  102. Hi, i have a “network state changed, connected, using ssid” event, that triggers two times always, is that a bug?
    Can i limit that to trigger only once?

    • Hi,

      It isn’t a bug? It seems that the system sends this event twice with little difference.

      09-22 15:33:46.165: I/E-Robot(25832): Intent received: Intent { act=android.net.wifi.STATE_CHANGE flg=0x4000010 (has extras) }, extras: networkInfo=[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: “MYSSID”, roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false], wifiInfo=SSID: MYSSID, BSSID: 00:1d:7e:a0:67:8c, MAC: 10:68:3f:70:53:df, Supplicant state: COMPLETED, RSSI: -66, Link speed: 12Mbps, Frequency: 2412MHz, Net ID: 1, Metered hint: false, score: 60, linkProperties={InterfaceName: wlan0 LinkAddresses: [172.28.101.139/16,] Routes: [fe80::/64 -> :: wlan0,172.28.0.0/16 -> 0.0.0.0 wlan0,0.0.0.0/0 -> 172.28.0.1 wlan0,] DnsAddresses: [172.28.0.1,] Domains: null MTU: 0 TcpBufferSizes: 524288,1048576,2097152,262144,524288,1048576}

      09-22 15:33:46.170: I/E-Robot(25832): Intent received: Intent { act=android.net.wifi.STATE_CHANGE flg=0x4000010 (has extras) }, extras: networkInfo=[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: “MYSSID”, roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false], wifiInfo=SSID: MYSSID, BSSID: 00:1d:7e:a0:67:8c, MAC: 10:68:3f:70:53:df, Supplicant state: COMPLETED, RSSI: -66, Link speed: 12Mbps, Frequency: 2412MHz, Net ID: 1, Metered hint: false, score: 60, linkProperties={InterfaceName: wlan0 LinkAddresses: [172.28.101.139/16,] Routes: [fe80::/64 -> :: wlan0,172.28.0.0/16 -> 0.0.0.0 wlan0,0.0.0.0/0 -> 172.28.0.1 wlan0,] DnsAddresses: [172.28.0.1,] Domains: null MTU: 0 TcpBufferSizes: 524288,1048576,2097152,262144,524288,1048576}, bssid=00:1d:7e:a0:67:8c

      If it is a problem for you then I suggest to set a lastExecuted variable to current timestamp and deny to execute the command if the next is in 1 second for example.

      • not really a problem, just thinking that could be a battery waste, I’m trying to add a condition to limit directly in the event session, but the events triggers too fast, even before my control variable can be set, if i can’t make it work , I’ll put an IF in the action section.
        One more thing, I can’t make network state changed for WiFi reliable, (as a workaround I’m using supplicant state changed disconnect + WiFi-state changed disabled ), there’s a better way?

        by the way, thanks for this really great program!

  103. Hi Tamas

    I switched from my rooted Galaxy S3 (Android 4.3) to a S6 Edge (Android 5.1.1; not yet rooted). I copied all my Elixir settings to the new phone, but lock toggle is not working and screen toggle is locking the screen!!

    Does the lock toggle needs a rooted phone (although it is not mentioned in the app)?

    thanks for your help
    Martin

  104. I’ve started using Amplify and BetterBatteryStats in order to improve the standby time on my phone. e-robot seems to generate a wakelock called “tag” that holds on to a lock for a long time. 18 acquired locks have run for 13.5 hours.
    Any idea what this is and how to reduce it? I don’t want to have to throttle the wakelock in case it is important for something.

  105. Recent versions of eRobot have a bug where only one location is handled correctly. I have Home and Work with associated cells, and only home gets the Exit and Enter events. This is with several different Kernels, firmwares and OS builds so must be down to eRobot. Does anyone else have the same problem?

  106. exception report
    Version 1.44.3
    Events:New notification posted

    E/AndroidRuntime(24434): FATAL EXCEPTION: main
    E/AndroidRuntime(24434): Process: com.bartat.android.robot, PID: 24434
    E/AndroidRuntime(24434): java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean java.lang.String.contains(java.lang.CharSequence)’ on a null object reference
    E/AndroidRuntime(24434): at com.bartat.android.event.impl.NotificationPostedEvent.eventTriggered(NotificationPostedEvent.java:116)
    E/AndroidRuntime(24434): at com.bartat.android.event.EventManager.triggerEvent(EventManager.java:264)
    E/AndroidRuntime(24434): at com.bartat.android.robot.RobotNotificationListener.onNotificationPosted(RobotNotificationListener.java:89)

  107. Szia.
    Szuper a program, csak gratulálni tudok.
    Lenne egy kérdésem:
    Miként lehetne megoldani azt, hogy amikor a fülhallgató csatlakoztatva van, és közben SMS érkezik, akkor a program beolvassa?

    • Szia,
      Van egy letölthető példa (002) amely bemondja kitől jött az SMS ha ismeri a nevet. Ezt tudod úgy módosítani, hogy nem kell a változó beállítás rész, a TTS műveletben egyszerűen csak a “message” változó értékét kell felolvastatni. Ezután elvileg már csak annyit kell csinálni, hogy az eseményhez hozzáadni az Audió / Fejhallgató csatlakoztatva van kifejezést.

  108. Köszi szépen, sikerült.

  109. Hi,

    Can you explain how to listen for BROADCAST Intents?

    In event, I select “Broadcast received”, but I don’t know how to complete the Parameters… I like to receive “messages” from other apps… Please, provide one example.

    Thank you!

    • Hi,

      You have to know what Intent and its parameters are in Android to use this event. And you have to know exactly what kind of intent is broadcasted by other apps to catch them.

  110. Greetings,
    I have an audio that plays everyday at a particular time. How can I stop it from completing when it is triggered? I use it as an alarm and I usually want to turn it off before it finishes.

  111. Greetings
    How can I get the current time in hour/minute format to pass to the text to voice function?

  112. Greetings,
    Don’t know if it’s a marshmallow prob or not but I can no longer get e-robot to boot on startup.
    Is this a known issue with marshmallow or am I’m doing something wrong? For now I have to manually start e-robot after each boot and also periodically it just disappears and I’m forced to re-start it.

    • It is not a Android 6.0 problem, the app works well on my Android 6 device for long time. Maybe there is an app on your device which disables autostart of E-Robot. BTW at Settings of E-Robot do you have Foreground service enabled?


Leave a comment

No trackbacks yet.