Git Product home page Git Product logo

picoreflow's People

Contributors

2bitoperations avatar andyrawson avatar benkrasnow avatar chron0 avatar davelloper avatar igor-rast avatar maestr0 avatar matty0005 avatar openelectron avatar paulmorrishill avatar phcreery avatar sbman avatar yggi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

picoreflow's Issues

Status Websocket not available

When I open the website in a browser I get:

ERROR 1:
Status Websocket not available

in the Browser and on the console:
root@egpi:~/picoReflow# ./picoreflowd.py
2014-10-31 17:13:16,241 INFO picoreflowd: Starting picoreflowd
2014-10-31 17:13:16,294 INFO picoreflowd: listening on 0.0.0.0:8080
192.168.1.43 - - [2014-10-31 17:13:19] "GET /picoreflow/index.html HTTP/1.1" 200 8025 0.102052
192.168.1.43 - - [2014-10-31 17:13:19] "GET /picoreflow/assets/js/jquery.event.drag-2.2.js HTTP/1.1" 200 12989 0.022811
192.168.1.43 - - [2014-10-31 17:13:19] "GET /picoreflow/assets/js/jquery.flot.resize.js HTTP/1.1" 200 3297 0.020197
192.168.1.43 - - [2014-10-31 17:13:19] "GET /picoreflow/assets/js/jquery.flot.draggable.js HTTP/1.1" 200 5439 0.010698
192.168.1.43 - - [2014-10-31 17:13:19] "GET /picoreflow/assets/js/jquery.bootstrap-growl.min.js HTTP/1.1" 200 1304 0.009663
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/js/bootstrap.min.js HTTP/1.1" 200 27911 0.069067
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/bootstrap-modal.css HTTP/1.1" 200 4893 0.011440
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/picoreflow.css HTTP/1.1" 200 13976 0.011733
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/js/picoreflow.js HTTP/1.1" 200 16916 0.148512
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/js/select2.min.js HTTP/1.1" 200 60906 0.193286
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/js/jquery-1.10.2.min.js HTTP/1.1" 200 93270 0.428988
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/bootstrap-theme.min.css HTTP/1.1" 200 17855 0.172529
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/select2.css HTTP/1.1" 200 21128 0.146285
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/js/jquery.flot.js HTTP/1.1" 200 121876 0.512764
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/bootstrap.min.css HTTP/1.1" 200 103047 0.363543
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/images/panel_bg.png HTTP/1.1" 200 678 0.015136
192.168.1.43 - - [2014-10-31 17:13:20] "GET /picoreflow/assets/css/select2.png HTTP/1.1" 200 761 0.009735
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 508, in handle_one_response
self.run_application()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 63, in run_application
self.run_websocket()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 46, in run_websocket
del self.server.clients[self.client_address]
AttributeError: 'WSGIServer' object has no attribute 'clients'
{'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en,de;q=0.7,en-us;q=0.3',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive, Upgrade',
'HTTP_DNT': '1',
'HTTP_HOST': '192.168.1.7:8080',
'HTTP_ORIGIN': 'http://192.168.1.7:8080',
'HTTP_PRAGMA': 'no-cache',
'HTTP_SEC_WEBSOCKET_KEY': 'vNjEqJT5+5kYs9mg8abCxA==',
'HTTP_SEC_WEBSOCKET_VERSION': '13',
'HTTP_UPGRADE': 'websocket',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
'PATH_INFO': '/status',
'QUERY_STRING': '',
'REMOTE_ADDR': '192.168.1.43',
'REMOTE_PORT': '50751',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'egpi',
'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'gevent/1.0 Python/2.7',
'wsgi.errors': <open file '', mode 'w' at 0xb6cad0d0>,
'wsgi.input': <gevent.pywsgi.Input object at 0xb4c72dd0>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0),
'wsgi.websocket': <geventwebsocket.websocket.WebSocket object at 0xb4c6d960>,
'wsgi.websocket_version': '13'} failed with AttributeError

192.168.1.43 - - [2014-10-31 17:13:20] "GET /status HTTP/1.1" 101 129 0.064676
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 508, in handle_one_response
self.run_application()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 63, in run_application
self.run_websocket()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 46, in run_websocket
del self.server.clients[self.client_address]
AttributeError: 'WSGIServer' object has no attribute 'clients'
{'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en,de;q=0.7,en-us;q=0.3',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive, Upgrade',
'HTTP_DNT': '1',
'HTTP_HOST': '192.168.1.7:8080',
'HTTP_ORIGIN': 'http://192.168.1.7:8080',
'HTTP_PRAGMA': 'no-cache',
'HTTP_SEC_WEBSOCKET_KEY': 'XJPF19+An4B5WaWQJQjedw==',
'HTTP_SEC_WEBSOCKET_VERSION': '13',
'HTTP_UPGRADE': 'websocket',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
'PATH_INFO': '/control',
'QUERY_STRING': '',
'REMOTE_ADDR': '192.168.1.43',
'REMOTE_PORT': '50752',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'egpi',
'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'gevent/1.0 Python/2.7',
'wsgi.errors': <open file '', mode 'w' at 0xb6cad0d0>,
'wsgi.input': <gevent.pywsgi.Input object at 0xb4c82270>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0),
'wsgi.websocket': <geventwebsocket.websocket.WebSocket object at 0xb4c7b688>,
'wsgi.websocket_version': '13'} failed with AttributeError

192.168.1.43 - - [2014-10-31 17:13:20] "GET /control HTTP/1.1" 101 129 0.060345
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gevent/pywsgi.py", line 508, in handle_one_response
self.run_application()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 63, in run_application
self.run_websocket()
File "/usr/local/lib/python2.7/dist-packages/geventwebsocket/handler.py", line 46, in run_websocket
del self.server.clients[self.client_address]
AttributeError: 'WSGIServer' object has no attribute 'clients'
{'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8',
'HTTP_ACCEPT_ENCODING': 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE': 'en,de;q=0.7,en-us;q=0.3',
'HTTP_CACHE_CONTROL': 'no-cache',
'HTTP_CONNECTION': 'keep-alive, Upgrade',
'HTTP_DNT': '1',
'HTTP_HOST': '192.168.1.7:8080',
'HTTP_ORIGIN': 'http://192.168.1.7:8080',
'HTTP_PRAGMA': 'no-cache',
'HTTP_SEC_WEBSOCKET_KEY': 'SsDXm0YTrr/Mgo5EDgfnNQ==',
'HTTP_SEC_WEBSOCKET_VERSION': '13',
'HTTP_UPGRADE': 'websocket',
'HTTP_USER_AGENT': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0',
'PATH_INFO': '/storage',
'QUERY_STRING': '',
'REMOTE_ADDR': '192.168.1.43',
'REMOTE_PORT': '50753',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_NAME': 'egpi',
'SERVER_PORT': '8080',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'gevent/1.0 Python/2.7',
'wsgi.errors': <open file '', mode 'w' at 0xb6cad0d0>,
'wsgi.input': <gevent.pywsgi.Input object at 0xb4c82650>,
'wsgi.multiprocess': False,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0),
'wsgi.websocket': <geventwebsocket.websocket.WebSocket object at 0xb4c7b7a0>,
'wsgi.websocket_version': '13'} failed with AttributeError

192.168.1.43 - - [2014-10-31 17:13:20] "GET /storage HTTP/1.1" 101 129 0.059130

Calibrate the controller temperature measurements.

Dear Guru,
Please help.
I am using a controller with max31855 driver and K-type thermocouple. Could you please advise on which file I should open and which value should be changed or added in that file in order to calibrate the controller temperature measurements? I get an difference of up to +50°C at 800°C.
Thank you.

error raised by MAX31855.py after a few seconds of temperature increase

The oven crashes after a few seconds of temperature increase (securely, it stops the heat) since in function checkErrors there is a binary comparison between a 32 bit value and what could be interpreted by python as either 8,16 or 32 bit value. Namely:

anyErrors = (data_32 & 0x10000) != 0 # Fault bit, D16 noConnection = (data_32 & 1) != 0 # OC bit, D0 shortToGround = (data_32 & 2) != 0 # SCG bit, D1 shortToVCC = (data_32 & 4) != 0 # SCV bit, D2

changing the above code to

anyErrors = (data_32 & 0x10000) != 0 # Fault bit, D16 noConnection = (data_32 & 0x00000001) != 0 # OC bit, D0 shortToGround = (data_32 & 0x00000002) != 0 # SCG bit, D1 shortToVCC = (data_32 & 0x00000004) != 0 # SCV bit, D2

fixes the issue.
should I make a pull request?

Simulation mode stops after 5sec in run

I tested the simulaton mode without connected sensors.
Simulation stops after 5 sec in the run and it is reporing "run completeted" .
Has this somtinge to do with the emergency stop function that was added ?
Simulaton temp is showing and moving.
Runnig on RPI2

Empty Profile list

Problem: Empty Profile list by starting
after edit new profile the list is filed
when using Internet Explorer 11
Solution: use Chrome all problems wiht showing profiles list are solved

Wrong Measurement with Max31855

Hello,

I have a problem with PicoReflow. The Temperature measured by PicoReflow & Max31855 is not correct. First i thought that i have a problem with the K-Type Sensor, but then I tested them at work with a Thermocouple calibrator! I tested the Sensors, my thermocouple gauge and the Max31855 (with Picoreflow).

I measured a temperature with picoreflow and it shows 100°C than i measured the same temperature with my calibrated Gauge and it shows 130°C !?

img_20150620_102456

I tested picoReflow with the calibrator and when the calibrator says 225°C, picoreflow shows about 180°C.

I tested this with 3 diffent Max31855 on different boards, everytime the same Problem. I think its a Software Problem.

Can anyone test his Pico and confirm this Problem ? I dont now what to do further ...

Greets,
Meister

Fresh Install Failed - failed with error code 1 in None

Just did a fresh install of raspian, installed the dependancies and it failed with:

(Command "/usr/bin/python -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-Gl8GoM --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --extra-index-url https://www.piwheels.org/simple -- "setuptools >= 40.8.0" wheel "Cython >= 3.0a6" "cffi >= 1.12.3 ; platform_python_implementation == 'CPython'" "greenlet >= 0.4.17, < 2.0 ; platform_python_implementation == 'CPython'"" failed with error code 1 in None)

Any ideas ??

not reading Temp

for some reason it isnt reading my sensor. changed pins it still shows as 0. any idea what might be the issue ? i tried both bitbang and Hardware SPI.

Thanks

Changing the Time scale

Here is the question I posted on your other site (as requested). I assumed that since this wasn't an error in the code, it wasn't a true "issue". I posted my original post as well as your reply and my response:

scott
2014/11/23 19:46

This is great! I've been pouring over the code trying to convert it to a ceramic kiln controller. To do so, I need to change the time scale from seconds to minutes. I would assume that I would be able to add a *60 scale to where the code reads the profiles, but cant seem to see where to input it. Any tips? I'm fine with the code running in seconds (even if its a bit overkill for the thermal inertia my kiln has), but I would like the display and profile input to be in minutes. A 12 hour run on the kiln becomes a bit silly in seconds :)

Thanks for your help and awesome code!


chrono
2014/11/23 20:00

Do you mean in the python or in the UI part of the code? We've opted for the most efficient integer SI unit for storage and calculation, which are seconds. The UI part was originally designed for Reflow Curves, which are short enough to be displayed in seconds for curve/datasheet comparison. However, in your case, I can see that keeping the legends and UI stuff in seconds would be more than a bit silly, when you're going over several hours.

If you have a github account, I'd love if you would open a new issue, so we and possibly others can keep track of this issue (history and solutions). If not, don't worry about it, I would leave the data in seconds as it is, I think the solution rather lies in the datapoint/legend aggregation of the plotting framework we used and maybe a couple of *60 in the javascript for the curve detail panel. I'll have to have a look into the code and will come back to you, either here via comment (don't forget to subscribe) or via github, if we have a new issue :)


scott
2014/11/24 8:27

Yes, my thought was to leave the Python in seconds (unless its easier not to), and modify the Java so that the interface (display and profile entry) are in hours and minutes. I am fairly mediocre in Java at the moment, so any help would be great! I can see how to change some of the display points (like total duration), but I have a problem translating the input from the profile file.Thanks for your help!

picoreflowd doesn't handle MAX31855 read errors gracefully

Reported by Kurt via:
https://apollo.open-resource.org/mission:resources:picoreflow#comment_146a0a60fe7cb141ca3eca11a8bb8eac

Have things pretty well set up, but for some reason I get random “MAX31855Error: Thermocouple short to ground” errors, with 2 different MAX31855 breakout boards. As far as I can tell, there's nothing shorting, all good connections, etc.

What I'd like to do is ignore that and continue running, however once that occurs, the program quits recording the temperature until I kill picoReflow and start it again.

Is there a way to tell it to just keep going, or even close just restart the max31855 part of the program when that happens?

Specific error:

Exception in thread Thread-2: Traceback (most recent call last):

File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
  self.run()
File "/home/pi/picoReflow/lib/oven.py", line 185, in run
  self.temperature = self.thermocouple.get()
File "/home/pi/picoReflow/lib/max31855.py", line 41, in get
  self.checkErrors()
File "/home/pi/picoReflow/lib/max31855.py", line 78, in checkErrors
  raise MAX31855Error("Thermocouple short to ground")
MAX31855Error: 'Thermocouple short to ground'

Autostart onBoot is not working!

I've tried with a lot of ways to make the server run when the pi is starting but nothing is working.
I have a raspberry 3 with the Raspbian Buster Lite OS. The system is just for the oven and i exactly follow the commands, the oven is working well but its not starting when i boot the system.

Is this for the raspberry pi pico, or the mini computers?

The title of the project suggests that this project is intended for a raspberry pi pico (the microcontroller), yet the code and "Hardware" section imply only the use of the computer boards (specifically the 2b+ and zero W).

Could someone clarify this for me? I'm confused as to if it is the latter or former, or both, and the rpi pico simply isn't listed.

long run stability issues

I'm using picoReflow to run a shop oven cooking composite parts. The profile we're running is simple but long; we ramp at 3c/min up to 121c and hold for an hour. Everything works great, except half the time picoReflow declares the run complete ~1/2 way through.
I'm seeing a fair bit of noise when monitoring my max31855s outside of picoReflow, waiting on some 0.1uF caps that will hopefully get that under control.
My gut tells me that my problems have something to do with the '855 throwing a error message every now and then. I'm going to switch to the error handling fork and see if that helps me run my long profiles with less worry.
Anything else I should be thinking about?

Can't Find The Origin For Units

I'm trying to tweak a few things in the UI, and just cannot find where the values for certain variables originate.

Honestly, I'd just like to change the displayed units to Fahrenheit being as I'm a backwards American, and change the input of time units to minutes rather than seconds.

The data logging for long runs does seem to be causing a slight issue, but I'm running picoReflow on an RPi 3 so that seems to help.

I'm using picoReflow as a burnout oven controller in my jewelry studio, so the runs tend to be long as all hell, but the number of temperature points is relatively small.

As an example, starting at room temperature, ramp to 1400 degrees fahrenheit over the course of 4 hours, hold at 1400 for an hour, drop to 1100 over the course of an hour, then hold at 1100 indefinitely.

Also, if it's in any way possible, I'd like to implement some kind of command execution at certain points. Basically just run a curl command when it enters its final holding pattern so that PushBullet can ping my phone and let me know it's time to pour some gold.

websocket doesn't work/connect.

When I first connect to the server I get two messages:
"Yay, I'm alive" which seems fine and another which says "Error 1: status websocket not available" which is all red and ominous.

I can't see either of the default profiles contained in the storage directory and on the host's terminal I am getting:

2014-12-16 21:20:29,160 ERROR ovenWatcher: could not write to socket <geventwebsocket.websocket.WebSocket object at 0xb4daf110>

I'm not getting sensor readings either. I have a raspberry pi B+ and I changed the config.py to reflect having my adafruit MAX31855 hooked up to the SPI port pins.

All profiles run for 10 sec then flag Run over

This project will do exactly what I am looking for_ if I can get it to work.

Profiles run under Simulate for c10 sec and then flag Run Over. I thought this might be a Door Open prob but even if I set door to CLOSED I get "Error reading sensor oven temperature not responding to heat" because the oven temperature never moves from 0 under Simulate.

I am learning (slowly) Python to try and tweek the code but struggling. I don't want to spend a load of time money on a set up if I can't get Simulate to demo code can do what I want (ceramic kiln control)

I see mention of a follow on project piciPID but cannot find and development etc . Has picoReflow and or picoPID development been halted?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.