NEW StrangeBrew Elsinore Thread

Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum

Help Support Homebrew Talk - Beer, Wine, Mead, & Cider Brewing Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
I don't want to derail from this thread, but I have been trying to get Elsinore to launch on boot for two days, and I can't seem to figure it out. I'm using a Beaglebone Black with the stock Debian distro.

I tried setting up the elsinore service in /etc/init.d, but it does not seem to work and I get the following:

root@beaglebone:~# update-rc.d elsinore defaults
update-rc.d: using dependency based boot sequencing
insserv: Script elsinore is broken: incomplete LSB comment.
insserv: missing `Required-Start:' entry: please add even if empty.
insserv: missing `Required-Stop:' entry: please add even if empty.
insserv: Script elsinore is broken: incomplete LSB comment.

I also tried setting up a cron job to run launch.sh on reboot:
@reboot sudo /SB_Elsinore_Server/extras/w1_setup.sh
@reboot sudo /SB_Elsinore_Server/launch.sh

None of this has worked. Any ideas from someone running this on Debian?

Thanks
 
I've updated the documentation to state that the script only works on Ubuntu, I don't have a debian install to test. If someone writes one that works, then I'll add it.
 
I've updated the documentation to state that the script only works on Ubuntu, I don't have a debian install to test. If someone writes one that works, then I'll add it.


I guess I figured someone would likely have figured this out, given that Debian is what comes on a BBB. Maybe I'll put Ubuntu on my BBB so I can just use the script you're using.
 
I guess I figured someone would likely have figured this out, given that Debian is what comes on a BBB. Maybe I'll put Ubuntu on my BBB so I can just use the script you're using.

When I received my BBB it had Angstrom on it, which I'd never used before. Ubuntu was something I was more familiar with, and since it's based on Debian I would've thought there'd be enough similarities.

You're more than welcome to research how to make a Debian init.d script yourself. It's probably very similar to the current one
 
I may end trying to figure it out, I just have zero Linux experience so it seems a little daunting. Every single error message I see is another Google search to try and figure out what's going on. If I figure it out, I'll be sure to post it here.
 
Does the mash sensor control the HLT element during mash with Strangebrew elsinore? And then you switch to the HLT sensor for sparge?
 
I'm not sure what you mean, you set up a PID with a temperature probe and an SSR, you call them whatever you want.
 
I'm not sure what you mean, you set up a PID with a temperature probe and an SSR, you call them whatever you want.

I guess i was wondering how you link a sensor and PID to a heating element, maybe you want the HLT element using the mash outlet sensor during mash but using the sensor in the HLT while heating and during sparge. Can you switch what sensor the element is using?
 
You can set multiple PIDs to use one GPIO. But if you try to set them to do things to the same pin it'll result in undefined behaviour.
 
To get Elsinore to launch on my BBB with Debian, I created the following simple init.d script and placed it in /etc/init.d/:



#!/bin/sh

### BEGIN INIT INFO
# Provides: startelsinore
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Set environment variables
### END INIT INFO

export PATH=$PATH:/usr/java/ejre1.7.0_45/bin/
export JAVA_HOME=/usr/java/ejre1.7.0_45/

case "$1" in
start)
/SB_Elsinore_Server/launch.sh
;;
stop)
;;
restart)
;;
esac
exit 0

I then had to run the following command:

sudo update-rc.d startelsinore defaults​

Then run the following command to start the script:

sudo service startelsinore start​

Comparing the init.d script I made compared to Doug's, mine is extremely simple and doesn't do anything on stop or restarts. I do not know if this will be an issue in the future, but it seems to run fine this way.
 
Does anyone have a DTS file I could copy to assign the pins that will be used to send the signal to my two SSRs?

As I understand it, the 'w1.dts' file that Doug has provided in the /extras/ folder enables pin 8.11. I have my temp sensors using this pin, which is working fine.

I am ready to connect my BBB to the SSRs, and I am trying to figure out how to enable two pins on the BBB which can be used to turn on the elements through the SSRs.

I figure this dts file can be the same as anyone else who has already assigned some pins for this use, so if I can use someone's file, I'd appreciate it.

(Hoping I haven't misunderstood what needs to be done for this step)
 
To get Elsinore to launch on my BBB with Debian, I created the following simple init.d script and placed it in /etc/init.d/:



#!/bin/sh

### BEGIN INIT INFO
# Provides: startelsinore
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Set environment variables
### END INIT INFO

export PATH=$PATH:/usr/java/ejre1.7.0_45/bin/
export JAVA_HOME=/usr/java/ejre1.7.0_45/

case "$1" in
start)
/SB_Elsinore_Server/launch.sh
;;
stop)
;;
restart)
;;
esac
exit 0

I then had to run the following command:

sudo update-rc.d startelsinore defaults​

Then run the following command to start the script:

sudo service startelsinore start​

Comparing the init.d script I made compared to Doug's, mine is extremely simple and doesn't do anything on stop or restarts. I do not know if this will be an issue in the future, but it seems to run fine this way.

I won't be committing this since it doesn't allow stopping the service. If you add that in, I'll add it to the repository
 
Does anyone have a DTS file I could copy to assign the pins that will be used to send the signal to my two SSRs?

As I understand it, the 'w1.dts' file that Doug has provided in the /extras/ folder enables pin 8.11. I have my temp sensors using this pin, which is working fine.

I am ready to connect my BBB to the SSRs, and I am trying to figure out how to enable two pins on the BBB which can be used to turn on the elements through the SSRs.

I figure this dts file can be the same as anyone else who has already assigned some pins for this use, so if I can use someone's file, I'd appreciate it.

(Hoping I haven't misunderstood what needs to be done for this step)

This is [url="http://dougedey.github.io/2014/03/22/BeagleBoneBlack-Setup/']Documented[/url] in the setup page for BBB, see "Creating a custom overlay"
 
This is [url="http://dougedey.github.io/2014/03/22/BeagleBoneBlack-Setup/']Documented[/url] in the setup page for BBB, see "Creating a custom overlay"


I read through that and it isn't clear to me if I need to create one DTS file listing all the pins I want to use (input from temp sensors and output to SSRs), compile it, and place it in the /lib/firmware/ folder, or if I can create a separate DTS file for each pin I'd like to use, compile each of them, and then just assign the pins in the GUI.
 
I read through that and it isn't clear to me if I need to create one DTS file listing all the pins I want to use (input from temp sensors and output to SSRs), compile it, and place it in the /lib/firmware/ folder, or if I can create a separate DTS file for each pin I'd like to use, compile each of them, and then just assign the pins in the GUI.

You can do either method, but it only creates one jgpio-00A0.dtbo file, so if you did one pin per file you'd need to rename them and export multiple files.

Creating one jgpio-00A0.dtbo file will make it easier for you since you only need to copy and export one file (Elsinore is set up to only export one file).

I have attempted to clarify this in the documentation.

For simplicity, I have separated the GPIO and OneWire (temperature probe) exports, since I reuse the w1.dts file in other projects. bbb_setup.sh exports both the w1 and jgpio files.

You may find it easier to look at bbb_setup.sh to understand what it does.
 
Doug - thanks for the replies. Sorry for asking so many questions! I was hoping someone other than you would be able to answer some of my questions to give you a break.

Looking through your documentation in the jGPIO repository, and using the command you supplied, I am able to list the free GPIO pins. When I try to run the command to create the DTO using the command supplied (java -cp Elsinore.jar -Dgpio_definition=extras/beaglebone.json jGPIO.DTOTest GPIO0_7 GPIO0_8 GPIO1_12), I encounter an error saying that jGPIO.DTOTest could not be found or loaded.

What am I missing? Do I need to create jGPIO.DTOTest or is it in the github repository somewhere already?

Again, thanks for the help so far!
 
Are you running it from the directory that contains Elsinore.jar? Since you can run the command to list the free GPIO, the same base class is used to create the DTO file, so I would be amazed if one works and the other doesn't.
 
Are you running it from the directory that contains Elsinore.jar? Since you can run the command to list the free GPIO, the same base class is used to create the DTO file, so I would be amazed if one works and the other doesn't.

I was running both from the jGPIO directory... Ugh, should have figured that out. Just got me because the first worked, but the second didn't.

Just ran it, and it worked. Thanks!
 
just wanted to see if anyone has seen this error before when trying to add volumes.

Code:
Jan 03, 2015 2:51:42 PM com.sb.elsinore.BrewServer serve
INFO: URL : /getstatus method: GET
Jan 03, 2015 2:51:44 PM com.sb.elsinore.BrewServer serve
INFO: URL : /getstatus method: GET
Jan 03, 2015 2:51:45 PM com.sb.elsinore.BrewServer serve
INFO: URL : /controller method: GET
Jan 03, 2015 2:51:45 PM com.sb.elsinore.BrewServer serve
INFO: URL : /addvolpoint method: POST
Jan 03, 2015 2:51:45 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: Key: NanoHttpd.QUERY_STRING
Jan 03, 2015 2:51:45 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: Entry: 28-00000556b6d9=%7B%22name%22%3A%2228-00000556b6d9%22%2C%22onewire_address%22%3A%2220.021811000000%22%2C%22onewire_offset%22%3A%22A%22%2C%22volume%22%3A%220%22%2C%22units%22%3A%22US+Gallons%22%7D
Jan 03, 2015 2:51:46 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: couldn't read 28-00000556b6d9=%7B%22name%22%3A%2228-00000556b6d9%22%2C%22onewire_address%22%3A%2220.021811000000%22%2C%22onewire_offset%22%3A%22A%22%2C%22volume%22%3A%220%22%2C%22units%22%3A%22US+Gallons%22%7D as a JSON Value null
Jan 03, 2015 2:51:46 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: Key: 28-00000556b6d9
Jan 03, 2015 2:51:46 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: Entry: {"name":"28-00000556b6d9","onewire_address":"20.021811000000","onewire_offset":"A","volume":"0","units":"US Gallons"}
Jan 03, 2015 2:51:46 PM com.sb.elsinore.UrlEndpoints ParseParams
INFO: Found valid data for 28-00000556b6d9
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
WARNING: Couldn't access URL: /addvolpoint
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.sb.elsinore.BrewServer.serve(BrewServer.java:304)
	at com.sb.elsinore.NanoHTTPD.serve(NanoHTTPD.java:315)
	at com.sb.elsinore.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:920)
	at com.sb.elsinore.NanoHTTPD$1$1.run(NanoHTTPD.java:192)
	at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NullPointerException
	at com.sb.elsinore.UrlEndpoints.addVolumePoint(UrlEndpoints.java:1203)
	... 9 more
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
WARNING: Failed to find URI: /addvolpoint
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: Unidentified URL: /addvolpoint
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: Invalid URI: /addvolpoint
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: URL : /getstatus method: GET
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: URL : /templates/static/css/c3.css method: GET
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: URL : /templates/static/elsinore.css method: GET
Jan 03, 2015 2:51:46 PM com.sb.elsinore.BrewServer serve
INFO: URL : /templates/static/js/d3.js method: GET
 
just wanted to see if anyone has seen this error before when trying to add volumes.

This is caused by my change to prevent people putting the ADC pin in. I'll have it fixed tonight (maybe, there's a lot of hockey on)

Edit: Fixed
 
Hi Doug,
Thanks for developing such a wonderful rpi controller.
Thanks to you and cank's setup help, it was pretty straight forward, I have my "system" on a breadboard at the moment hardware looks like it works, the SSR flash or stay on as they should and the DS18B20's work.

I have a request or I am totally missing something with the timers, should they not be set to a time of events, like mash steps, boil, hop additions with an alarm buzzer or audio output?

Not sure if I have a bug in my rpi setup but I have to reboot the pi and re-add the mash steps, there doesn't seam to be a reset, or mine is just not working after it's gone to manual mode and off send command.

Are you going to implement a recipe upload for the whole process, from software like beer smiths xml file?

Also is there a guide for setting up the OWFS on the rpi?

Thanks once again.

Al.
 
I have a request or I am totally missing something with the timers, should they not be set to a time of events, like mash steps, boil, hop additions with an alarm buzzer or audio output?
No, they are for you to use as a straightforward stop watch style timer.

Not sure if I have a bug in my rpi setup but I have to reboot the pi and re-add the mash steps, there doesn't seam to be a reset, or mine is just not working after it's gone to manual mode and off send command.

You can delete mash steps, but the whole thing is being rewritten.

Are you going to implement a recipe upload for the whole process, from software like beer smiths xml file?

This is not an automated brewing system. I will add some support for BeerXML when I have the time.

Also is there a guide for setting up the OWFS on the rpi?

I've updated the One Wire documentation: http://dougedey.github.io/2014/11/12/Setting_Up_One_Wire/

To show how to setup OWFS, it's the same for RPi and BBB
 
Just wanted to say this is some awesome stuff and scrapping my original concept and using this. Order my rpi and cannot wait to load this up!
 
Is there any plans for adding templates for layouts? I am not a java programmer but been looking through the code and may be something I can do. The current layout is great but would like a nautical theme for us :)
 
Is there any plans for adding templates for layouts? I am not a java programmer but been looking through the code and may be something I can do. The current layout is great but would like a nautical theme for us :)

No plans at the moment, but you'll want to look into the elsinore.css file (and other css files)
 
I've now merged all the work I've been doing on changing mash steps to triggers, I'll write up a document on it tomorrow.

Basically, triggers are a "Wait until this is done, then move to the next one". Triggers can apply to temperature probes and PIDs as well.

I've added three types of triggers, Temperature (if it's on a PID, it'll set the set point), Timer (wait for a set period of time), and Pump (turn a pump on or off, pumps can be used as buzzers, so I'll be renaming Pumps in the future to "General Outputs" [or something]).

I'll be able to add more triggers, and other people can add triggers easily, just by creating a class the implements the TriggerInterface (elsinore will pick them up automatically if they're in the com.sb.elsinore.triggers package).

I've also updated the Layout (to prepare for custom ordering), made it easier to identify sensors that're hidden but setup when in edit mode (The title of the probe will have "[HIDDEN]" at the end of it), and various other bug fixes.

pH Sensors can now be deleted as well.

Some of the next work will be to add in the ability to edit triggers rather than delete, create, and re-order.
 
Quick question.

Havn't started yet but want to add the PH module.

Does anyone know if youi can use any PH meter with any probe with a BNC connector.

Id like to use it to use a high temp probe to read the mash PH from start to finish.

Thanks

Chris
 
Looking forward to testing out the triggers. Am I correct in assuming that by using triggers we can almost do some pseudo-automation of the whole process? Can triggers span to different elements...i.e. after the HERMS mash is pumped to the boil kettle the triggers for the boil PID and timer start?
To take it further, well it support back-to-back batches and fire multiple elements and timers simultaneously?
Very cool stuff Doug!

-Josh
 
You can now edit triggers (and I've been fixing other annoying bugs too).

Looking forward to testing out the triggers. Am I correct in assuming that by using triggers we can almost do some pseudo-automation of the whole process? Can triggers span to different elements...i.e. after the HERMS mash is pumped to the boil kettle the triggers for the boil PID and timer start?
To take it further, well it support back-to-back batches and fire multiple elements and timers simultaneously?
Very cool stuff Doug!

-Josh

I'm working on a "Trigger Trigger" next, so you can trigger a trigger profile and disable a trigger profile (both the own, and other triggers)
 
Excellent. Is it possible (in the future) to have triggers triggered, reset or paused by a gpio? i.e. a physical pause button, or other input that can interact with triggers.
 
Excellent. Is it possible (in the future) to have triggers triggered, reset or paused by a gpio? i.e. a physical pause button, or other input that can interact with triggers.

The problem with the direct GPIO access is that Elsinore would need to poll it frequently, since the Java JIT compiler isn't good (read: almost non-existent) on ARM, it'll create much more overhead
 
I've just pushed (and documented briefly) a Profile Trigger, this will give you a list of the current Devices in the system, and allow you to set whether to activate or deactivate the trigger.
 
The triggers are awesome, we are direct fire with an electric RIMS so need the pumps on when the RIMS are on. Looks like triggers will solve that for us.

Keep up the good work!
 
Soooo.....


I just got my shiney new BBB, updated the the latest Debian image, kernel updated, got the wifi sorted, etc..

cloned things fine.. But when I ./launch.sh I get

Starting Elsinore as root
sudo: invalid option -- 'j'


Tried from another user just in case, but same result..

Warning... I know less about Linux than I know about women, I've just played with it a little here and there... I rely on my google-fu most of the time to make things happen. I've got a copy of Qt and plan on spending some google time attempting to be creative for future plans, but as of yet I've got a lot of learning to do..
 

Latest posts

Back
Top