diff --git a/group_vars/prod b/group_vars/prod index 9ad0b4c4461f6f665b2a3417f79274fe3ca83b4e..f28a92a9d6203e4690c8242509e8fb2689d853ad 100644 --- a/group_vars/prod +++ b/group_vars/prod @@ -97,3 +97,19 @@ monitoring: - { ip: "1.1.1.1", name: "Cloudflare" } - { ip: "8.8.8.8", name: "Google" } - { ip: "9.9.9.9", name: "Quad9" } + +# ESPHome Devices für Openhab und Icinga +esphome_devices: + - { id: "alarm", name: "Alarm", groups: "gHauptraum" } + # - { id: "dach", name: "Dach", groups: "" } + # - { id: "display01", name: "Display01", groups: "gHauptraum" } + # - { id: "display02", name: "Display02", groups: "gHauptraum" } + # - { id: "display03", name: "Display03", groups: "gHauptraum" } + - { id: "feinstaub01", name: "Feinstaub01", groups: "gHauptraum", sensors: [ "feinstaub_2_5" ] } + - { id: "hauptraum", name: "Hauptraum", groups: "gHauptraum", sensors: [ "Temp", "pressure", "humidity" ] } + - { id: "holzwerkstatt", name: "Holzwerkstatt", groups: "gHolzwerkstatt", sensors: [ "Temp", "pressure", "humidity" ] } + - { id: "kamin", name: "Kamin", groups: "gHauptraum", sensors: [ "HeizungVorlauf", "HeizungRuecklauf"] } + - { id: "kuehlschrank", name: "Kühlschrank", groups: "gHauptraum", sensors: [ "Kuehlschrank-Temp" ] } + - { id: "lounge", name: "Lounge", groups: "gLounge", sensors: [ "Temp", "pressure", "humidity" ] } + - { id: "status", name: "Status/Strom", groups: "gHauptraum", sensors: [ "stromverbrauch" ] } + - { id: "vortragsraum", name: "Vortragsraum", groups: "gVortragsraum", sensors: [ "Temp", "pressure", "humidity" ] } diff --git a/host_vars/ogg b/host_vars/ogg index dbca5f4e708e430bcc19119770aa6085ada3f505..ded6053ec42d11fc363fe80eb50af059880f2d03 100644 --- a/host_vars/ogg +++ b/host_vars/ogg @@ -115,9 +115,3 @@ wled_devices: - { id: "rack", groups: "gLounge" } - { id: "warpcubes", groups: "gLounge" } -mqtt_sensors_temp: - - { id: "hauptraum", name: "Hauptraum", groups: "gHauptraum" } - - { id: "vortragsraum", name: "Vortragsraum", groups: "gVortragsraum" } - -mqtt_sensors_feinstaub: - - { id: "feinstaub01", name: "Feinstaub01", groups: "gHauptraum" } diff --git a/intern/docker_openhab/templates/conf/items/mqtt.items b/intern/docker_openhab/templates/conf/items/mqtt.items index 1db4adae7a569daa358ae6e1c9b7f2b7f7a5d4bd..c0b6e2a1dbd064dfd19ab30c96ce8a9fe48bc883 100644 --- a/intern/docker_openhab/templates/conf/items/mqtt.items +++ b/intern/docker_openhab/templates/conf/items/mqtt.items @@ -3,27 +3,43 @@ Number Werkstatt_Licht "Werkstatt Licht [%.0f (0-225)]" <light> (gHaupt channel="mqtt:topic:mosquitto:werkstattlicht:level" } -{% for device in mqtt_sensors_temp %} +{% for device in esphome_devices %} + {% if device.sensors is defined %} + {% for sensor in device.sensors %} -Number MQTT_{{ device.id }}_temp "Sensor {{ device.name }} Temp [%.1f °C]" <temperature> ({{ device.groups }}) ["Measurement","Temperature","CurrentTemperature"] { - channel="mqtt:topic:mosquitto:{{ device.id }}:temp" + {% if sensor == "temp" or sensor == "HeizungVorlauf" or sensor == "HeizungRuecklauf" or sensor == "Kuehlschrank-Temp" %} + +Number MQTT_{{ device.id }}_{{ sensor | replace("-","") }} "Sensor {{ device.name }} {{ sensor }} [%.1f °C]" <temperature> ({{ device.groups }}) ["Measurement","Temperature","CurrentTemperature"] { + channel="mqtt:topic:mosquitto:{{ device.id }}:{{ sensor | replace("-","") | lower }}" } -Number MQTT_{{ device.id }}_pressure "Sensor {{ device.name }} Pressure [%.1f hPa]" <pressure> ({{ device.groups }}) ["Measurement","Pressure"] { - channel="mqtt:topic:mosquitto:{{ device.id }}:pressure" + {% elif sensor == "pressure" %} + +Number MQTT_{{ device.id }}_{{ sensor }} "Sensor {{ device.name }} Pressure [%.1f hPa]" <pressure> ({{ device.groups }}) ["Measurement","Pressure"] { + channel="mqtt:topic:mosquitto:{{ device.id }}:{{ sensor }}" } -Number MQTT_{{ device.id }}_humidity "Sensor {{ device.name }} Humidity [%.1f %%]" <humidity> ({{ device.groups }}) ["Measurement","Humidity","CurrentHumidity"] { - channel="mqtt:topic:mosquitto:{{ device.id }}:humidity" + {% elif sensor == "humidity" %} + +Number MQTT_{{ device.id }}_{{ sensor }} "Sensor {{ device.name }} Humidity [%.1f %%]" <humidity> ({{ device.groups }}) ["Measurement","Humidity","CurrentHumidity"] { + channel="mqtt:topic:mosquitto:{{ device.id }}:{{ sensor }}" } -{% endfor %} + {% elif sensor == "feinstaub_2_5" %} -{% for device in mqtt_sensors_feinstaub %} +Number MQTT_{{ device.id }}_{{ sensor }} "Sensor {{ device.name }} 2.5 PM [%.1f µg/m³]" ({{ device.groups }}) ["Measurement"] { + channel="mqtt:topic:mosquitto:{{ device.id }}:{{ sensor }}" +} + + {% elif sensor == "stromverbrauch" %} -Number MQTT_{{ device.id }}_feinstaub_2_5 "Sensor {{ device.name }} 2.5 PM [%.1f µg/m³]" ({{ device.groups }}) ["Measurement"] { - channel="mqtt:topic:mosquitto:{{ device.id }}:feinstaub_2_5" +Number MQTT_{{ device.id }}_{{ sensor }} "Sensor {{ device.name }} kW [%.1f kW]" ({{ device.groups }}) ["Measurement"] { + channel="mqtt:topic:mosquitto:{{ device.id }}:{{ sensor }}" } + {% endif %} + + {% endfor %} + {% endif %} {% endfor %} diff --git a/intern/docker_openhab/templates/conf/things/mqtt.things b/intern/docker_openhab/templates/conf/things/mqtt.things index ae4a93f9fb6f05d51272475000e9867a96a207e0..afd79df457b7a7d4d4452658d0b4540044278325 100644 --- a/intern/docker_openhab/templates/conf/things/mqtt.things +++ b/intern/docker_openhab/templates/conf/things/mqtt.things @@ -7,26 +7,32 @@ Bridge mqtt:broker:mosquitto [ host="{{ int_ip4 }}", secure=false, enableDiscove Type number : level "Werkstatt Licht (dali)" [ stateTopic="light/dali", commandTopic="light/dali", postCommand=true, min=0, max=255 ] } -{% for device in mqtt_sensors_temp %} +{% for device in esphome_devices %} Thing topic {{ device.id }} "Sensor {{ device.name }}" { + + {% if device.sensors is defined %} Channels: - Type number : temp "Sensor {{ device.name }} Temp" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/temp/state" ] - Type number : pressure "Sensor {{ device.name }} Pressure" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/pressure/state" ] - Type number : humidity "Sensor {{ device.name }} Humidity" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/humidity/state" ] - } + {% for sensor in device.sensors %} -{% endfor %} + {% if sensor == "Temp" or sensor == "HeizungVorlauf" or sensor == "HeizungRuecklauf" or sensor == "Kuehlschrank-Temp" %} + Type number : {{ sensor | replace("-","") | lower }} "Sensor {{ device.name }} {{ sensor }}" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/{{ sensor | lower }}/state" ] + {% elif sensor == "pressure" %} + Type number : {{ sensor }} "Sensor {{ device.name }} Pressure" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/{{ sensor }}/state" ] + {% elif sensor == "humidity" %} + Type number : {{ sensor }} "Sensor {{ device.name }} Humidity" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/{{ sensor }}/state" ] + {% elif sensor == "feinstaub_2_5" %} + Type number : {{ sensor }} "Sensor {{ device.name }} 2.5 PM" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/{{ sensor }}/state" ] + {% elif sensor == "stromverbrauch" %} + Type number : {{ sensor }} "Sensor {{ device.name }} kW" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/{{ sensor }}/state" ] + {% endif %} -{% for device in mqtt_sensors_feinstaub %} + {% endfor %} + {% endif %} - Thing topic {{ device.id }} "Sensor {{ device.name }}" { - Channels: - Type number : feinstaub_2_5 "Sensor {{ device.name }} 2.5 PM" [ stateTopic="ESPHome/esphome_{{ device.id }}/sensor/feinstaub_2_5/state" ] } - {% endfor %} } diff --git a/webserver/docker_icinga/templates/etc/icinga/conf.d/services_mqttsensors.conf b/webserver/docker_icinga/templates/etc/icinga/conf.d/services_mqttsensors.conf index 3114a6fae9850bcc3c30c508b0855886f7fdb1a9..b0a31dd69d9dc6eb742d83781b0feb47a4b5f4fd 100644 --- a/webserver/docker_icinga/templates/etc/icinga/conf.d/services_mqttsensors.conf +++ b/webserver/docker_icinga/templates/etc/icinga/conf.d/services_mqttsensors.conf @@ -1,13 +1,13 @@ -{% for device in mqtt_sensors %} +{% for device in esphome_devices %} -apply Service "mqttsensor-{{ device.id }}-status" { +apply Service "esphome-{{ device.id }}-status" { import "generic-service" check_command = "check_mqtt" vars.mqtt_host = "{{ mqtt.ip }}" - vars.mqtt_topic = "{{ device.id }}/status" + vars.mqtt_topic = "ESPHome/esphome_{{ device.id }}/status" vars.mqtt_value = "online" vars.mqtt_operator = "equal" vars.mqtt_readonly = true