Surfbox Server - DIY Controller Software

Few new updates that do not reflect on the version number of the software:

I noticed that in some cases when the server gets a bad packet it trashes the whole system throwing a <2> error, so I decided to catch this error and put the server back into a waiting state so it can continue. This should help out rectify sudden disconnection errors and make for a more stable platform.

Also I added a clear feature for data logging so it doesn't just endlessly log data to the point where some webapps have a difficult time loading all the data. If the server receives a historical data log every 1000 milliseconds there would be roughly 5 million plus entries along with the rest of the API's data. I will eventually try to figure out how to make something like this work but for now it's a little too much to shovel on-top of the other things going on with SB.
 
New developments are being made with the project that are going to hopefully increase the usability of the software to a broader audience. To put it simply, I've come up with a new way to do things that eliminate more of the daunting computer-intensive tasks to be more friendly.

(1) SurfBox configuration manager is being completely removed from the software, which will run the program more efficiently on all platforms which is a big win because it already runs amazing on a raspberry-pi system.

(2) The server will include a built in web server service to eliminate the need for downloading apache, but users will have the ability to change the web app dashboard, so in the future if someone comes out with a modified dashboard system it can be used as a plug-in.

(3) Configuration of the server will be done directly on the web app this means a nice UI to interact with when adding probes, devices, or changing important server settings like the port number the server runs on.

There is a lot to be done still with this, but I hope to roll out this update within 4 weeks.

Side note to this if anyone is interested: I am going to be using a mixture of HTML, SASS, jQuery, JSON, and Node.js to create this new user friendly system.

As for the current SB3 I have finished pulsed timers finally, adding a dosing pump system shouldn't be that difficult to do considering it's basically a pulsed timer that gets its pulse-width from the amount to be dosed and the speed of the pump being used. I expect to push this update out tomorrow night or sometime this weekend.
 
Absolutely I'm starting to come to the realization that as long as you keep user experience and simplicity in mind it pushes you to learn new things and opens up the door for a never ending innovative process.
 
Absolutely I'm starting to come to the realization that as long as you keep user experience and simplicity in mind it pushes you to learn new things and opens up the door for a never ending innovative process.
yes. Also all innovations does not need to come in one shot.. once you have some user to test and to share thoughts with, you are up for a good journey and the innovations will follow suit. I would also add that dont give too many options.. they become combinatorially complicated for users. Its ok to add details later and allow fine grained combinations, but the first install experience should be as smooth as possible.
I am loving your thread. Java/jvm is a rock solid ecosystem. Keep up the good work. Once you are comfortable with javascript, tryout angular/react/vue like frontend framework. On the css side you can consider bootstrap or material like framework . They will save hundreds of hours of development time, but you have to pay some time to learn them...
godspeed
 
Thank you to everyone who has been following along, and welcome to all of those who have just joined in! The project came to a halt the passed week and a half or so due to a heavy workload bestowed upon me at my college, internship, and job as well as some medical issues being addressed. I have not gotten a nice quiet day to make a new video which is why one has yet to come out but I promise the second part to the video series is coming out here very soon!

Anyway I have finished finals, and got some of my other stuff in order so I have plenty of time to return back to my cave and begin producing some fresh new software! I have sporadically been coding in any little spare time I have had both on the new WebAPI for the configuration manager, and on the Timers objects. I have began coding the last piece to the newest complete update (3.7.4) which will include dosing pumps, I'm not too sure exactly how I want to tackle scheduling but I figured I'll start with a primitive design and work up from there.

ALSO I would love to be able to integrate a webserver into the actual software so when using the software there is no need to download a third party Apache server to host the dashboard. This isn't something I foresee happening anytime soon but definitely a serious thought for the future.

From this point forward I feel as though I've covered mostly all the bases of what someone would want out of a controller (minus lighting) and if anyone has any suggestions at all feel free to voice them!
 
Heres a snapshot of the newest SurfBox being debugged!

Screen Shot 2019-01-23 at 11.46.02 PM.png
 
So I've decided to push out a soft release of the newest version of the server (3.7.4) this release has two great new features that will hopefully help build some amazing new pieces of technology!

(1) Proper timers for simple automation like feeders, basic lighting, BRS 1.1mL/min dosing pumps, and powerheads!

(2) My personal favorite which is a pulsed timer, so instead of setting specific times of the day to turn on and off pulsed timers ask for a millisecond input and will continuously pulse on and off for the duration of the server run time. This means you can get creative and hook up some standard powerheads to a relay box and create your own wave makers!

This new version is available on GitHub only right now because I can not SSH into the server that hosts http://surfboxserver.us/ remotely and I won't be able to get on the network locally until sometime tomorrow.

ALSO The video I promised is finally done, I just need to edit it a bit and toss it up on youtube so that will be available tomorrow as well.
 
Last edited:
As promised episode two of the set-up series! Only the first two minutes are annoyingly in portrait mode and I didn't realize until I was editing the parts together. But all in all I think its fairly well put together!

These are my first videos ever so obviously they aren't amazing but I hope to improve over time!


And here is the source code to go along with the video!

Code:
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

const char* ssid = "XXXXX"; // WIFI USERNAME
const char* password = "XXXXX"; // WIFI PASSWORD
const char* host = "192.168.1.151"; // SERVER IP ADDRESS
const uint16_t port = 4999; // SERVER PORT

ESP8266WiFiMulti WiFiMulti;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempSensor;

void setup() {

  if (!sensors.getAddress(tempSensor, 0));
  sensors.setResolution(tempSensor, 12); // CHANGE 9, 10, 11, or 12 bits

  Serial.begin(115200);

  sensors.begin();

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP(ssid, password);

  while(WiFiMulti.run() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

}

void loop() {

  WiFiClient client;
  if (!client.connect(host, port)) {
    Serial.println("Failed to connect to SBS, trying again in 5 seconds");
    delay(5000);
    return;
  }

  while (true) {
    sensors.requestTemperatures();
    client.println("p 0 newr "+ String(sensors.getTempFByIndex(0)));
    String response = client.readStringUntil('\r');
    Serial.println(response);
    delay(2000);
  }
 
}

NOTE: To keep it consistent all videos will be using version 3.7.0 I'll make some other videos showing how to work with newer versions and whatnot.
 
News on SurfBox project - I feel really good about where the back-end currently stands, I have A LOT on my plate right now with everything so I think I'm going to shift focus over to creating a modular device to be used with the software and maybe even move towards selling controller kits! So for right now I'm shifting focus to the front-end and physical device itself. The next time I make an update for the server will be when I revamp the entire system to release SurfboxServer 4!

I will still be making video #3 in the set-up series guide.

Thank you all who have followed this far and keep on following for more SurfBox project updates!
 
It's been a while since I've given any update on the project and for a good reason! I'm not going to say much but I will let the new UI speak for itself! SurfBox 4 is going to be very user friendly and packed with fun features new features!

Note: the picture of coral in the UI sample here is an avatar that is used with the new customizable tank profile feature.

Screen Shot 2019-02-17 at 11.32.58 PM.png


(with drop menu)
Screen Shot 2019-02-17 at 11.33.11 PM.png


No more confusing terminal/command line interface!
 
Hello everyone, I am posting today to re-assure any of you who were following along with this project that I WILL BE RETURNING SOON with some amazing project updates. Right now coming towards the end of my degree and now just accepting an amazing internship this summer so obviously I need to keep my priorities in order and spend much more time working on other things rather than this hobby side project.

HOWEVER,

I do plan on releasing a wire-frame to some users for feedback before creating the first prototype design at which point I will ask for several people to help me out with some A-B testing etc.

Thank you all who still follow along and have been showing amazing support for this project! All of the older version of Surfbox are available still at http://surfboxserver.us/ along with the written set-up tutorial and of course the few video tutorials I've made.
 

IF YOU HAD TO TAKE A REEFING EXAM, WOULD YOU PASS?

  • Yes!

    Votes: 32 45.7%
  • Not yet, but I have one that I want to buy in mind!

    Votes: 9 12.9%
  • No.

    Votes: 26 37.1%
  • Other (please explain).

    Votes: 3 4.3%

New Posts

Back
Top