Surfbox Server - DIY Controller Software

Doesn't seem too bad at all!

Screen Shot 2019-01-06 at 1.48.00 AM.png


It's understandable why some applications may suck down memory when using Java and I'm sure that there are many reasons why. I have a hunch that when people try to tackle OOP structured software projects they do things like create redundant objects which do not get handled by the garbage collector which can be detrimental on a small system because objects can get quite large. Also I think there is a key advantage with surfbox because most of the things the program needs to store in memory goes through the light-weight JSON API.
 
Doesn't seem too bad at all!

Screen Shot 2019-01-06 at 1.48.00 AM.png


It's understandable why some applications may suck down memory when using Java and I'm sure that there are many reasons why. I have a hunch that when people try to tackle OOP structured software projects they do things like create redundant objects which do not get handled by the garbage collector which can be detrimental on a small system because objects can get quite large. Also I think there is a key advantage with surfbox because most of the things the program needs to store in memory goes through the light-weight JSON API.
Thats pretty nice :-) . Website looks cool. I love the live updates :-)
 
Just a tad on the warm side, but I prefer to run my tanks at 80-81!
 
3.7.0 is out!

As promised the new features include a new settings object in the API that holds the port and version numbers.
You can edit your servers port by entering config mode and using the two new commands:

Code:
Change port: port [NEW PORT NUMBER]
Get current port: getport

The second big update is the servers new ability to check the API for changes in device status! This means you now have the ability to switch devices on and off manually via whatever application is using the API. In order for the server to check for changes it needs to be invoked by the device you are using by sending a new command to the server.

Code:
Check for device status changes: upd
 
To concerned citizens of R2R who may peak at my live aquarium dashboard I realize my temperature say 185, it's wrong and probably just due to a loose wire (Everything is still on a proto-board).
 
Alright it's time for another update (3.7.1); I have officially finished the first revision of Timers! (I will be implementing a pulse feature as well for custom AC powerhead control!)

For those of you who may want to replicate what I'm doing on a pi be careful, Timers use java multithreading which means each timer you make will have an impact on your CPU/MEM usage (not much but it adds up for sure).

To add a timer just boot up the server in config mode and use the new commands!

Code:
t add - Adds new blank timer
t update [ADDRESS] [KEY] [VALUE] - Updates value for timer at specific key (ontime, offtime, deviceaddr)
t remove [ADDRESS] - Removes selected timer

The timer is very simple, and actually doesn't control outlets themselves like most other controllers but instead updates the API to set specific devices to the "on" or "off" state. To set an on or off time the format is simple "HH.mm.ss" (24 hour clock) and in order to tell the timer which device to be turning on or off just set the "deviceaddr" value for your timer to whatever the address is for your device!

NOTE: The physical device using SurfboxServer must use the new command "upd" to check for changes to the API in order to use this new feature. It would be smart to check in-between every operation in your device in order to get as precise time accuracy as possible.

If you're confused about this new update thats fine, it's not officially out yet, in fact I have to spend some time revising github to reflect this update etc. And starting this afternoon I will be working on the FIRST VIDEO of the SurfBox video series!
 
So for anyone who is following, interested, or actually using the software; SurfBox 4.0.0 is probably going to be in the makes here soon, should I continue to develop a shell-based program? or should I switch to a GUI?

GUI Concept:

Screen Shot 2019-01-08 at 11.12.11 AM.png




 
I know I've been posting a lot recently but I think it's because I've hit a bit of a block and am just kind of working on 10 things at once (which happens to programmers on the regular). It's not a big deal but unfortunately can be really discouraging for new programmers. So a word of advice from me to anyone who is interested in software in the future; if you hit this block, put the computer down and go do something else until you have that moment of clarity that puts everything you're working towards back into perspective!

As for the revised direction that SurfBox is taking:

(1) 3.7.1 is definitely going to be released tonight or tomorrow, it features basic timers and should be able to control some cool things like BRS 1.1mL/min dosers (Very precisely because it has control down to the second) and maybe even make your own box that changes your tanks current throughout the day.

(2) I've ordered a new pH probe and temperature sensor so hopefully by Sunday I should be streaming the correct data from my tank again!

For all the nerds who are interested in whats to come after this release I will be using the basic timer object and moving it up a level to become a super class (TimedObj) and have multiple fun new objects extend it. This includes Pulsed Timed Powerheads, Dosing Pumps, Pulsed Timers (For feed modes etc) and maybe more!

Thank you all again to those who have been supporting me in this project, it's really not one of the easiest things to do but I love doing it and I hope someone finds what I'm doing here useful for their own endeavors !
 
No drivers required I have an Arduino feather board with WiFi hooked up to all my devices and probes the board sends packets to the server that tell it what to do like store new readings or ask if devices should be on or off, no need for drivers, just a simple arduino library/pre-written sketch.
 
So for anyone who is following, interested, or actually using the software; SurfBox 4.0.0 is probably going to be in the makes here soon, should I continue to develop a shell-based program? or should I switch to a GUI?

GUI Concept:

Screen Shot 2019-01-08 at 11.12.11 AM.png






Like a Swing UI? I'd probably not do that - just go web only :)
 
Well here it begins folks, the epic youtube series of me creating a controller using the SurfBox software! I think I'm going to do some other reef related videos on this channel as well.

It's not the most epic video but it definitely covers all the bases of the first few steps in depth.

 
Update on the 60 gallon living room reef that is streaming live data: We are back online! Though I have unfortunately still not fixed the temperature probe I managed to get the pH sensor going which happens to have a temperature sensor built in (I just need to figure out how to use it). I'll be making episode 2 on how to build your own device on Tuesday night so stay tuned for that.

The Software has been getting worked on diligently in-between all these new developments and I've finished the basic structure for the timer feature. I hope to get a dosing pump system finished by the end of the weekend along with a pulse function (since they both are fairly similar).

LASTLY, I would like to add-on my first reef video with the SurfBox will probably be something to do with Kalkwasser/CO2 Scrubbing based off of pH values that I'll collect for myself through the data stream over a few days. A tiny New York apartment with two humans and two dogs has a big impact on my reef's pH levels (You may notice over-time with my live tank on surfboxserver.us)
 
Update: 3.7.3 is out!

A special new logger feature has been added to the software so now you can request a dump of all historical data from your probes directly into your API !

I'll personally be using this to monitor my pH over the next several days.

Also a primitive Timer support is added, I've still yet to finish dosing pumps or pulsed timers but I hope to have a break through with it soon!

Add new timers in your config manager using the new selector 't'
 
Snapshot of the historical data viewer in action ! I set my device to record the passed 200 pH values before resetting. This picture is especially interesting because it shows the curve up of pH during sunset!

E2E95224-E686-44D3-82FE-AEDFF7AA0CB1.png
 

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