Graphical Interface recomendations

I am looking for some recommendations for building a graphical interface for my beer fermentation system.

the system comprises a photon in each tank that reports both temperature and specific gravity from the fermentor. I need to be able to graph these values over time, view current values, and push temperature set points and other data to each photon. It needs to be displayable on a computer preferably linux both on and off premises.

I am currently using ubidots but it is far too inflexible .

I have considered labview and python

any ideas or suggestions would be helpful

thanks steve

Right off the top of my head you could look at Freeboard (free 30-day trial), and Thingsboard. I know Freeboard has the option of downloading their open source code and running it locally. Not sure about Thingsboard.

Funny thing is, I’m working on something similar :smile: (although I’m working on an electric brew kettle now, fermentation is next in line)

Anyway, I think grafana running on a RPi using influxdb would work just fine since I’m using that as well.
Example.

Perhaps BrewPi might also help you with insights.

Also, how are you measuring specific gravity? You got me curious.

1 Like

I’m working on switching my weather reporting station from Freeboard to Thingsboard. I like Thingsboard because they have an extensive selection of graphs and other controls. I just checked and you can download their software onto your system. They also use MQTT with the PubSub client that I’m using right now. I’m only testing with temp and humidity updates at the moment but later today I’m going to start switching over the whole system.

You can check out my weather station reporting from Freeboard at the following link:

Freeboard weather

1 Like

I am measuring SG using a photon powered tilt or ispindle that I made. Ispindle has some good instructions but they use a wemos and communicated with bluetooth. so I took their concept made one using a photon. works really well. I had been trying to make a usable SG sensor for several years. tried differential pressure, and hanging a weight in the wort and measuring the change in weight both were not workable … then I saw an advert for tilt and it was “why didn’t I think of that”.

Fermentation Temperature Control is accomplished via coils in the fermenter and a glycol chiller made out of an old dehumidifier. Temps are measured and a pump and valves are turned on or off off set points for each fermenter …

I would be happy to share what I have done.

I love brewpi 's interface.

I might also add I am not a computer guy or engineer or even young( I learned to multiply on a slide rule). so there is a steep learning curve for me. One of the struggles is the time I spend finding out a platform is not usable. So I thank you all for your suggestions and guidance.

s

1 Like

I quickly looked at thingsboard a while ago and couldn’t see what kind of controls they have. I got the ideathat it was only graphs. Do they have data input controls as well?

s

@murmsk, do you mean like input boxes, radio buttons, etc?

yes

As far as I’ve seen, it’s primarily a data graphing/dashboard tool. I haven’t seen any form of data input controls yet. If I run across any, I’ll update this thread.

FWIW, here is a screen capture of my weather console. I just finished converting to Thingsboard a little while ago.

1 Like

I just wanted to pile on here for everyone’s sake. I work in Industrial Automation Monitoring and Controls, and I highly recommend Ignition by Inductive Automation.
This is professional software used in tens of thousands of Industrial plants around the world.
List price is about $10k, and there is an “Edge” system which is considerably less. ($1,500?).

Additionally, they have an unlimited 2 Hour demo mode where EVERYTHING is functional for 2 hours, and you can reset the demo as many times as you want. I mention this, because if you aren’t needing to get alarm callouts (forgive the industry jargon), you can just reset your demo and look at your graphical interface any time you want to remotely view your system. I guess between resets, you would miss out on collecting historical data, so that could pose an issue depending on your use case.

At any rate, I wanted to share my experience of a very (relatively) affordable professional system.

Here is their link:
https://inductiveautomation.com/pricing/ignition

thanks for the recommendation I will look into it.

s

Please, can you share an example of your code for photon to publish variables to Thingboard ?. I need help with this.

Regards

@reflexpnt, here is a simple example using an Si7021 to upload temp/humidity. In addition to telemetry data I also experimented with attributes.

//
//  Last update:  04/15/18
//
#include <PubSubClient.h>
#include <Adafruit_Si7021.h>

#define TOKEN           "your Thingsboard token"
#define LED             7
#define MQTTPORT        1883

char thingsboardServer[] = "demo.thingsboard.io";
char attributes[] = "{\"firmware_version\":\"0.7.0\",\"software_version\":\"1.0\"}";
char mqttPub[128];
TCPClient pubsub;
PubSubClient psClient((Client &) pubsub);
Adafruit_Si7021 sensor = Adafruit_Si7021();

void setup(void) 
{
    Serial.begin(115200);
    pinMode(LED, OUTPUT);
    sensor.begin();
    psClient.setServer(thingsboardServer, MQTTPORT);
    serverConnect();
    snprintf(mqttPub, sizeof(mqttPub), "%s", attributes);
    Serial.println(mqttPub);
    psClient.publish("v1/devices/me/attributes", mqttPub);
}

void loop(void) 
{
    if (!psClient.connected())
        serverConnect();
    sendTemp();
    delay(2000);
    psClient.loop();
}

void sendTemp(void)
{
    float t = sensor.readTemperature() * 1.8 + 32.0;  
    float h = sensor.readHumidity();
    
    // Prepare JSON payload
    snprintf(mqttPub, sizeof(mqttPub), "{\"temperature\":%.2f,\"humidity\":%.1f}", t, h);
    Serial.println(mqttPub);
    
    // Send payload
    psClient.publish("v1/devices/me/telemetry", mqttPub);               // Topic, payload
    blinkLED();
}

void serverConnect(void)
{
    while (!psClient.connected())
    {
        Serial.println("serverConnect(): Attempting to connect to Thingsboard server");
        if (psClient.connect("Photon", TOKEN, NULL))                    // ClientID, User, PW
        {
            Serial.println("serverConnect(): Connected");
            return;
        }
        else
            Serial.println("serverConnect(): Connection failed, retry in 3 seconds");
        delay(3000);
    }
}
    
void blinkLED(void)
{
    digitalWrite(LED,HIGH);
    delay(5);
    digitalWrite(LED,LOW);
    delay(5);
}
1 Like

syrinxtech,
Many thanks for the quick response and the application example.
I apologize for my poor English.
I commented that I am working on a prototype for reading CANbus (with support for J1939 protocol). That’s why the need to show data through a thingboard. (previously I had already tried freeboard).

Again, thank you.
regards
Fernando

My only problem with Thingsboard is that for the last 2-3 weekends, the live demo version has been totally unavailable. This past weekend when you tried to hit the website all I got was a screen full of error messages. Now that Freeboard has finally started charging (although you do get 30 days free), I’m still looking for a comprehensive, available solution. I have installed Freeboard on a RPi and will soon be installing Thingsboard on an RPi. To me, Thingsboard has a much nicer solution in regards to the widgets as opposed to Freeboard.