Sneak peek: Pushcut Automation Server [Experimental]

I made a quick demo video to show you what I was doing as a little side-mission during the holidays:

You can basically turn a dedicated iOS device into a “server” - using Shortcuts and HomeKit as “server actions” - and trigger them through secure web requests from anywhere.

While I understand that this will not be all too interesting for the masses, I hope that a few automation enthusiasts will be really happy with this. The only hurdle left is App Review… we’ll see how it goes :wink:

Thoughts?

7 Likes

As I said in /r/pushcut …

That for me is a problem: It doesn’t solve my “35,000 feet” problem…

… Ideally my Raspberry Pi could do a HTTP GET to Pushcut without going via a network other than a direct Bluetooth connection.

(I was referring to the perhaps necessary design of going via an internet service.)

I hear you, and I might add that as a side-door as well in the future. My thinking is that for the vast majority of people the “tunnel” through a web API is the preferred option.

Because (and this might be a biased software developer opinion): Configuring networks is boring ; )

Well, if my iPad showed up as BigPad.local on a network it doesn’t matter how it got there. Mostly that would be automatic*. The Bluetooth case is the rarity - though perhaps it shouldn’t be.

  • Which pleases me as I’m not a Networking SysProg either. :slight_smile:

It just occurred to me that the notion of a “dedicated server” needs yet more clarification…

… I “gave” my old iPhone 6S+ to work. It’s currently running iOS 13 so easily meets the software criterion for the Automation Server.

It’s rare that I get a phone call but I do get Slack and email notifications quite a few times a day. I could switch those off if need be…

… What would happen to the Automation Server if there was an interruption of some sort/

  • An inbound phone call?
  • A notification?

Maybe this iPhone is “good enough”.

I do not think notifications would be a problem, a call would most likely cause the server to “pause” processing requests.

To be honest, I do not know if iOS returns to the last app in the foreground after a call - I will need to test. But in general I would suggest - if you are planning on using the Automation Server “seriously” - turn off phone calls, notifications, auto-updates … anything, really ; )

1 Like

Pondering a use case: My underused work phone (described above) has my work calendar on it. My personal phone doesn’t.

I’m wondering if I could - via Automation Server - have my work phone serve today’s meetings to my personal phone.

Overall point: The Automation Server device should have information the served device doesn’t. Or have capabilities the served device hasn’t got.

Can you tell me how a Shortcut should return a value so that the Automation Server serves it?

(I have a Shortcut that when called from Drafts returns data in what Drafts sees as [[shortcut_result]] but when run via Automation Server nothing is returned to the calling machine.)

it should be returning whatever the shortcut has as return value. it will need to be a text or text-convertible (like a dictionary).

what is the data type that is causing trouble?

I’ll experiment today with a “Hello World” shortcut. The one I was experimenting with generates Markdown of my calendar entries for today and returns it to Drafts.

“Hello World” shortcut would be MUCH simpler, of course, so would test the plumbing nicely.

So I played with it - and it must be my original shortcut that wasn’t returning a value. “Hello World” shortcut contained just a “Text” action and that was returned to the browser on the other phone.

Three observations and a question:

Observations

  1. The Automation Server seems to list all the invocations of the shortcut, whether they were done through Pushcut or not. I wonder if you can filter it down.
  2. I don’t see how you refresh the list of shortcuts in the Automation Server dialog.
  3. It would be nice to have Shortcuts donated actions to start and stop Automation Server.

Question:

  1. What does the Input parameter on the URL do? I really would like to pass eg the date into the shortcut that reads my work calendar.

@sliemeobn I’m probably going to write this all up - in a blog post. But if you want me to contribute to the docs I’m happy to do that.

(I’m also going to experiment with invoking Automation Server from a Raspberry Pi as that might be the missing piece of my two-way communication between iOS and Pi project.)

So I can answer my own question: It’s the input to the shortcut.

I tested it with a parameter value with spaces in, embedding the shortcut input in the output text. (Spaces have, of course, to be encoded as %20.)

I could confect a parameter list using eg JSON.

Edit: JSON works very nicely.

The next thing for me to test is from the Pi. That would support the case where iOS has something the Pi doesn’t or can do something the Pi can’t (easily do).

I’m still struggling with really good use cases.

Edit:

Curl on Raspberry Pi invocation turned out to be something like this:

curl -G -i 'https://api.pushcut.io/<my-secret->/execute' --data-urlencode 'shortcut=Hello World' --data-urlencode 'input={"a":"123 456,789"}'

Lynx browser and wget also worked.

I should probably write all this up in a blog post.

1 Like