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.
Ugh, this is an issue where for some reason getMessage() is returning a localized string (when it shouldn't), and the device/resource busy shouldn't cause an issue (it means the GPIO is already exported).

I've added some changes that should prevent this.
 
Removed path, reboot, git clone, now no error displayed but it doesn't work as before:

pid set on GPIO21, manual 100% 10s, led doesn't go on
set a pump on GPIO24, switch wire, SSR goes ON
pump with led on GPIO22 works ok.


Switched led and ssr, same result, ssr work as a pump, led doesn't go ON with PID control set to manual (multimeter check 0v on GPIO21)

complete log

blitz@blitzberry ~/SB_Elsinore_Server $ sudo ./launch.sh
Starting Elsinore as root
dic 14, 2014 1:02:34 AM com.sb.elsinore.LaunchControl main
INFORMAZIONI: Running Brewery Controller.
dic 14, 2014 1:02:36 AM com.sb.elsinore.LaunchControl readConfig
INFORMAZIONI: CFG IS NULL
dic 14, 2014 1:02:36 AM com.sb.elsinore.LaunchControl enableRecorder
INFORMAZIONI: Enabling the recorder
No definitions file found, assuming direct mapping
No definitions file found, assuming direct mapping
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl parseXMLSections
INFORMAZIONI: Checking section general
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl parseXMLSections
INFORMAZIONI: Checking section pumps
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl parseXMLSections
INFORMAZIONI: Checking section device
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl parseDevice
INFORMAZIONI: Parsing XML Device: Pentola_EBIAB
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl parseDevice
INFORMAZIONI: Not enough volume data points, 0 found
dic 14, 2014 1:02:46 AM com.sb.elsinore.Temp <init>
INFORMAZIONI: Adding28-00044b1c9cff
dic 14, 2014 1:02:46 AM com.sb.elsinore.Temp <init>
INFORMAZIONI: 28-00044b1c9cff added.
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl startDevice
INFORMAZIONI: Adding Pentola_EBIAB GPIO is (GPIO21)
dic 14, 2014 1:02:46 AM com.sb.elsinore.Temp setScale
AVVERTENZA: Cut off is: -999
dic 14, 2014 1:02:46 AM com.sb.elsinore.Temp setScale
AVVERTENZA: Cut off is now: -999
dic 14, 2014 1:02:46 AM com.sb.elsinore.LaunchControl startDevice
INFORMAZIONI: Adding PID with GPIO: GPIO21
dic 14, 2014 1:02:46 AM com.sb.elsinore.PID detectGPIO
INFORMAZIONI: Matches: 3
dic 14, 2014 1:02:46 AM com.sb.elsinore.PID detectGPIO
INFORMAZIONI: Direct GPIO Pinout detected. OS: null
dic 14, 2014 1:02:46 AM com.sb.elsinore.PID run
INFORMAZIONI: Running Pentola_EBIAB PID.
No definitions file found, assuming direct mapping
Invalid options when setting up Hysteria: Min value is less than the max value
dic 14, 2014 1:02:56 AM com.sb.elsinore.PID updateValues
INFORMAZIONI: 0: 0: 0
dic 14, 2014 1:02:56 AM com.sb.elsinore.PID updateValues
INFORMAZIONI: 0: 0: 0
dic 14, 2014 1:02:56 AM com.sb.elsinore.LaunchControl savePID
INFORMAZIONI: Saving the information for Pentola_EBIAB
dic 14, 2014 1:02:56 AM com.sb.elsinore.LaunchControl savePID
INFORMAZIONI: Using base node device with ID Pentola_EBIAB
No definitions file found, assuming direct mapping
dic 14, 2014 1:02:56 AM com.sb.elsinore.OutputControl setDuty
INFORMAZIONI: IN: 0 OUT: 0
dic 14, 2014 1:02:56 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:56 AM com.sb.elsinore.PID run
INFORMAZIONI: off: Pentola_EBIAB status: 70.5866 duty cycle: 0
dic 14, 2014 1:02:56 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:57 AM com.sb.elsinore.OutputControl setDuty
INFORMAZIONI: IN: 0 OUT: 0
dic 14, 2014 1:02:57 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:57 AM com.sb.elsinore.PID run
INFORMAZIONI: off: Pentola_EBIAB status: 70.5866 duty cycle: 0
dic 14, 2014 1:02:58 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:58 AM com.sb.elsinore.OutputControl setDuty
INFORMAZIONI: IN: 0 OUT: 0
dic 14, 2014 1:02:58 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:58 AM com.sb.elsinore.PID run
INFORMAZIONI: off: Pentola_EBIAB status: 70.5866 duty cycle: 0
dic 14, 2014 1:02:59 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:02:59 AM com.sb.elsinore.OutputControl setDuty
INFORMAZIONI: IN: 0 OUT: 0
dic 14, 2014 1:02:59 AM com.sb.elsinore.PID run
INFORMAZIONI: off: Pentola_EBIAB status: 70.5866 duty cycle: 0
dic 14, 2014 1:02:59 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:03:00 AM com.sb.elsinore.OutputControl setDuty
INFORMAZIONI: IN: 0 OUT: 0
dic 14, 2014 1:03:00 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
dic 14, 2014 1:03:00 AM com.sb.elsinore.PID run
INFORMAZIONI: off: Pentola_EBIAB status: 70.5866 duty cycle: 0
dic 14, 2014 1:03:00 AM com.sb.elsinore.OutputControl run
INFORMAZIONI: Fduty: 0
No definitions file found, assuming direct mapping
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl parseXMLSections
INFORMAZIONI: Checking section device
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl parseDevice
INFORMAZIONI: Parsing XML Device: System
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl parseDevice
INFORMAZIONI: Not enough volume data points, 0 found
dic 14, 2014 1:03:01 AM com.sb.elsinore.Temp <init>
INFORMAZIONI: Adding
dic 14, 2014 1:03:01 AM com.sb.elsinore.Temp <init>
INFORMAZIONI: added.
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl startDevice
INFORMAZIONI: Adding System GPIO is (null)
dic 14, 2014 1:03:01 AM com.sb.elsinore.Temp setScale
AVVERTENZA: Cut off is: -999
dic 14, 2014 1:03:01 AM com.sb.elsinore.Temp setScale
AVVERTENZA: Cut off is now: -999
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl <init>
INFORMAZIONI: Starting Status Recorder
dic 14, 2014 1:03:01 AM com.sb.elsinore.LaunchControl <init>
INFORMAZIONI: CONFIG READ COMPLETED***********
dic 14, 2014 1:03:01 AM com.sb.elsinore.BrewServer <init>
INFORMAZIONI: Launching on port 8080
dic 14, 2014 1:03:01 AM com.sb.elsinore.BrewServer <init>
INFORMAZIONI: Enabled logging at level:WARNING
Warning: NLS unused message: CHANGE_SCALE in: com.sb.elsinore.nls.messages
Warning: NLS unused message: DUTY in: com.sb.elsinore.nls.messages
Warning: NLS unused message: CALIBRATION in: com.sb.elsinore.nls.messages
Warning: NLS unused message: HIDE in: com.sb.elsinore.nls.messages
Warning: NLS unused message: SHOW in: com.sb.elsinore.nls.messages
Warning: NLS unused message: INVERT_COOL in: com.sb.elsinore.nls.messages
Warning: NLS unused message: INVERT_HEAT in: com.sb.elsinore.nls.messages
Warning: NLS unused message: INVERT_GPIO in: com.sb.elsinore.nls.messages
Warning: NLS unused message: UPDATE_GRAVITY in: com.sb.elsinore.nls.messages


something related with local language? I can do a check with a fresh english install of raspbian! Thanks again for your work!


EDIT: when i do CTRL ^C i get this

^Cjava.io.FileNotFoundException: /sys/class/gpio/gpio22/value (File o directory non esistente)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at java.io.FileReader.<init>(FileReader.java:58)
at jGPIO.GPIO.readFile(GPIO.java:185)
at jGPIO.GPIO.readValue(GPIO.java:206)
at jGPIO.OutPin.getValue(OutPin.java:48)
at com.sb.elsinore.Pump.getStatus(Pump.java:71)
at com.sb.elsinore.LaunchControl.getJSONStatus(LaunchControl.java:734)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:1391)
GPIO Doesn't exist, may have already closed
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:744)
java.io.FileNotFoundException: /sys/class/gpio/gpio24/value (File o directory non esistente)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:131)
at java.io.FileInputStream.<init>(FileInputStream.java:87)
at java.io.FileReader.<init>(FileReader.java:58)
at jGPIO.GPIO.readFile(GPIO.java:185)
at jGPIO.GPIO.readValue(GPIO.java:206)
at jGPIO.OutPin.getValue(OutPin.java:48)
at com.sb.elsinore.Pump.getStatus(Pump.java:71)
at com.sb.elsinore.LaunchControl.getJSONStatus(LaunchControl.java:734)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:1391)
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:744)
 
It shouldn't be related to language anymore. Can you provide the output of the getstatus page when you have the output on manual mode?
 
Sorry don't know if i undestand correctly....when i SET the GPIO port on PID, or set MANUAL (100%/10s) and hit "send command" nothing is written on the output of Elsinore, the log attached in previus post include a GPIO port setup and a manual PID set ON and OFF

It only trap error on CTRL ^C
 
Yes, it won't show anything in the logs unless you enable debug logging.

But when you're turned on the manual mode goto the getstatus page, it'll be <host>:8080/getstatus and provide the output.

I'm not able to reproduce the output not turning on here.

Also, when it is enabled and should be on, run:

cat /sys/class/gpio/gpio21/direction
cat /sys/class/gpio/gpio21/value

Or change the number to whichever one you have set up on the PID.
 
Doug

I incorrectly shut down Elsinore without using CTRL C and now when i log back in i have everything set as before but i can't get any of my ssr's to fire. The display shows the duty cycle or PID parameters i set just no ssr function.

Should i re pull the code again or is there a way to correct this.

I also had issues with the manual duty cycle. No matter what % i set if the duty cycle was anything other than 1 sec i wouldn't get any ssr function except 0% or 100% depending on the duty cycle.

Thanks again

Chris
 
Doug

I incorrectly shut down Elsinore without using CTRL C and now when i log back in i have everything set as before but i can't get any of my ssr's to fire. The display shows the duty cycle or PID parameters i set just no ssr function.

Should i re pull the code again or is there a way to correct this.

I also had issues with the manual duty cycle. No matter what % i set if the duty cycle was anything other than 1 sec i wouldn't get any ssr function except 0% or 100% depending on the duty cycle.

Thanks again

Chris

Running a pull should help with the SSRs not firing. I'm not sure what you mean by the issues with the manual duty cycle.
 
Doug

The only way i get any PWM on the manual mode is with a duty cycle time of 1 second. All set duty cycle %'s work fine.

If i make the cycle time more than 1 second, no matter the duty cycle % i will either get full on or full off no pulsing.

Thanks
 
OK manual mode was just outright broken if it wasn't set to 100%. I'd never noticed on my system because I always have it set to 100% at this time of year (I use an auxiliary 120V element since it's cold here).

Just pushed a lot of changes that fixes this.
 
Added scripts to allow Elsinore to be started as a service, see the main README.md for more information
 
how are you interfacing the mpx5010d for vol? Im using BBB and didn't know if i can use an open gpio or if i needed something to go between them.
 
how are you interfacing the mpx5010d for vol? Im using BBB and didn't know if i can use an open gpio or if i needed something to go between them.

You'll need to use a DS2450 (or voltage divider) since the MPX5010s are 5V and the BBB analogue is 1.7V
 
A friend of mine is designing some capes/overlay boards for RPi & BBB that'll break out known connections for one wire, GPIO, and analogue inputs so people can get setup faster/easier. I'll update when I have designs/boards.
 
Total cosmetic question/request:

I've got Elsinore setup (and working) with 2 PIDs and a third temp sensor. Currently is shows up in the UI as PID 1, PID 2, and Temp 1. How/can I rearrange these so it is PID 1, Temp 1, PID 2?
 
Total cosmetic question/request:

I've got Elsinore setup (and working) with 2 PIDs and a third temp sensor. Currently is shows up in the UI as PID 1, PID 2, and Temp 1. How/can I rearrange these so it is PID 1, Temp 1, PID 2?

Planned, but it may be a while.
 
A friend of mine is designing some capes/overlay boards for RPi & BBB that'll break out known connections for one wire, GPIO, and analogue inputs so people can get setup faster/easier. I'll update when I have designs/boards.

That's great. Any idea of the timing?
 
Just uploaded a refactor of the webserver to use annotations.

I've tested stuff locally, but let me know if there's any issues.
 
Still working on the pH meter stuff, I've just refactored a lot of the UI so that the volume editing is clearer, and it happens in a popover now instead of expanding out stuff. And it's better too since it gets the addresses of the One Wire DS2450s on your system (this is part of an upgrade I'm doing in preparation for the boards that my friend is getting made).

I've also changed the format of buttons that DON'T affect GPIOs or Timers.

pH meter code should be up tomorrow some time. I'll also be working on new documentation for the Volume Sensing when I get a chance now that the UI is updated.
 
Finished the refactoring, it appeared to work previously but I don't think it was very reliable. Lots of changes are in for the pH Sensors. I just need to finish the rest of the UI code off.
 

great write up.. think i will be changing over the BBB from my RPI. ordered the ds2450(15-21 business days this is going to be a long wait!). any recomendations on where to get the MPX5010D from? i am finding some differences from place to place on them. also the line that will go into your HLT/KEttel i am guessing is where the air escapes from and is why you need to keep the air pressure constant.



thanks again

Are you using MPX5010DP version?
 
Hello. Great thread, it has taken me quite a bit to read through it.

I'm in the planning stages of my electric brewery, Kal's website has been an inspiration, but I'm a computer geek that happens to love making beer, so I started looking at writing my own controller and I stumbled here...

I have 4 DS18b20 hooked up to my Raspberry Pi and I began evaluating the wonder package, Elsinore. Unfortunately, it seems with every update, I take a step back, which isn't a big deal as I'm just toying around. As it stands now, the UI comes up and I see all my probes, but I can't edit anything:

WARNING: Failed to find URI: /editdevice
java.lang.IllegalAccessException: Class com.sb.elsinore.BrewServer can not access a member of class com.sb.elsinore.UrlEndpoints with modifiers "private"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:109)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253)
at java.lang.reflect.Method.invoke(Method.java:599)
at com.sb.elsinore.BrewServer.serve(BrewServer.java:308)
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)
 
Weird I got a notification that geneda posted an issue with IllegalAccessException. I should have had this fixed yesterday, so if it's still happening please let me know.
 
Weird I got a notification that geneda posted an issue with IllegalAccessException. I should have had this fixed yesterday, so if it's still happening please let me know.

Looks like my posts need to get mod approval because I'm new, I think.
My post finally did make it up, it's on page 47.

Anyway, I delete the SB_Elsinore_Server folder and did a fresh git clone. When I try and edit I get:

WARNING: Couldn't access URL: /editdevice
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.editVessel(UrlEndpoints.java:663)
... 9 more
Dec 23, 2014 10:28:57 AM com.sb.elsinore.BrewServer serve
WARNING: Failed to find URI: /editdevice
Dec 23, 2014 10:29:06 AM com.sb.elsinore.StatusRecorder run
WARNING: Status Recorder shutting down



EDIT: I did a chmod 777 -R * on the directory, and the error went away. So, there's a permission issue somewhere...
 
OK, so back to some issue I was seeing prior to a few updates.

The LOCK button never appears for me, there is an issue with that toggle. I actually see it for a second when I click edit, but then it switches back to edit, but the controller is in lock mode.

Creating a PID, I have to enter the heat gpio twice. That is, I double click the header, add the heat GPIO, hit update, it doesn't change to a PID. Do the same thing again, hit update, it changes.

Also, I have never been able to get the timer to work. I create a timer, but when I click start, nothing happens (in either edit or lock mode) And the log is unaffected.

Also, where did the configuration file go? I wanted to see if I could change the logging level?

Strange no one else is reporting these issues, maybe it is because I have 4 temp probes (DS18b20) hooked up? Just trying to think what may be different in my test setup.

Can't wait to get this cooking, looks really nice.



EDIT: When I assigned a name to all my probes, I got a lock button!
 
I've pushed some more changes that should help. But the only way you'll get a permissions issue is if something is modifying your filesystem at runtime since you should be running as root. There will be error messages displayed very early in the log indicating this.

I've pushed some more changes that may help, but I'm not able to run Elsinore until Sunday at the earliest.
 
I've pushed some more changes that should help. But the only way you'll get a permissions issue is if something is modifying your filesystem at runtime since you should be running as root. There will be error messages displayed very early in the log indicating this.

I've pushed some more changes that may help, but I'm not able to run Elsinore until Sunday at the earliest.

I removed the SB_Elsinore folder and did another git clone
This time no access errors, but all the items in post 476 are still valid

Have a good holiday!
 
The master branch has now been reverted to pre-refactoring changes until I can get it all tested when I get home.

For now, the pH Sensor code and refactoring are in a separate branch
 
I'm getting the following when trying to run 'sudo update-rc.d elsinore defaults' after updating the 'elsinore' file to get Elsinore to run as a service. I removed the comments on the lines as stated on the github README. Not sure what the issue is.

If I try to run './launch.sh' now, all it says is 'Starting Elsinore as root'. It stops there, and I see nothing else.

Any ideas?

root@beaglebone:/etc/init.d# 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.
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.
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.
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.
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.
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.
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.
insserv: missing `Required-Start:' entry: please add even if empty.
insserv: missing `Required-Stop:' entry: please add even if empty.
 

Latest posts

Back
Top