Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mycodo 3.5.1: PWM Input seems to fail internally #304

Closed
pukkita opened this issue Oct 28, 2017 · 1 comment
Closed

Mycodo 3.5.1: PWM Input seems to fail internally #304

pukkita opened this issue Oct 28, 2017 · 1 comment
Labels

Comments

@pukkita
Copy link

pukkita commented Oct 28, 2017

Mycodo Issue Report:

  • Specific Mycodo Version: 5.3.1

Problem Description

PWM Inputs seems to crash.

Added a PWM input (Duty Cycle), went to Data > Live Measurements and it crashed, see log.

Errors

Error 500: Internal Server Error

Something bad happened but it's probably not your fault. Letting the developers know about these issues is crucial to supporting Mycodo. Please submit a new issue on GitHub with the following error traceback (copy the entire traceback):

Error (Full Traceback):

Traceback (most recent call last):
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask_login/utils.py", line 228, in decorated_view
    return func(*args, **kwargs)
  File "/var/www/mycodo/mycodo/mycodo_flask/page_routes.py", line 612, in page_live
    sensorDisplayOrderSorted=sensor_order_sorted)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/templating.py", line 134, in render_template
    context, ctx.app)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/flask/templating.py", line 116, in _render
    rv = template.render(context)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/jinja2/environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "/var/www/mycodo/env/lib/python2.7/site-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/var/www/mycodo/mycodo/mycodo_flask/templates/pages/live.html", line 3, in top-level template code
    {% set help_page = ["live-measurements", _('Live Leasurements')] %}
  File "/var/www/mycodo/mycodo/mycodo_flask/templates/layout.html", line 187, in top-level template code
    {%- block body %}{% endblock -%}
  File "/var/www/mycodo/mycodo/mycodo_flask/templates/pages/live.html", line 116, in block "body"
    {% if measurement_units[each_measure]['meas'] == 'temperature' %}
  File "/var/www/mycodo/env/lib/python2.7/site-packages/jinja2/environment.py", line 411, in getitem
    return obj[argument]
UndefinedError: 'dict object' has no attribute u''

Mycodo log seems to point to a missing table: camera

2017-10-25 18:27:59,234 - mycodo.databases.utils - ERROR - Error raised in session_scope.  Session will be rolled back: db_uri='sqlite:////home/pi/Mycodo/mycodo/../databases/mycodo.db', error='(sqlite3.OperationalError) no such table: camera [SQL: u'SELECT camera.id AS camera_id, camera.unique_id AS camera_unique_id, camera.name AS camera_name, camera.camera_type AS camera_camera_type, camera.library AS camera_library, camera.opencv_device AS camera_opencv_device, camera.hflip AS camera_hflip, camera.vflip AS camera_vflip, camera.rotation AS camera_rotation, camera.height AS camera_height, camera.width AS camera_width, camera.brightness AS camera_brightness, camera.contrast AS camera_contrast, camera.exposure AS camera_exposure, camera.gain AS camera_gain, camera.hue AS camera_hue, camera.saturation AS camera_saturation, camera.white_balance AS camera_white_balance, camera.relay_id AS camera_relay_id, camera.cmd_pre_camera AS camera_cmd_pre_camera, camera.cmd_post_camera AS camera_cmd_post_camera, camera.stream_started AS camera_stream_started, camera.timelapse_started AS camera_timelapse_started, camera.timelapse_paused AS camera_timelapse_paused, camera.timelapse_start_time AS camera_timelapse_start_time, camera.timelapse_end_time AS camera_timelapse_end_time, camera.timelapse_interval AS camera_timelapse_interval, camera.timelapse_next_capture AS camera_timelapse_next_capture, camera.timelapse_capture_number AS camera_timelapse_capture_number \nFROM camera']'
2017-10-25 18:27:59,235 - mycodo.daemon - ERROR - Could not read camera table: (sqlite3.OperationalError) no such table: camera [SQL: u'SELECT camera.id AS camera_id, camera.unique_id AS camera_unique_id, camera.name AS camera_name, camera.camera_type AS camera_camera_type, camera.library AS camera_library, camera.opencv_device AS camera_opencv_device, camera.hflip AS camera_hflip, camera.vflip AS camera_vflip, camera.rotation AS camera_rotation, camera.height AS camera_height, camera.width AS camera_width, camera.brightness AS camera_brightness, camera.contrast AS camera_contrast, camera.exposure AS camera_exposure, camera.gain AS camera_gain, camera.hue AS camera_hue, camera.saturation AS camera_saturation, camera.white_balance AS camera_white_balance, camera.relay_id AS camera_relay_id, camera.cmd_pre_camera AS camera_cmd_pre_camera, camera.cmd_post_camera AS camera_cmd_post_camera, camera.stream_started AS camera_stream_started, camera.timelapse_started AS camera_timelapse_started, camera.timelapse_paused AS camera_timelapse_paused, camera.timelapse_start_time AS camera_timelapse_start_time, camera.timelapse_end_time AS camera_timelapse_end_time, camera.timelapse_interval AS camera_timelapse_interval, camera.timelapse_next_capture AS camera_timelapse_next_capture, camera.timelapse_capture_number AS camera_timelapse_capture_number \nFROM camera']
Traceback (most recent call last):
  File "/var/www/mycodo/mycodo/mycodo_daemon.py", line 593, in refresh_daemon_camera_settings
    Camera, entry='all')
  File "/var/www/mycodo/mycodo/utils/database.py", line 56, in db_retrieve_table_daemon
    return_table = return_table.all()
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2724, in all
    return list(self)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2876, in __iter__
    return self._execute_and_instances(context)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2899, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception
    exc_info
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/var/www/mycodo/env/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 504, in do_execute
    cursor.execute(statement, parameters)
OperationalError: (sqlite3.OperationalError) no such table: camera [SQL: u'SELECT camera.id AS camera_id, camera.unique_id AS camera_unique_id, camera.name AS camera_name, camera.camera_type AS camera_camera_type, camera.library AS camera_library, camera.opencv_device AS camera_opencv_device, camera.hflip AS camera_hflip, camera.vflip AS camera_vflip, camera.rotation AS camera_rotation, camera.height AS camera_height, camera.width AS camera_width, camera.brightness AS camera_brightness, camera.contrast AS camera_contrast, camera.exposure AS camera_exposure, camera.gain AS camera_gain, camera.hue AS camera_hue, camera.saturation AS camera_saturation, camera.white_balance AS camera_white_balance, camera.relay_id AS camera_relay_id, camera.cmd_pre_camera AS camera_cmd_p

Let's check the database:

sqlite> .tables
alembic_version   graph             pid               smtp            
camera            lcd               relay             timer           
conditional       method            remote            users           
conditional_data  method_data       roles           
displayorder      misc 

camera table is there...

Let's check the query:

sqlite> SELECT camera.id AS camera_id, camera.unique_id AS camera_unique_id, camera.name AS camera_name, camera.camera_type AS camera_camera_type, camera.library AS camera_library, camera.opencv_device AS camera_opencv_device, camera.hflip AS camera_hflip, camera.vflip AS camera_vflip, camera.rotation AS camera_rotation, camera.height AS camera_height, camera.width AS camera_width, camera.brightness AS camera_brightness, camera.contrast AS camera_contrast, camera.exposure AS camera_exposure, camera.gain AS camera_gain, camera.hue AS camera_hue, camera.saturation AS camera_saturation, camera.white_balance AS camera_white_balance, camera.relay_id AS camera_relay_id, camera.cmd_pre_camera AS camera_cmd_p
   ...> ;
Error: no such column: camera.id

Odd... let's check camera table fields:

sqlite> PRAGMA table_info(camera)
   ...> ;
0|id|INTEGER|1||1
1|unique_id|VARCHAR|1||0
2|name|TEXT|1||0
3|camera_type|TEXT|1||0
4|library|TEXT|1||0
5|opencv_device|INTEGER|0||0
6|hflip|BOOLEAN|0||0
7|vflip|BOOLEAN|0||0
8|rotation|INTEGER|0||0
9|height|INTEGER|0||0
10|width|INTEGER|0||0
11|brightness|FLOAT|0||0
12|contrast|FLOAT|0||0
13|exposure|FLOAT|0||0
14|gain|FLOAT|0||0
15|hue|FLOAT|0||0
16|saturation|FLOAT|0||0
17|white_balance|FLOAT|0||0
18|relay_id|INTEGER|0||0
19|cmd_pre_camera|TEXT|0||0
20|cmd_post_camera|TEXT|0||0
21|stream_started|BOOLEAN|0||0
22|timelapse_started|BOOLEAN|0||0
23|timelapse_paused|BOOLEAN|0||0
24|timelapse_start_time|FLOAT|0||0
25|timelapse_end_time|FLOAT|0||0
26|timelapse_interval|FLOAT|0||0
27|timelapse_next_capture|FLOAT|0||0
28|timelapse_capture_number|INTEGER|0||0

.id is there...

Steps to Reproduce the issue:

  1. Upgrade to Mycodo 5.3.1
  2. Add a PWM output
  3. Add a PWM Input for it
  4. Go to Data > Live Measurements

Additional Notes

  • No cameras have been added ever

  • Data > Asynchronous Graphs doesn't crash / show any error when adding the PWM input, it just doesn't display anything. Rest of inputs graph fine.

  • If PWM input is deactivated, there are no more crashes on Live Measurements.

@pukkita pukkita changed the title PWM Input seems to crash Live Measurements PWM Input seems to fail internally Oct 28, 2017
@pukkita pukkita changed the title PWM Input seems to fail internally Mycodo 3.5.1: PWM Input seems to fail internally Oct 28, 2017
kizniche added a commit that referenced this issue Oct 28, 2017
@kizniche kizniche added the bug label Oct 28, 2017
@kizniche
Copy link
Owner

You will need to delete and re-add your PWM and RPM Inputs before they will work properly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants