Not sure if anyone else has gone down this road, but I’ve been tinkering with a mobile app for my BrewPi. I’ve only had my BrewPi up and running for a couple weeks, so I suspect I’m only scratching the surface of what it’s capable of. If anyone is interested in helping test, let me know.
I also read in another topic that @mdma was working on an API, which would be super helpful.
Just android version?
Did you do anything special to access the data externally?
@kead Both iOS and Android.
@rlightner I did. As some other people have done, I enabled port forwarding on my router. Additionally, since I don’t have a static IP, I setup Dynamic DNS via noip.com. And finally, I’ve written a pseudo API to deal with CORS. Right now the API is really just a pass through, calling the same scripts the web UI calls, but I’ll likely extend them to try and optimize which data is being returned to the app for a given request. I’ve also enabled Basic Authentication on the BrewPi, which the app allows you to use.
Did you lock down the port at all or is the brewpi UI open to the public. I’m hesitant to do that.
The Basic Authentication I enabled is required everywhere. To protect the Basic Auth credentials it should be running on SSL, but I haven’t taken it that far yet.
Is how you did that shareable somewhere?
I take it this will translate closely to the rasp-pi implementation?
Those exact steps worked fine for me.
Thanks… Next time I’ll google
I would love this! If you need a beta tester who can’t actually program, please let me know!
For the next generation, we will use React for the front end. With React Native, we should be able to make native mobile apps for BrewPi.
Hey @Elco - I have way more experience with Angular than React, so I’ve been using Ionic for the version I’m working on, but React Native would work fine as well. Do you have a timeline for when you’re rolling out the next generation of the front end? Are you planning on releasing an API at the same time?
@jhenry - I’ll let you know, thanks!
We will release an API at the same time, if not earlier.
We’re redesigning the entire system. with a new communication and persistence model for the embedded controller, and a new python script to connect to it via WiFi or USB.
Django will connect via that connector script and provide an API.
We have not even started on the UI yet, API and lower layers first. So I really do not dare to give a timeline yet, to many unknows still.
Based on the fact the entire system is going to be redesigned, I think I’ll come to a good stopping point on the development for this iteration. I don’t want to waste too much time building something for the current system, knowing it’s going to be replaced.
@nickhough, I am keen to give this a bit of a test. I am a software tester by trade, at the moment focusing on Access Control on iOS and Android. As for security side, I hadn’t bothered locking down my Pi, I have just configured a VPN on my router.
@bensheridan I haven’t configured a VPN before and only used one once in the past. If I understand how it works correctly, once your device is connected to the VPN, it’s as if your device is on your home network, right? If so, you could just use the BrewPi’s static IP in the Host / IP setting in the app. I’ll give it a try and confirm everything works as expected.
Regarding the status of the app, I think I’m just about at a stopping point until the API is released. I scaled back how ambitious I was, since I don’t want to waste time, knowing the system is going to be rewritten. And if @Elco and crew are planning on building an app, there’s really no point for me to duplicate their efforts. Once I get everything documented, I’ll reach out to the few folks who were interested in testing.
Thus far, you can:
- View your chamber status, similar to the LCD on the web UI
- Select the mode (Beer Profile, Beer Constant, Fridge Constant, Off or Test)
- Select the Beer Profile (only existing profiles) or set the temperature for Beer or Fridge Constant Modes
- Adjust most of the settings available on the Advanced Settings tab in the web UI
- Display the current beer temperature as the app badge (although I’m considering removing this, as it only updates when you open the app anyway)
That’s correct, rather than using your external IP address in the app config, you would just use your internal address 192.168.1.8 for example. As a developer you can also include in app VPN’s so only the App traffic goes out through the VPN and the rest of your traffic doesn’t. That only really becomes a problem if someone needs VPN access to their work or something. Having to switch between VPN’s is a pain, I just usually leave mine on.
I am looking forward to an app, the web interface is great but does become a little hard to use on a small phone.
If you have it up on test flight I would be keen to have a look.
I’m using a hybrid app framework, so I can use one code base for both iOS and Android, so I’m not sure if I’ve got access to the in app VPN. That being said, I don’t think it should be an issue.
I’ll let you know when I’ve got it available for testing.