{"id":18046,"date":"2026-06-08T14:21:33","date_gmt":"2026-06-08T14:21:33","guid":{"rendered":"https:\/\/reiss-gmbh.com\/?page_id=18046"},"modified":"2026-07-02T10:48:40","modified_gmt":"2026-07-02T10:48:40","slug":"sensor-selection-tool","status":"publish","type":"page","link":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/","title":{"rendered":"Sensor Selection Tool"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"18046\" class=\"elementor elementor-18046 elementor-17918\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-63bd8b3 elementor-section-full_width elementor-section-height-min-height elementor-section-height-default elementor-section-items-middle\" data-id=\"63bd8b3\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;shape_divider_bottom&quot;:&quot;waves&quot;}\">\n\t\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M421.9,6.5c22.6-2.5,51.5,0.4,75.5,5.3c23.6,4.9,70.9,23.5,100.5,35.7c75.8,32.2,133.7,44.5,192.6,49.7\n\tc23.6,2.1,48.7,3.5,103.4-2.5c54.7-6,106.2-25.6,106.2-25.6V0H0v30.3c0,0,72,32.6,158.4,30.5c39.2-0.7,92.8-6.7,134-22.4\n\tc21.2-8.1,52.2-18.2,79.7-24.2C399.3,7.9,411.6,7.5,421.9,6.5z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-244799a\" data-id=\"244799a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-4d83df2 e-flex e-con-boxed e-con e-parent\" data-id=\"4d83df2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30e3f5a animated-slow elementor-widget elementor-widget-heading\" data-id=\"30e3f5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Sensor Selection Tool<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a81a44 elementor-widget elementor-widget-heading\" data-id=\"7a81a44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Which sensor do I need?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a8d5538 e-flex e-con-boxed e-con e-parent\" data-id=\"a8d5538\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1084965 elementor-widget elementor-widget-html\" data-id=\"1084965\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n    .reiss-sensor-tool {\r\n        font-family: 'Dosis', Arial, sans-serif;\r\n        max-width: 1200px;\r\n        margin: 0 auto;\r\n        padding: 10px;\r\n        line-height: 1.4;\r\n        font-size: 17px;\r\n    }\r\n\r\n    .reiss-sensor-tool table {\r\n        width: 100%;\r\n        border-collapse: collapse;\r\n        margin: 5px 0;\r\n    }\r\n\r\n    .reiss-sensor-tool table,\r\n    #recommend-sensors,\r\n    #not-recommend-sensors {\r\n        border-collapse: collapse;\r\n    }\r\n\r\n    .reiss-sensor-tool td input,\r\n    .reiss-sensor-tool td select,\r\n    .reiss-sensor-tool td label {\r\n        vertical-align: middle;\r\n    }\r\n\r\n    table tbody > tr:nth-child(2n+1) > td,\r\n    table tbody > tr:nth-child(2n+1) > th,\r\n    .reiss-sensor-tool table tbody > tr:nth-child(2n+1) > td,\r\n    .reiss-sensor-tool table tbody > tr:nth-child(2n+1) > th {\r\n        background-color: #E9EFF5;\r\n    }\r\n\r\n    .reiss-sensor-tool th, \r\n    .reiss-sensor-tool td {\r\n        padding: 6px 8px;\r\n        text-align: left;\r\n        border: 1px solid #ddd;\r\n        font-size: 17px;\r\n        font-weight: 600;\r\n        vertical-align: middle;\r\n    }\r\n    \r\n\r\n    .reiss-sensor-tool th {\r\n        background-color: #E9EFF5;\r\n        font-weight: 500;\r\n        text-align: center;\r\n    }\r\n\r\n    .reiss-sensor-tool td:nth-child(2) label {\r\n        font-weight: 400;\r\n    }\r\n\r\n    .input-group {\r\n        display: flex;\r\n        align-items: center;\r\n        gap: 5px;\r\n    }\r\n\r\n    .reiss-sensor-tool select, .reiss-sensor-tool input[type=\"number\"], .reiss-sensor-tool input[type=\"submit\"] {\r\n        padding: 3px 6px;\r\n        margin: 2px 0;\r\n        border: 1px solid #ddd;\r\n        border-radius: 3px;\r\n        background-color: #ffffff;\r\n        font-size: 17px;\r\n        font-weight: 400;\r\n    }\r\n\r\n    .reiss-sensor-tool input[type=\"submit\"] {\r\n        background-color: #2196F3;\r\n        color: white;\r\n        border: none;\r\n        cursor: pointer;\r\n        font-weight: 500;\r\n        padding: 6px 12px;\r\n        border-radius: 3px;\r\n        margin-top: 8px;\r\n    }\r\n\r\n    .info-icon {\r\n        cursor: pointer;\r\n        color: #2196F3;\r\n        margin-left: 3px;\r\n        font-size: 12px;\r\n        position: relative;\r\n        display: inline-block;\r\n    }\r\n\r\n    .tooltip {\r\n        visibility: hidden;\r\n        width: 250px;\r\n        background-color: white;\r\n        color: #333;\r\n        text-align: left;\r\n        border-radius: 4px;\r\n        padding: 8px;\r\n        position: absolute;\r\n        z-index: 1;\r\n        bottom: 125%;\r\n        left: 50%;\r\n        transform: translateX(-50%);\r\n        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\r\n        font-size: 11px;\r\n        line-height: 1.3;\r\n        border: 1px solid #ddd;\r\n    }\r\n\r\n    .tooltip-content img {\r\n        max-width: auto;\r\n        height: auto;\r\n        display: block;\r\n        margin: 0 auto 5px;\r\n    }\r\n\r\n    .info-icon:hover .tooltip {\r\n        visibility: visible;\r\n    }\r\n\r\n    .section-title {\r\n        font-weight: 600;\r\n        margin: 12px 0 6px 0;\r\n        color: #14518c;\r\n        font-size: 19px;\r\n        padding-bottom: 3px;\r\n    }\r\n\r\n    .form-container {\r\n        border: 1px solid #ddd;\r\n        border-radius: 6px;\r\n        padding: 12px;\r\n        background-color: white;\r\n        width: 100%;\r\n        max-width: 630px;\r\n        margin: 0 auto;\r\n    }\r\n\r\n    #Pressure-hinweis {\r\n        background-color: #fff8e1;\r\n        border: 1px solid #ffd54f;\r\n        padding: 8px;\r\n        border-radius: 4px;\r\n        margin: 8px 0;\r\n        font-size: 12px;\r\n    }\r\n<\/style>\r\n\r\n<div class=\"reiss-sensor-tool\">\r\n<div class=\"form-container\">\r\n\r\n        <form id=\"sensorForm\" method=\"post\" action=\"\">\r\n            <table>\r\n                <!-- Sensor Paraemters -->\r\n                <div class=\"section-title\">Parameters<\/div>\r\n                <!-- Disinfectant -->\r\n                <tr>\r\n                    <td style=\"width: 320px;\"><label for=\"Disinfectant\">Disinfectant<\/label><\/td>\r\n                    <td>\r\n                        <select name=\"Disinfectant\" id=\"Disinfectant\" required onchange=\"updateResults()\">\r\n                            <option value=\"\" disabled selected>Please select<\/option>\r\n                            <option value=\"Free chlorine\">Free chlorine<\/option>\r\n                            <option value=\"Total chlorine\">Total chlorine<\/option>\r\n                            <option value=\"Chlorine dioxide\">Chlorine dioxide<\/option>\r\n                            <option value=\"Bromine\">Bromine<\/option>\r\n                            <option value=\"Chlorite\">Chlorite<\/option>\r\n                            <option value=\"Ozone\">Ozone<\/option>\r\n                            <option value=\"Hydrogen peroxide\">Hydrogen peroxide<\/option>\r\n                            <option value=\"Peracetic acid\">Peracetic acid<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Concentration -->\r\n                <tr>\r\n                    <td><label for=\"chlorine-Concentration\">Concentration<\/label><\/td>\r\n                    <td class=\"input-group\">\r\n                        <input\r\n                            type=\"number\"\r\n                            step=\"any\"\r\n                            inputmode=\"decimal\"\r\n                            id=\"chlorine-Concentration\"\r\n                            name=\"chlorine-Concentration\"\r\n                            placeholder=\"not specified\"   \r\n                            onchange=\"updateUnitDependentValues(); updateResults()\"\r\n                            style=\"width: 130px;\"\r\n                        >\r\n                        <select name=\"Konz_einheit\" id=\"Konz_einheit\" style=\"width: 100px;\" onchange=\"updateUnitDependentValues(); updateResults()\">\r\n                            <option value=\"ppm\" selected>ppm<\/option>\r\n                            <option value=\"mg_l\">mg\/l<\/option>\r\n                            <option value=\"prozent\">%<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- pH-value -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"pH-value\">pH value<\/label>\r\n                    <\/td>\r\n                    <td>\r\n                        <input\r\n                            type=\"number\"\r\n                            inputmode=\"numeric\"\r\n                            id=\"pH-value\"\r\n                            name=\"pH-value\"\r\n                            placeholder=\"not specified\"\r\n                            onchange=\"updateResults()\"\r\n                            min=\"1\"\r\n                            max=\"12\"\r\n                            oninput=\"if(this.value !== '' && (this.value < 1 || this.value > 12)) this.value = Math.min(Math.max(this.value, 1), 12);\"\r\n                            style=\"width: 130px;\"\r\n                        >\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Temperatur -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"temp\">Temperature<\/label>\r\n                    <\/td>\r\n                    <td class=\"input-group\">\r\n                        <input\r\n                            type=\"number\"\r\n                            id=\"temp\"\r\n                            name=\"temp\"\r\n                            placeholder=\"not specified\"\r\n                            onchange=\"updateUnitDependentValues(); updateResults()\"\r\n\r\n                            inputmode=\"numeric\"\r\n                            pattern=\"\\d*\"\r\n\r\n\r\n                            style=\"width: 130px;\"\r\n                        >\r\n                        <select name=\"Temp_einheit\" id=\"Temp_einheit\" style=\"width: 100px;\" onchange=\"updateUnitDependentValues(); updateResults()\">\r\n                            <option value=\"celsius\" selected>\u00b0C<\/option>\r\n                            <option value=\"fahrenheit\">\u00b0F<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Pressure -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"Pressure\">Pressure<\/label>\r\n                    <\/td>\r\n                    <td class=\"input-group\">\r\n                        <input\r\n                            type=\"number\"\r\n                            id=\"Pressure\"\r\n                            name=\"Pressure\"\r\n                            placeholder=\"not specified\"\r\n                            onchange=\"updateUnitDependentValues(); updateResults()\"\r\n                            style=\"width: 130px;\"\r\n\r\n                            inputmode=\"numeric\"\r\n                            pattern=\"\\d*\"\r\n                        >\r\n                        <select name=\"Pressure_einheit\" id=\"Pressure_einheit\" style=\"width: 100px;\" onchange=\"updateUnitDependentValues(); updateResults()\">\r\n                            <option value=\"bar\" selected>bar<\/option>\r\n                            <option value=\"PSI\">PSI<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Conductivity -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"conductivity\">Conductivity<\/label>\r\n                    <\/td>\r\n                    <td class=\"input-group\">\r\n                        <input\r\n                            type=\"number\"\r\n                            id=\"conductivity\"\r\n                            name=\"conductivity\"\r\n                            placeholder=\"not specified\"\r\n                            onchange=\"updateUnitDependentValues(); updateResults()\"\r\n                            inputmode=\"numeric\"\r\n                            pattern=\"\\d*\"\r\n                            style=\"width: 130px;\"\r\n                        >\r\n                        <select name=\"conductivity_einheit\" id=\"conductivity_einheit\" style=\"width: 100px;\" onchange=\"updateUnitDependentValues(); updateResults()\">\r\n                            <option value=\"\u00b5Scm\" selected>\u00b5S\/cm<\/option>\r\n                            <option value=\"mScm\">mS\/cm<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n\r\n                 <!-- surfactants -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"surfactants\">Surfactants<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                Surfactants reduce the surface tension of water.\r\n                                They are found, for example, in detergents and soaps.\r\n                                TARAbase sensors must not be used with surfactants in the measurement water.\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <label><input type=\"radio\" name=\"surfactants\" value=\"1\" onchange=\"updateResults()\"> Yes<\/label>\r\n                        <label><input type=\"radio\" name=\"surfactants\" value=\"0\" onchange=\"updateResults()\" checked> No<\/label>\r\n                    <\/td>\r\n                <\/tr>\r\n                \r\n                \r\n                <!-- Abwesenheit Disinfectant -->\r\n                <tr id=\"chlorine-absence-row\">\r\n                    <td>\r\n                        <label for=\"absence_disinfectant\">Absence of disinfectant > 1 day<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                The absence of chlorine for more than 1 day or sustained chlorine concentrations below 0.1 ppm,\r\n                                lead to biofilm growth in the measured water. In such applications, a sensor\r\n                                should be used that provides reliable measurements even in the absence of disinfectants.\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <label><input type=\"radio\" name=\"absence_disinfectant\" value=\"1\" onchange=\"updateResults()\"> Yes<\/label>\r\n                        <label><input type=\"radio\" name=\"absence_disinfectant\" value=\"0\" onchange=\"updateResults()\" checked> No<\/label>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Cyanurs\u00e4ure -->\r\n                <tr id=\"cyanuric_acid_row\">\r\n                    <td>\r\n                        <label for=\"cyanuric_acid\">Cyanuric acid<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                In swimming pool chemistry, cyanuric acid is known as a \u201cchlorine stabilizer.\u201d\r\n                                Only specialized sensors are capable of providing reliable readings in the presence\r\n                                of cyanuric acid.\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <label><input type=\"radio\" name=\"cyanuric_acid\" value=\"1\" onchange=\"updateResults()\"> Yes<\/label>\r\n                        <label><input type=\"radio\" name=\"cyanuric_acid\" value=\"0\" onchange=\"updateResults()\" checked> No<\/label>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Wastewater -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"wastewater\">Wastewater<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                Wastewater is contaminated water from households,\r\n                                industry and agriculture that contains pollutants.\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <label><input type=\"radio\" name=\"wastewater\" value=\"1\" onchange=\"updateResults()\"> Yes<\/label>\r\n                        <label><input type=\"radio\" name=\"wastewater\" value=\"0\" onchange=\"updateResults()\" checked> No<\/label>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Membranfreie chlorineelektrolyse -->\r\n                <tr id=\"membranfree_chlorine_row\">\r\n                    <td>\r\n                        <label for=\"membranfree_chlorine_electrolysis\">Membrane-free chlorine electrolysis<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                In membrane-free chlorine electrolysis, hydrogen is produced in the process water.\r\n                                This can cause problems with certain types of sensors.\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <label><input type=\"radio\" name=\"membranfree_chlorine_electrolysis\" value=\"1\" onchange=\"updateResults()\"> Yes<\/label>\r\n                        <label><input type=\"radio\" name=\"membranfree_chlorine_electrolysis\" value=\"0\" onchange=\"updateResults()\" checked> No<\/label>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n            <\/table>\r\n\r\n            <!-- Sensor Specifications -->\r\n            <div class=\"section-title\">Options<\/div>\r\n            <table>\r\n                <!-- signal_output -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"signal_output\">Signal output<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                Following options are available<br>\r\n                                &nbsp;&nbsp;&nbsp;&nbsp;\u2022   Modbus<br>\r\n                                &nbsp;&nbsp;&nbsp;&nbsp;\u2022   4-20mA<br>\r\n                                &nbsp;&nbsp;&nbsp;&nbsp;\u2022   -2V (digital internal signal processing)<br>\r\n                                &nbsp;&nbsp;&nbsp;&nbsp;\u2022   -2V (analog internal signal processing)\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <select name=\"signal_output\" id=\"signal_output\" style=\"width: 150px;\" onchange=\"updateResults()\">\r\n                            <option value=\"Modbus\">Modbus<\/option>\r\n                            <option value=\"4-20mA\">4-20mA<\/option>\r\n                            <option value=\"-2V (digital)\">-2V (digital)<\/option>\r\n                            <option value=\"-2V (analog)\">-2V (analog)<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n\r\n                <!-- Sicherungsring -->\r\n                <tr>\r\n                    <td>\r\n                        <label for=\"Sicherungsring\">Retaining groove position<\/label>\r\n                        <span class=\"info-icon\">\u24d8\r\n                            <span class=\"tooltip\">\r\n                                <img decoding=\"async\" src=\"\/wp-content\/themes\/hello-theme-child\/sensorauswahltool\/Sicherungsring_info.jpg\" alt=\"Sicherungsring\" style=\"max-width:none; height:auto;\">\r\n                            <\/span>\r\n                        <\/span>\r\n                    <\/td>\r\n                    <td>\r\n                        <select name=\"Sicherungsring\" id=\"Sicherungsring\" style=\"width: 150px;\" onchange=\"updateResults()\">\r\n                            <option value=\"no groove\" selected>no groove<\/option>\r\n                            <option value=\"65mm\">65mm<\/option>\r\n                            <option value=\"82mm\">82mm<\/option>\r\n                            <option value=\"98mm\">98mm<\/option>\r\n                            <option value=\"102mm\">102mm<\/option>\r\n                            <option value=\"107mm\">107mm<\/option>\r\n                            <option value=\"120mm\">120mm<\/option>\r\n                        <\/select>\r\n                    <\/td>\r\n                <\/tr>\r\n            <\/table>\r\n\r\n            <!--<input type=\"submit\" value=\"Absenden\">-->\r\n        <\/form>\r\n\r\n        <!-- Empfohlener Sensor und Pressure-Hinweis -->\r\n        <div style=\"display: flex; gap: 50px; margin-top: 20px;\">\r\n            <div>\r\n                <div id=\"recommended-sensor-titel\" style=\"font-weight: bold; color: #2E7D32; display: none;\">Recommended sensor<\/div>\r\n                <div id=\"recommended-sensor\" style=\"display: none;\">\r\n                    <!-- Hier wird der empfohlene Sensor angezeigt -->\r\n                    -\r\n                <\/div>\r\n                <div id=\"Pressure-hinweis\" style=\"display: none; background-color: #E1F5FF; border: 1px solid #ffeeba; padding: 10px; border-radius: 5px;\">\r\n                    <div class=\"section-title\">Note<\/div>\r\n                    <div>If the pressure exceeds 0.5 bar (7.25 PSI), we recommend using a retaining groove with a retaining ring!<\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <!-- \u2191 Flex-Container hier sauber geschlossen -->\r\n\r\n        <!-- Overview table - initially hidden -->\r\n        <div id=\"overview-container\" style=\"width: 100%; margin-top: 20px; display: none; overflow-x: auto;\">\r\n            <div class=\"section-title\">Overview<\/div>\r\n            <table style=\"width: 100%; border-collapse: collapse; margin-top: 10px;\">\r\n                <thead>\r\n                    <tr style=\"background-color: #E9EFF5;\">\r\n                        <th style=\"padding: 8px; text-align: center; border: 1px solid #ddd;\">Brand<\/th>\r\n                        <th style=\"padding: 8px; text-align: center; border: 1px solid #ddd;\">Type<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"overview-sensors\">\r\n                <\/tbody>\r\n            <\/table>\r\n\r\n            <!-- Legende - initially hidden -->\r\n            <div style=\"display: flex; gap: 20px; margin-top: 10px; font-size: 14px; flex-wrap: wrap;\">\r\n                <div style=\"display: flex; align-items: center;\">\r\n                    <span style=\"background-color: #2E7D32; color: white; padding: 4px 10px; border-radius: 3px; margin-right: 8px; font-weight: bold;\">&nbsp;<\/span>\r\n                    recommended sensor\r\n                <\/div>\r\n                <div style=\"display: flex; align-items: center;\">\r\n                    <span style=\"background-color: #C8E6C9; padding: 4px 10px; border-radius: 3px; margin-right: 8px;\">&nbsp;<\/span>\r\n                    within specifications\r\n                <\/div>\r\n                <div style=\"display: flex; align-items: center;\">\r\n                    <span style=\"background-color: #FFA07A; padding: 4px 10px; border-radius: 3px; margin-right: 8px;\">&nbsp;<\/span>\r\n                    not within specifications\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n    <\/div><!-- .form-container -->\r\n<\/div><!-- .reiss-sensor-tool -->\r\n\r\n<script>\r\n\r\nfunction togglecyanuric_acidVisibility(Disinfectant) {\r\n    const isFreeOrTotalchlorine = Disinfectant === 'Free chlorine' || Disinfectant === 'Total chlorine';\r\n    const displayStyle = isFreeOrTotalchlorine ? 'table-row' : 'none';\r\n    \r\n    document.getElementById('cyanuric_acid_row').style.display = displayStyle;\r\n    document.getElementById('membranfree_chlorine_row').style.display = displayStyle;\r\n    document.getElementById('chlorine-absence-row').style.display = displayStyle;\r\n\r\n    \/\/ Wenn versteckt, setze Werte auf \"Nein\" (0)\r\n    if (!isFreeOrTotalchlorine) {\r\n        document.querySelector('input[name=\"cyanuric_acid\"][value=\"0\"]').checked = true;\r\n        document.querySelector('input[name=\"membranfree_chlorine_electrolysis\"][value=\"0\"]').checked = true;\r\n        document.querySelector('input[name=\"absence_disinfectant\"][value=\"0\"]').checked = true;\r\n    }\r\n}\r\n\r\nfunction updateResults() {\r\n\r\n    const Disinfectant = document.getElementById(\"Disinfectant\").value;\r\n    const Konz = parseFloat(document.getElementById(\"chlorine-Concentration\").value) || null;\r\n    const Konz_einheit = document.getElementById(\"Konz_einheit\").value;\r\n    const ph_wert = parseFloat(document.getElementById(\"pH-value\").value) || 7;\r\n    const tempInput = document.getElementById(\"temp\").value;\r\n    const temp = tempInput === \"\" ? null : parseFloat(tempInput);\r\n    const Temp_einheit = document.getElementById(\"Temp_einheit\").value;\r\n    const Pressure = parseFloat(document.getElementById(\"Pressure\").value) || 0.2;\r\n    const Pressure_einheit = document.getElementById(\"Pressure_einheit\").value;\r\n    const conductivity = parseFloat(document.getElementById(\"conductivity\").value) || null;\r\n    const conductivity_einheit = document.getElementById(\"conductivity_einheit\").value;\r\n    const absence_disinfectant = document.querySelector('input[name=\"absence_disinfectant\"]:checked').value;\r\n    const surfactants = document.querySelector('input[name=\"surfactants\"]:checked').value;\r\n    const cyanuric_acid = document.querySelector('input[name=\"cyanuric_acid\"]:checked').value;\r\n    const membranfree_chlorine_electrolysis = document.querySelector('input[name=\"membranfree_chlorine_electrolysis\"]:checked').value;\r\n    const wastewater = document.querySelector('input[name=\"wastewater\"]:checked').value;\r\n    const signal_output = document.getElementById(\"signal_output\").value;\r\n    const Sicherungsring = document.getElementById(\"Sicherungsring\").value;\r\n    const sensorDiv = document.getElementById(\"recommended-sensor\");\r\n\r\n    \/\/Sichtbarkeit der Cyanurs\u00e4ure-bezogenen Fragen basierend auf der Auswahl des Disinfectants steuern\r\n    togglecyanuric_acidVisibility(Disinfectant);\r\n\r\n    \/\/ Wenn versteckt, setze Werte auf \"Nein\" (0)\r\n    if (Disinfectant !== 'Free chlorine' || Disinfectant !== 'Total chlorine') {\r\n        \/\/ cyanuric_acid = 0;\r\n        \/\/ membranfree_chlorine_electrolysis = 0;\r\n        \/\/ absence_disinfectant = 0;\r\n    }\r\n\r\n    \/\/ Empfohlenen Sensor anzeigen\r\n    document.getElementById(\"recommended-sensor-titel\").style.display = \"block\";\r\n    document.getElementById(\"recommended-sensor\").style.display = \"block\";\r\n\r\n    \/\/ Pressure-Hinweis anzeigen\r\n    if ((Pressure_einheit === \"bar\" && Pressure > 0.5) || (Pressure_einheit === \"PSI\" && Pressure > 7.25)) {\r\n        document.getElementById(\"Pressure-hinweis\").style.display = \"block\";\r\n    } else {\r\n        document.getElementById(\"Pressure-hinweis\").style.display = \"none\";\r\n    }\r\n\r\n    \/\/ Passende Sensortypen dynamisch laden\r\n    if (Disinfectant) {\r\n        const rawParams = {\r\n            desinfektionsmittel: Disinfectant,\r\n            konz: Konz,\r\n            konz_einheit: Konz_einheit,\r\n            ph_wert: ph_wert,\r\n            temp: temp,\r\n            temp_einheit: Temp_einheit,\r\n            druck: Pressure,\r\n            Druck_einheit: Pressure_einheit,\r\n            leitfahigkeit: conductivity,\r\n            leitfahigkeit_einheit: conductivity_einheit,\r\n            abwesenheit_desinfektionsmittel: absence_disinfectant,\r\n            tenside: surfactants,\r\n            Cyanursaure: cyanuric_acid,\r\n            membranfreie_chlorelektrolyse: membranfree_chlorine_electrolysis,\r\n            schmutzwasser: wastewater,\r\n            signalausgang: signal_output,\r\n            sicherungsring: Sicherungsring\r\n        };\r\n\r\n\r\n        const params = new URLSearchParams();\r\n        \r\n        \/\/\"null\" Werte sollen nicht \u00fcbergeben werden.\r\n        \/\/Sonnst gibt es ein Problem mit 0\u00b0F.\r\n        Object.entries(rawParams).forEach(([key, value]) => {\r\n            if (\r\n                value !== null &&\r\n                value !== \"\" &&\r\n                value !== undefined &&\r\n                !(typeof value === \"number\" && isNaN(value))\r\n            ) {\r\n                params.set(key, value);\r\n            }\r\n        });\r\n\r\n\r\n        \/\/if (temp !== null) paramsObj.temp = temp;\r\n\r\n        fetch(`\/wp-content\/themes\/hello-theme-child\/sensorauswahltool\/get_sensors.php?${params.toString()}`)\r\n            .then(response => response.json())\r\n            .then(data => {\r\n                const sensors = data.sensors || [];\r\n                const false_sensors = data.false_sensors || [];\r\n\r\n                \/\/ Sicherungsring validieren\r\n                const finalSicherungsring = updateSicherungsringOptions(data.sensor_vorschlag, signal_output);\r\n\r\n                \/\/ sensor_vorschlag bauen\r\n                let sensor_vorschlag;\r\n\r\n                if (data.sensor_vorschlag) {\r\n                    if ((!data.sensor_vorschlag.startsWith(\"No matching\")) && (!data.sensor_vorschlag.startsWith(\"The entered\"))) {\r\n                        sensor_vorschlag = data.sensor_vorschlag + ' \/ ' + finalSicherungsring;\r\n                    } else {\r\n                        sensor_vorschlag = data.sensor_vorschlag;\r\n                    }\r\n                } else {\r\n                    sensor_vorschlag = '-';\r\n                }\r\n                \r\n                \/\/ Wenn kein spezifischer Sensor gefunden, aber ein Sensortyp m\u00f6glich ist, dann diesen anzeigen.\r\n                if ((data.sensors.length > 0) && data.sensor_vorschlag.startsWith(\"No matching\")) {\r\n\r\n                        \/\/ Absteigend sortieren nach Rang, um den besten Sensor zu finden\r\n                        data.sensors.sort((a, b) => b.rang - a.rang);\r\n\r\n                        \/\/sensor_vorschlag = data.sensor_vorschlag[0]['marke'] . '\u00ae ' . data.sensor_vorschlag[0]['typ'];\r\n                        sensor_vorschlag = data.sensors[0]['marke'] + '\u00ae ' + data.sensors[0]['typ'] + ' - Availability of selected signal output must be checked.'\r\n                }\r\n\r\n                \/\/Ausgew\u00e4hlten Sensor anzeigen\r\n                sensorDiv.innerText = sensor_vorschlag;\r\n                sensorDiv.style.display = \"block\";\r\n\r\n                \/\/ Helper function to check if a value is within specifications\r\n                function isWithinRange(sensorKey, sensorValue, userValue, userUnit) {\r\n                    if (sensorValue === null || sensorValue === undefined || sensorValue === \"\" || sensorValue === \"-\") return true;\r\n                    if (userValue === null || userValue === undefined || userValue === \"\") return true;\r\n                    \r\n                    \/\/ For boolean fields\r\n                    if (sensorKey === \"schmutzwasser\" || sensorKey === \"tenside\" || \r\n                        sensorKey === \"abw_des\" || sensorKey === \"cyanursaure\" || \r\n                        sensorKey === \"mem_frei_elektroly\") {\r\n                        const sensorBool = sensorValue === '\u2713' || sensorValue === 1 || sensorValue === '1';\r\n                        const userBool = parseInt(userValue) === 1;\r\n                        \/\/ If sensor value is \"-\" (not supported): within range only if user also doesn't need it\r\n                        if (sensorValue === \"-\") {\r\n                            return !userBool; \/\/ true if user doesn't need it (0)\r\n                        }\r\n                        \/\/ Within range if sensor doesn't require it OR user also wants it\r\n                        return !sensorBool || userBool;\r\n                    }\r\n                    \r\n                    \/\/ For concentration\r\n                    if (sensorKey === \"min_konz\" || sensorKey === \"max_konz\") {\r\n                        let sensorNum = parseFloat(sensorValue);\r\n                        let userNum = parseFloat(userValue);\r\n                        if (isNaN(sensorNum) || isNaN(userNum)) return true;\r\n\r\n                        \/\/Daten Debugging\r\n                        \/\/alert(JSON.stringify(sensorNum, null, 2));\r\n                        \r\n                        if (sensorKey === \"min_konz\") return sensorNum <= userNum;\r\n                        if (sensorKey === \"max_konz\") return sensorNum >= userNum;\r\n                    }\r\n                    \r\n                    \/\/ For pH\r\n                    if (sensorKey === \"min_ph\" || sensorKey === \"max_ph\") {\r\n                        let sensorNum = parseFloat(sensorValue);\r\n                        let userNum = parseFloat(userValue);\r\n                        if (isNaN(sensorNum) || isNaN(userNum)) return true;\r\n                        \r\n                        if (sensorKey === \"min_ph\") return sensorNum <= userNum;\r\n                        if (sensorKey === \"max_ph\") return sensorNum >= userNum;\r\n                    }\r\n                    \r\n                    \/\/ For temperature\r\n                    if (sensorKey === \"max_temp\") {\r\n                        let sensorNum = parseFloat(sensorValue);\r\n                        let userNum = parseFloat(userValue);\r\n                        if (isNaN(sensorNum) || isNaN(userNum)) return true;\r\n                        \r\n                        const tempUnit = userUnit || document.getElementById(\"Temp_einheit\").value;\r\n\r\n                        return sensorNum >= userNum;\r\n                    }\r\n                    \r\n                    \/\/ For pressure\r\n                    if (sensorKey === \"max_druck\") {\r\n                        let sensorNum = parseFloat(sensorValue);\r\n                        let userNum = parseFloat(userValue);\r\n                        if (isNaN(sensorNum) || isNaN(userNum)) return true;\r\n                        \r\n                        const pressureUnit = userUnit || document.getElementById(\"Pressure_einheit\").value;\r\n                        \r\n                        return sensorNum >= userNum;\r\n                    }\r\n                    \r\n                    \/\/ For conductivity\r\n                    if (sensorKey === \"min_leit\" || sensorKey === \"max_leit\") {\r\n                        let sensorNum = parseFloat(sensorValue);\r\n                        let userNum = parseFloat(userValue);\r\n                        if (isNaN(sensorNum) || isNaN(userNum)) return true;\r\n                        \r\n                        const LeitUnit = userUnit || document.getElementById(\"conductivity_einheit\").value;\r\n                        \r\n                        if (sensorKey === \"min_leit\") return sensorNum <= userNum;\r\n                        if (sensorKey === \"max_leit\") return sensorNum >= userNum;\r\n                    }\r\n                    \r\n                    return true;\r\n                }\r\n\r\n                \/\/ Find the top recommended sensor (highest rank)\r\n                let topSensorMarke = null;\r\n                let topSensorTyp = null;\r\n                if (sensors.length > 0) {\r\n                    const sortedSensors = [...sensors].sort((a, b) => {\r\n                        const rankA = parseFloat(a.rang);\r\n                        const rankB = parseFloat(b.rang);\r\n                        const aValid = !isNaN(rankA);\r\n                        const bValid = !isNaN(rankB);\r\n                        if (aValid && bValid) return rankB - rankA;\r\n                        if (aValid) return -1;\r\n                        if (bValid) return 1;\r\n                        return 0;\r\n                    });\r\n                    const maxRank = sortedSensors.reduce((max, sensor) => {\r\n                        const rank = parseFloat(sensor.rang);\r\n                        return isNaN(rank) ? max : Math.max(max, rank);\r\n                    }, -Infinity);\r\n                    const topSensor = sortedSensors.find(sensor => {\r\n                        const rank = parseFloat(sensor.rang);\r\n                        return !isNaN(rank) && rank === maxRank;\r\n                    });\r\n                    if (topSensor) {\r\n                        topSensorMarke = topSensor.marke;\r\n                        topSensorTyp = topSensor.typ;\r\n                    }\r\n                }\r\n                \r\n                \/\/ Build overview table\r\n                const overviewContainer = document.getElementById(\"overview-container\");\r\n                const overviewTable = document.getElementById(\"overview-sensors\");\r\n                const table = overviewTable.closest('table');\r\n                const thead = table.querySelector('thead');\r\n                \r\n                if (sensors.length > 0 || false_sensors.length > 0) {\r\n                    overviewContainer.style.display = \"block\";\r\n\r\n                    \/\/ Get all unique keys from all sensors for columns\r\n                    const allKeys = new Set(['marke', 'typ']);\r\n                    false_sensors.forEach(sensor => Object.keys(sensor).forEach(key => allKeys.add(key)));\r\n                    \r\n                    \/\/ Filter to displayable keys\r\n                    const displayKeys = ['marke', 'typ', 'schmutzwasser', 'tenside', 'abw_des', \r\n                                         'min_konz', 'max_konz', 'min_ph', 'max_ph', \r\n                                         'max_temp', 'max_druck', 'cyanursaure', \r\n                                         'mem_frei_elektroly', 'min_leit', 'max_leit'];\r\n                    \r\n                    const presentKeys = Array.from(allKeys).filter(k => displayKeys.includes(k));\r\n                    \r\n                    \/\/ Define display names for keys\r\n                    const keyDisplayNames = {\r\n                        marke: 'Brand',\r\n                        typ: 'Type',\r\n                        schmutzwasser: 'Wastewater',\r\n                        tenside: 'Surfactants',\r\n                        abw_des: 'AoD <span class=\"info-icon\">\u24d8<span class=\"tooltip\">Absence of disinfectant<\/span><\/span>',\r\n                        min_konz: 'min Conc. <span class=\"info-icon\">\u24d8<span class=\"tooltip\">minimum Concentration<\/span><\/span>',\r\n                        max_konz: 'max Conc. <span class=\"info-icon\">\u24d8<span class=\"tooltip\">maximum Concentration<\/span><\/span>',\r\n                        min_ph: 'min pH',\r\n                        max_ph: 'max pH',\r\n                        max_temp: 'max Temp.',\r\n                        max_druck: 'max Pressure',\r\n                        cyanursaure: 'CYA <span class=\"info-icon\">\u24d8<span class=\"tooltip\">Cyanuric acid<\/span><\/span>',\r\n                        mem_frei_elektroly: 'MFE <span class=\"info-icon\">\u24d8<span class=\"tooltip\">Membrane-free chlorine electrolysis<\/span><\/span>',\r\n                        min_leit: 'min Cond.',\r\n                        max_leit: 'max Cond.'\r\n                    };\r\n                    \r\n                    \/\/ Build header\r\n                    let headerHtml = '<tr style=\"background-color: #E9EFF5;\">';\r\n                    presentKeys.forEach(key => {\r\n                        if (keyDisplayNames[key]) {\r\n                            headerHtml += `<th style=\"padding: 8px; text-align: center; border: 1px solid #ddd;\">${keyDisplayNames[key]}<\/th>`;\r\n                        }\r\n                    });\r\n                    headerHtml += '<\/tr>';\r\n                    thead.innerHTML = headerHtml;\r\n                    \r\n                    \/\/ Build all rows\r\n                    let allRows = [];\r\n                    \r\n                    \/\/ Add suitable sensors (all criteria met - ALL cells green)\r\n                    if (sensors.length > 0) {\r\n                        const sortedSensors = [...sensors].sort((a, b) => {\r\n                            const rankA = parseFloat(a.rang);\r\n                            const rankB = parseFloat(b.rang);\r\n                            const aValid = !isNaN(rankA);\r\n                            const bValid = !isNaN(rankB);\r\n                            if (aValid && bValid) return rankB - rankA;\r\n                            if (aValid) return -1;\r\n                            if (bValid) return 1;\r\n                            return 0;\r\n                        });\r\n                        \r\n                        sortedSensors.forEach(sensor => {\r\n                            let row = '<tr';\r\n                            const isTop = topSensorMarke === sensor.marke && topSensorTyp === sensor.typ;\r\n                            if (isTop) {\r\n                                row += ' style=\"border-left: 4px solid #4CAF50;\"';\r\n                            }\r\n                            row += '>';\r\n                            \r\n                            presentKeys.forEach(key => {\r\n                                if (keyDisplayNames[key]) {\r\n                                    let value = '';\r\n                                    if (key === 'marke') value = sensor.marke;\r\n                                    else if (key === 'typ') value = sensor.typ;\r\n                                    else value = sensor[key] ?? '-';\r\n                                    \r\n                                    \/\/ Format value with units for numeric fields\r\n                                    if (value !== '-' && value !== null && value !== undefined && value !== \"\") {\r\n                                        if (key === \"min_konz\" || key === \"max_konz\") {\r\n                                            const u = document.getElementById(\"Konz_einheit\").value;\r\n                                            const displayUnit = u === \"mg_l\" ? \" mg\/l\" : u === \"prozent\" ? \" %\" : \" ppm\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"max_temp\") {\r\n                                            const u = document.getElementById(\"Temp_einheit\").value;\r\n                                            const displayUnit = u === \"fahrenheit\" ? \" \u00b0F\" : \" \u00b0C\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"max_druck\") {\r\n                                            const u = document.getElementById(\"Pressure_einheit\").value;\r\n                                            const displayUnit = u === \"PSI\" ? \" PSI\" : \" bar\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"min_leit\" || key === \"max_leit\") {\r\n                                            const u = document.getElementById(\"conductivity_einheit\").value;\r\n                                            const displayUnit = u === \"\u00b5Scm\" ? \" \u00b5S\/cm\" : \" mS\/cm\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"schmutzwasser\" || key === \"tenside\" || key === \"abw_des\" || key === \"cyanursaure\" || key === \"mem_frei_elektroly\") {\r\n                                            value = value === '\u2713' || value === 1 || value === '1' ? '\u2713' : '-';\r\n                                        }\r\n                                    }\r\n                                    \r\n                                    \/\/ Recommended sensor row: dark green, others: light green\r\n                                    const cellStyle = value === '-' ? 'background-color: #FFA07A;' : \r\n                                        (isTop \r\n                                            ? 'background-color: #2E7D32; color: white;' \r\n                                            : 'background-color: #C8E6C9;');\r\n                                    const style = `padding: 8px; text-align: center; border: 1px solid #ddd; ${cellStyle}`;\r\n                                    row += `<td style=\"${style}\">${value}<\/td>`;\r\n                                }\r\n                            });\r\n                            row += '<\/tr>';\r\n                            allRows.push(row);\r\n                        });\r\n                    }\r\n                    \r\n                    \/\/ Add not recommended sensors with color coding\r\n                    if (false_sensors.length > 0) {\r\n                        false_sensors.forEach(sensor => {\r\n                            let row = '<tr>';\r\n                            \r\n                            presentKeys.forEach(key => {\r\n                                if (keyDisplayNames[key]) {\r\n                                    let value = sensor[key];\r\n                                    let isWithinRangeFlag = false;\r\n                                    \r\n                                    if (value !== null && value !== undefined && value !== \"\") {\r\n                                        let userValue = null;\r\n                                        let userUnit = null;\r\n                                        \r\n                                        switch(key) {\r\n                                            case 'min_konz':\r\n                                            case 'max_konz':\r\n                                                userValue = document.getElementById(\"chlorine-Concentration\").value;\r\n                                                userUnit = document.getElementById(\"Konz_einheit\").value;\r\n                                                break;\r\n                                            case 'min_ph':\r\n                                            case 'max_ph':\r\n                                                userValue = document.getElementById(\"pH-value\").value;\r\n                                                break;\r\n                                            case 'max_temp':\r\n                                                userValue = document.getElementById(\"temp\").value;\r\n                                                userUnit = document.getElementById(\"Temp_einheit\").value;\r\n                                                break;\r\n                                            case 'max_druck':\r\n                                                userValue = document.getElementById(\"Pressure\").value;\r\n                                                userUnit = document.getElementById(\"Pressure_einheit\").value;\r\n                                                break;\r\n                                            case 'min_leit':\r\n                                            case 'max_leit':\r\n                                                userValue = document.getElementById(\"conductivity\").value;\r\n                                                userUnit = document.getElementById(\"conductivity_einheit\").value;\r\n                                                break;\r\n                                            case 'schmutzwasser':\r\n                                                userValue = document.querySelector('input[name=\"wastewater\"]:checked')?.value;\r\n                                                break;\r\n                                            case 'tenside':\r\n                                                userValue = document.querySelector('input[name=\"surfactants\"]:checked')?.value;\r\n                                                break;\r\n                                            case 'abw_des':\r\n                                                userValue = document.querySelector('input[name=\"absence_disinfectant\"]:checked')?.value;\r\n                                                break;\r\n                                            case 'cyanursaure':\r\n                                                userValue = document.querySelector('input[name=\"cyanuric_acid\"]:checked')?.value;\r\n                                                break;\r\n                                            case 'mem_frei_elektroly':\r\n                                                userValue = document.querySelector('input[name=\"membranfree_chlorine_electrolysis\"]:checked')?.value;\r\n                                                break;\r\n                                        }\r\n                                        \r\n                                        if (userValue !== null && userValue !== undefined && userValue !== \"\") {\r\n                                            isWithinRangeFlag = isWithinRange(key, value, userValue, userUnit);\r\n                                        }\r\n                                        \r\n                                        \/\/ Add units for numeric values\r\n                                        if (key === \"min_konz\" || key === \"max_konz\") {\r\n                                            const u = document.getElementById(\"Konz_einheit\").value;\r\n                                            const displayUnit = u === \"mg_l\" ? \" mg\/l\" : u === \"prozent\" ? \" %\" : \" ppm\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"max_temp\") {\r\n                                            const u = document.getElementById(\"Temp_einheit\").value;\r\n                                            const displayUnit = u === \"fahrenheit\" ? \" \u00b0F\" : \" \u00b0C\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"max_druck\") {\r\n                                            const u = document.getElementById(\"Pressure_einheit\").value;\r\n                                            const displayUnit = u === \"PSI\" ? \" PSI\" : \" bar\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"min_leit\" || key === \"max_leit\") {\r\n                                            const u = document.getElementById(\"conductivity_einheit\").value;\r\n                                            const displayUnit = u === \"\u00b5Scm\" ? \" \u00b5S\/cm\" : \" mS\/cm\";\r\n                                            value = value + displayUnit;\r\n                                        } else if (key === \"schmutzwasser\" || key === \"tenside\" || key === \"abw_des\" || key === \"cyanursaure\" || key === \"mem_frei_elektroly\") {\r\n                                            value = value === '\u2713' || value === 1 || value === '1' ? '\u2713' : '-';\r\n                                        }\r\n                                    }\r\n                                    \r\n                                    const cellStyle = value === '-' ? 'background-color: #FFA07A;' : \r\n                                        (isWithinRangeFlag ? 'background-color: #C8E6C9;' : 'background-color: #FFA07A;');\r\n                                    const style = `padding: 8px; text-align: center; border: 1px solid #ddd; ${cellStyle}`;\r\n                                    row += `<td style=\"${style}\">${value}<\/td>`;\r\n                                }\r\n                            });\r\n                            row += '<\/tr>';\r\n                            allRows.push(row);\r\n                        });\r\n                    }\r\n                    \r\n                    overviewTable.innerHTML = allRows.join('');\r\n                }\r\n            })\r\n            .catch(error => {\r\n                console.error(\"Error loading data:\", error);\r\n                const overviewContainer = document.getElementById(\"overview-container\");\r\n                overviewContainer.style.display = \"block\";\r\n                document.getElementById(\"overview-sensors\").innerHTML = `\r\n                    <tr>\r\n                        <td colspan=\"2\" style=\"padding: 8px; text-align: center;\">Error loading data.<\/td>\r\n                    <\/tr>\r\n                `;\r\n            });\r\n\r\n\r\n\r\n\r\n\r\n    } else {\r\n        document.getElementById(\"overview-container\").style.display = \"none\";\r\n    }\r\n\r\n    \r\n}\r\n\r\n\r\nfunction formatNumber(value) {\r\n    return parseFloat(parseFloat(value).toFixed(3));\r\n}\r\n\r\nfunction convertValue(value, fromUnit, toUnit, factor, offsetFrom = 0, offsetTo = 0) {\r\n    return formatNumber(((parseFloat(value) - offsetFrom) * factor) + offsetTo);\r\n}\r\n\r\nfunction updateUnitDependentValues() {\r\n    const konz = document.getElementById(\"chlorine-Concentration\");\r\n    const konzUnit = document.getElementById(\"Konz_einheit\").value;\r\n\r\n    const temp = document.getElementById(\"temp\");\r\n    const tempUnit = document.getElementById(\"Temp_einheit\").value;\r\n\r\n    const Pressure = document.getElementById(\"Pressure\");\r\n    const PressureUnit = document.getElementById(\"Pressure_einheit\").value;\r\n\r\n    const leit = document.getElementById(\"conductivity\");\r\n    const leitUnit = document.getElementById(\"conductivity_einheit\").value;\r\n\r\n    \/\/ Concentration\r\n\r\n    konz.min = 0;\r\n    konz.max = 1000000;\r\n\r\n    if (konzUnit === \"prozent\") {\r\n        konz.max = konz.max \/ 10000;                \r\n    }\r\n\r\n    \/\/ Eingabebeschr\u00e4nkung f\u00fcr tempentration\r\n    konz.oninput = function () {\r\n        \/\/ Ersetze Komma durch Punkt f\u00fcr die interne Verarbeitung\r\n        let numericValue = parseFloat(this.value.replace(\",\", \".\"));\r\n\r\n        \/\/ Pr\u00fcfe, ob der Wert au\u00dferhalb des Bereichs liegt\r\n        if (numericValue < konz.min || numericValue > konz.max) {\r\n            this.value = Math.min(Math.max(numericValue, konz.min), konz.max);\r\n        }\r\n    }; \r\n\r\n    \/\/ Temperatur\r\n\r\n    temp.min = 0;\r\n    temp.max = 300;\r\n\r\n    \/\/ if (tempUnit === 'fahrenheit') {\r\n    \/\/     temp.min = (temp.min * 1.8) + 32;\r\n    \/\/ }\r\n\r\n\r\n    \/\/ Eingabebeschr\u00e4nkung f\u00fcr tempentration\r\n    temp.oninput = function () {\r\n        \/\/ Ersetze Komma durch Punkt f\u00fcr die interne Verarbeitung\r\n        let numericValue = parseFloat(this.value.replace(\",\", \".\"));\r\n\r\n        \/\/ Pr\u00fcfe, ob der Wert au\u00dferhalb des Bereichs liegt\r\n        if (numericValue < temp.min || numericValue > temp.max) {\r\n            this.value = Math.min(Math.max(numericValue, temp.min), temp.max);\r\n        }\r\n    }; \r\n\r\n    \/\/ Pressure\r\n\r\n    Pressure.min = 0;\r\n    Pressure.max = 20;\r\n\r\n    if (PressureUnit === 'PSI') {\r\n        Pressure.min = Pressure.min * 14.5038;\r\n        Pressure.max = Pressure.max * 14.5038;              \r\n    }\r\n    \/\/ Eingabebeschr\u00e4nkung f\u00fcr Pressureentration\r\n    Pressure.oninput = function () {\r\n        \/\/ Ersetze Komma durch Punkt f\u00fcr die interne Verarbeitung\r\n        let numericValue = parseFloat(this.value.replace(\",\", \".\"));\r\n\r\n        \/\/ Pr\u00fcfe, ob der Wert au\u00dferhalb des Bereichs liegt\r\n        if (numericValue < Pressure.min || numericValue > Pressure.max) {\r\n            this.value = Math.min(Math.max(numericValue, Pressure.min), Pressure.max);\r\n        }\r\n    }; \r\n\r\n    \/\/ Conductivity\r\n\r\n    leit.min = 0;\r\n    leit.max = 250;\r\n\r\n    if (leitUnit === '\u00b5Scm') {\r\n        leit.min = leit.min * 1000;  \r\n        leit.max = leit.max * 1000;               \r\n    }\r\n\r\n    \/\/ Eingabebeschr\u00e4nkung f\u00fcr leitentration\r\n    leit.oninput = function () {\r\n        \/\/ Ersetze Komma durch Punkt f\u00fcr die interne Verarbeitung\r\n        let numericValue = parseFloat(this.value.replace(\",\", \".\"));\r\n\r\n        \/\/ Pr\u00fcfe, ob der Wert au\u00dferhalb des Bereichs liegt\r\n        if (numericValue < leit.min || numericValue > leit.max) {\r\n            this.value = Math.min(Math.max(numericValue, leit.min), leit.max);\r\n        }\r\n    }; \r\n\r\n}\r\n\r\n\r\nfunction updateSicherungsringOptions(sensor_vorschlag, signal_output) {\r\n    const select = document.getElementById(\"Sicherungsring\");\r\n    const options = select.querySelectorAll(\"option\");\r\n\r\n    const isCCF = sensor_vorschlag && sensor_vorschlag.includes(\"CCF\");\r\n\r\n    options.forEach(opt => {\r\n        const val = opt.value;\r\n        let enabled = true;\r\n\r\n        if (isCCF) {\r\n            if (signal_output === \"4-20mA\" || signal_output === \"-2V (analog)\") {\r\n                enabled = (val === \"no groove\" || val === \"65mm\");\r\n            }\r\n\r\n            if (signal_output === \"Modbus\" || signal_output === \"-2V (digital)\") {\r\n                enabled = (\r\n                    val === \"no groove\" ||\r\n                    val === \"65mm\" ||\r\n                    val === \"82mm\" ||\r\n                    val === \"98mm\" ||\r\n                    val === \"102mm\" ||\r\n                    val === \"107mm\"\r\n                );\r\n            }\r\n        }\r\n\r\n        opt.disabled = !enabled;\r\n    });\r\n\r\n    \/\/ aktueller Wert pr\u00fcfen\r\n    if (select.selectedOptions[0].disabled) {\r\n        select.value = \"no groove\";\r\n    }\r\n\r\n    \/\/ finalen Wert zur\u00fcckgeben\r\n    return select.value;\r\n}\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n    updateUnitDependentValues();\r\n});\r\n\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Sensor Selection Tool Which sensor do I need? Parameters Disinfectant Please selectFree chlorineTotal chlorineChlorine dioxideBromineChloriteOzoneHydrogen peroxidePeracetic acid Concentration ppmmg\/l% pH value<\/p>\n","protected":false},"author":26,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-18046","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Sensor Selection Tool - REISS GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sensor Selection Tool - REISS GmbH\" \/>\n<meta property=\"og:description\" content=\"Sensor Selection Tool Which sensor do I need? Parameters Disinfectant Please selectFree chlorineTotal chlorineChlorine dioxideBromineChloriteOzoneHydrogen peroxidePeracetic acid Concentration ppmmg\/l% pH value\" \/>\n<meta property=\"og:url\" content=\"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"REISS GmbH\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-02T10:48:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/reiss-gmbh.com\\\/en\\\/sensor-selection-tool\\\/\",\"url\":\"https:\\\/\\\/reiss-gmbh.com\\\/en\\\/sensor-selection-tool\\\/\",\"name\":\"Sensor Selection Tool - REISS GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/reiss-gmbh.com\\\/#website\"},\"datePublished\":\"2026-06-08T14:21:33+00:00\",\"dateModified\":\"2026-07-02T10:48:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/reiss-gmbh.com\\\/en\\\/sensor-selection-tool\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/reiss-gmbh.com\\\/en\\\/sensor-selection-tool\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/reiss-gmbh.com\\\/en\\\/sensor-selection-tool\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/reiss-gmbh.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sensor Selection Tool\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/reiss-gmbh.com\\\/#website\",\"url\":\"https:\\\/\\\/reiss-gmbh.com\\\/\",\"name\":\"REISS GmbH\",\"description\":\"we create sensor solutions\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/reiss-gmbh.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Sensor Selection Tool - REISS GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/","og_locale":"en_US","og_type":"article","og_title":"Sensor Selection Tool - REISS GmbH","og_description":"Sensor Selection Tool Which sensor do I need? Parameters Disinfectant Please selectFree chlorineTotal chlorineChlorine dioxideBromineChloriteOzoneHydrogen peroxidePeracetic acid Concentration ppmmg\/l% pH value","og_url":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/","og_site_name":"REISS GmbH","article_modified_time":"2026-07-02T10:48:40+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/","url":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/","name":"Sensor Selection Tool - REISS GmbH","isPartOf":{"@id":"https:\/\/reiss-gmbh.com\/#website"},"datePublished":"2026-06-08T14:21:33+00:00","dateModified":"2026-07-02T10:48:40+00:00","breadcrumb":{"@id":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/reiss-gmbh.com\/en\/sensor-selection-tool\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/reiss-gmbh.com\/"},{"@type":"ListItem","position":2,"name":"Sensor Selection Tool"}]},{"@type":"WebSite","@id":"https:\/\/reiss-gmbh.com\/#website","url":"https:\/\/reiss-gmbh.com\/","name":"REISS GmbH","description":"we create sensor solutions","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/reiss-gmbh.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/pages\/18046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/comments?post=18046"}],"version-history":[{"count":10,"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/pages\/18046\/revisions"}],"predecessor-version":[{"id":18071,"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/pages\/18046\/revisions\/18071"}],"wp:attachment":[{"href":"https:\/\/reiss-gmbh.com\/en\/wp-json\/wp\/v2\/media?parent=18046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}