{% extends "layout.html" %} {% set active_page = "input" %} {% set help_page = ["input", _('Input')] %} {% block title %} - {{_('Sensors')}}{% endblock %} {% block head %}{% endblock %} {%- block body %}
{% include 'flash_messages.html' %}

{{_('Inputs')}}

{{_('Inputs, such as sensors or ADC signals, enable measuring conditions in the environment. Add, configure, and activate sensors to begin recording measurements to the database and allow them to be used throughout Mycodo.')}}

{{form_add_sensor.hidden_tag()}}
{{form_add_sensor.numberSensors(class_='form-control', type="number", value=1)}}
{{form_add_sensor.sensor(class_='form-control')}}
{{form_add_sensor.sensorAddSubmit(class_='form-control btn btn-default')}}
{%- if displayOrder -%} {%- for order in displayOrder -%} {%- for each_sensor in sensor if each_sensor.id == order -%}
{{form_mod_sensor.csrf_token}} {{form_mod_sensor.modSensor_id(value=each_sensor.id)}}
{{form_mod_sensor.name(class_='form-control', value=each_sensor.name, **{'title':_('A common name to distinguish this sensor from others')})}}
{% if each_sensor.is_activated -%} {%- set has_active_pid = [] -%} {%- for each_pid in pid if each_pid.measurement.split(',')[0] == each_sensor.unique_id and each_pid.is_activated -%} {%- do has_active_pid.append(1) -%} {%- endfor -%} {%- set has_active_lcd = [] -%} {%- for each_lcd in lcd if each_lcd.is_activated and (each_lcd.line_1_sensor_id == each_sensor.id or each_lcd.line_2_sensor_id == each_sensor.id or each_lcd.line_3_sensor_id == each_sensor.id or each_lcd.line_4_sensor_id == each_sensor.id) -%} {%- do has_active_lcd.append(1) -%} {%- endfor -%} {% if has_active_pid or has_active_lcd -%} {{form_mod_sensor.deactivateSensorSubmit(class_='form-control btn btn-default',**{'onclick':'return confirm("There are currently active PID or LCD controllers that rely on this sensor to be active. If you deactivate this sensor, all active PID and LCD controllers that use it will be deactivated. Select OK to deactivate this sensor and all associated PID and LCD controllers, otherwise click Cancel to leave them active.")'})}} {% else -%} {{form_mod_sensor.deactivateSensorSubmit(class_='form-control btn btn-default')}} {% endif -%} {% else -%} {{form_mod_sensor.activateSensorSubmit(class_='form-control btn btn-default')}} {% endif -%}
{{form_mod_sensor.orderSensorUp(class_='form-control btn btn-default')}}
{{form_mod_sensor.orderSensorDown(class_='form-control btn btn-default')}}
{{form_mod_sensor.csrf_token}} {{form_mod_sensor.modSensor_id(value=each_sensor.id)}} {% if each_sensor.device in ['RPiCPULoad', 'RPiFreeSpace'] -%} {% endif -%}
{{form_mod_sensor.modSensorSubmit(class_='form-control btn btn-default')}}
{% if has_active_pid or has_active_lcd -%} {{form_mod_sensor.delSensorSubmit(class_='form-control btn btn-default',**{'onclick':'return confirm("Note: there are currently active PID or LCD controlelrs that rely on this sensor to operate. Deleting it will deactivate these sensors. Are you sure you want to delete this sensor?")'})}} {% else -%} {{form_mod_sensor.delSensorSubmit(class_='form-control btn btn-default',**{'onclick':'return confirm("Are you sure you want to delete this sensor?")'})}} {% endif -%}
{% if each_sensor.device != 'RPiCPULoad' -%}
{{form_mod_sensor.sensorCondAddSubmit(class_='form-control btn btn-default')}}
{% endif -%}
{% for each_sensor_template in sensor_templates if each_sensor_template[:-5] == each_sensor.device %} {% include 'pages/input_options/'+each_sensor_template %} {% endfor %} {% if each_sensor.device != 'EDGE' -%}
{{form_mod_sensor.period.label(class_='control-label')}}
{{form_mod_sensor.period(class_='form-control', value=each_sensor.period, **{'title':_('The duration (seconds) between sensor reads')})}}
{% endif -%} {% if each_sensor.device not in ['EDGE', 'RPi', 'RPiCPULoad', 'RPiFreeSpace', 'MYCODO_RAM'] -%}
{{form_mod_sensor.pre_relay_id.label(class_='control-label')}}
{{form_mod_sensor.pre_relay_duration.label(class_='control-label')}}
{{form_mod_sensor.pre_relay_duration(class_='form-control', value=each_sensor.pre_relay_duration, **{'title':_('If a Pre Relay is selected, set the duration (seconds) to turn the Pre Relay on for before every measurement is acquired.')})}}
{% endif -%} {% if each_sensor.device in ['AM2315', 'ATLAS_PT1000', 'BME280', 'BMP', 'HTU21D', 'TSL2561', 'TMP006', 'ADS1x15', 'MCP342x', 'SHT2x'] -%}
{{form_mod_sensor.multiplexer_address.label(class_='control-label')}}
{{form_mod_sensor.multiplexer_bus.label(class_='control-label')}}
{{form_mod_sensor.multiplexer_bus(class_='form-control', value=each_sensor.multiplexer_bus, **{'title':_('Which I2C bus is this multiplexer connected?')})}}
{{form_mod_sensor.multiplexer_channel.label(class_='control-label')}}
{% endif -%}
{%- set sensor_conditional = [] -%} {%- for each_cond in conditional if each_cond.sensor_id == each_sensor.id -%} {%- do sensor_conditional.append(1) -%} {% endfor %} {% if sensor_conditional %}

{{_('Sensor Conditionals')}}

{{_('Conditionals allow certain actions to be carried out when a certain set of conditions are met.')}}

{% endif %} {%- for each_cond in conditional if each_cond.sensor_id == each_sensor.id -%}
{{form_conditional.csrf_token}} {{form_conditional.sensor_id(class_='form-control', value=each_sensor.id)}} {{form_conditional.conditional_id(class_='form-control', value=each_cond.id)}}
{{form_conditional.name(class_='form-control', value=each_cond.name, **{'title':_('Name')})}}
{%- if each_cond.is_activated %} {{form_conditional.deactivate_cond(class_='form-control btn btn-default')}} {%- else %} {{form_conditional.activate_cond(class_='form-control btn btn-default')}} {%- endif -%}
{{form_conditional.save_cond(class_='form-control btn btn-default')}}
{{form_conditional.delete_cond(class_='form-control btn btn-default',**{'onclick':'return confirm("Are you sure you want to delete this Relay Conditional?")'})}}
{% if each_sensor.measurements == 'edge' %}
{% else %}
{{form_conditional.if_sensor_setpoint(class_='form-control', value=each_cond.if_sensor_setpoint, **{'title':_('What value to check the measurement against.'), 'size':'3'})}}
{% endif %}
{{form_conditional.if_sensor_period(class_='form-control', value=each_cond.if_sensor_period, **{'title':_('The duration (seconds) between checking whether the conditional is true. Set to 0 to check after every sensor measurement.'), 'size':'3'})}}
{% for each_cond_action in conditional_actions if each_cond_action.conditional_id == each_cond.id %}
{{form_conditional_actions.csrf_token}} {{form_conditional_actions.conditional_id(class_='form-control', value=each_cond.id)}} {{form_conditional_actions.conditional_action_id(class_='form-control', value=each_cond_action.id)}}
({{loop.index}})
{% if each_cond_action.do_action == 'relay' %}
{{form_conditional_actions.do_relay_id.label(class_='control-label')}}
{{form_conditional_actions.do_relay_duration(class_='form-control', value=each_cond_action.do_relay_duration, **{'title':_('How long to turn the relay on (optional)'), 'size':'3'})}}
{% elif each_cond_action.do_action in ['activate_pid', 'deactivate_pid'] %}
{% elif each_cond_action.do_action == 'email' %}
{% elif each_cond_action.do_action == 'flash_lcd' %}
{% elif each_cond_action.do_action == 'photo' %}
{% elif each_cond_action.do_action == 'photo_email' %}
{% elif each_cond_action.do_action == 'video' %}
{{form_conditional_actions.do_camera_duration.label(class_='control-label')}} {{form_conditional_actions.do_camera_duration(class_='form-control', value=each_cond_action.do_camera_duration, **{'title':_('Duration to record video (sec)')})}}
{% elif each_cond_action.do_action == 'video_email' %}
{{form_conditional_actions.do_camera_duration.label(class_='control-label')}} {{form_conditional_actions.do_camera_duration(class_='form-control', value=each_cond_action.do_camera_duration, **{'title':_('Duration to record video (sec)')})}}
{% elif each_cond_action.do_action == 'command' %}
{{form_conditional_actions.do_action_string(class_='form-control', value=each_cond_action.do_action_string, **{'title':_('Command to execute (as user "mycodo")')})}}
{% endif %}
{{form_conditional_actions.save_action(class_='form-control btn btn-default')}}
{{form_conditional_actions.delete_action(class_='form-control btn btn-default')}}
{% endfor %}
{{form_conditional_actions.csrf_token}} {{form_conditional_actions.conditional_id(class_='form-control', value=each_cond.id)}}
Action
{{form_conditional_actions.add_action(class_='form-control btn btn-default')}}
{%- endfor -%}
{%- endfor -%}
{%- endfor -%} {%- endif -%}
{% endblock -%}