{"id":204,"date":"2019-11-16T22:21:21","date_gmt":"2019-11-16T22:21:21","guid":{"rendered":"https:\/\/dieter.dimo4u.de\/?page_id=204"},"modified":"2022-05-19T11:31:55","modified_gmt":"2022-05-19T10:31:55","slug":"temperatursensormodul-fuer-8-x-ds18b20","status":"publish","type":"page","link":"https:\/\/dieter.dimo4u.de\/?page_id=204","title":{"rendered":"Temperatursensormodul f\u00fcr 8 x DS18B20"},"content":{"rendered":"\n<p>Dieses Modul habe ich f\u00fcr das Monitoring der Heizungstherme gebaut. Basierend auf dem Modul f\u00fcr die Steuerung der Umw\u00e4lzpumpe wurde fast die gleiche Schaltung verwendet. Relais und Spannungswandler sind hier nicht verwendet.<\/p>\n\n\n\n<p>Als Software wird wieder die bew\u00e4hrte TASMOTA verwendet. Die Auswertung der Sensoren erfolgt auch hier per Script.<\/p>\n\n\n<pre class=\"wp-block-code has-accent-color has-buttons-text-background-color has-text-color has-background\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span>mem1 websend &#91;<span class=\"hljs-number\">192.168<\/span><span class=\"hljs-number\">.1<\/span><span class=\"hljs-number\">.48<\/span>] \/hz_to_mysql.php?DS1820&#91;         <span class=\"hljs-comment\">\/\/ http-Kommando (Teil 1)<\/span>\n<\/span><\/span><span class='shcb-loc'><span>mem2 ]=                                                      <span class=\"hljs-comment\">\/\/ http-Kommando (Teil 2)<\/span>\n<\/span><\/span><span class='shcb-loc'><span>mem4 publish stat\/tasmota_hz\/DS1820-                         <span class=\"hljs-comment\">\/\/ mqtt-Kommando (Teil 1)<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>rule1\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-1<\/span><span class=\"hljs-comment\">#temperature do %mem4%1 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-2<\/span><span class=\"hljs-comment\">#temperature do %mem4%2 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-3<\/span><span class=\"hljs-comment\">#temperature do %mem4%3 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-4<\/span><span class=\"hljs-comment\">#temperature do %mem4%4 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-5<\/span><span class=\"hljs-comment\">#temperature do %mem4%5 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-6<\/span><span class=\"hljs-comment\">#temperature do %mem4%6 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-7<\/span><span class=\"hljs-comment\">#temperature do %mem4%7 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-8<\/span><span class=\"hljs-comment\">#temperature do %mem4%8 %value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>rule2\n<\/span><\/span><span class='shcb-loc'><span>on Time<span class=\"hljs-comment\">#Initialized do <\/span>\n<\/span><\/span><span class='shcb-loc'><span>backlog mem1 websend &#91;<span class=\"hljs-number\">192.168<\/span><span class=\"hljs-number\">.1<\/span><span class=\"hljs-number\">.48<\/span>] \/hz_to_mysql.php?DS1820&#91;; mem2 ]=; mem4 publish stat\/tasmota_hz\/DS1820-;  endon\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>rule3\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-1<\/span><span class=\"hljs-comment\">#temperature do %mem1%1%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-2<\/span><span class=\"hljs-comment\">#temperature do %mem1%2%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-3<\/span><span class=\"hljs-comment\">#temperature do %mem1%3%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-4<\/span><span class=\"hljs-comment\">#temperature do %mem1%4%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-5<\/span><span class=\"hljs-comment\">#temperature do %mem1%5%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-6<\/span><span class=\"hljs-comment\">#temperature do %mem1%6%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-7<\/span><span class=\"hljs-comment\">#temperature do %mem1%7%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>on tele-DS18S20<span class=\"hljs-number\">-8<\/span><span class=\"hljs-comment\">#temperature do %mem1%8%mem2%%value% endon<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Die Daten werden mittels HTML_GET an ein PHP-Script auf meinem Server \u00fcbergeben und dort in der Mysql-Datenbank abgelegt.<\/p>\n\n\n<pre class=\"wp-block-code has-buttons-text-background-color has-background\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/*<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\tProgramm f\u00fcr Eintragen der DS1820-Sensorenwerte in die MYSQL-Datenbank<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\terwartet in URL Parameter f\u00fcr jeden Sensor hz_to_mysql.php?id&#91;1]=27.7&amp;id&#91;2]=35.4<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\twenn keine Fehler, dann Output \"MYSQL OK.\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\tBeispiel-URL: \/\/SERVER\/hz_to_mysql.php?id&#91;4]=27.7<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\tBeispiel-URL: \/\/SERVER\/hz_to_mysql.php?id&#91;1]=27.7&amp;id&#91;2]=35.4<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\tben\u00f6tigt mysql.php mit folgenden Variablen:<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\t$DatabaseHost<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\t$DatabaseUser<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\t$DatabasePassword<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\t$GWS_Database<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\t$GWS_TableSensor<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">*\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span>$Sensor_Key=<span class=\"hljs-string\">\"DS1820\"<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>$DS1820 = <span class=\"hljs-keyword\">array<\/span>();\t\t\t<span class=\"hljs-comment\">\/\/ Array &#91;Sensornummer -&gt; Wert]<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/ \u00fcbergebene Werte der Schl\u00fcssel holen<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> (array_key_exists($Sensor_Key,$_GET))    \n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">foreach<\/span>($_GET&#91;$Sensor_Key] <span class=\"hljs-keyword\">AS<\/span> $key =&gt; $val)               <span class=\"hljs-comment\">\/\/ Auswerten   Sensor - Value}<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t{ \n<\/span><\/span><span class='shcb-loc'><span>\t\t$key = intval($key); \t\t\t<span class=\"hljs-comment\">\/\/ Sensornummer<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t$value = floatval($val);\t\t<span class=\"hljs-comment\">\/\/ Wert<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t$DS1820&#91;$key]= $value;\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\t\techo \"Key = \".$key.\"   Value = \".$value.\"\";<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">require_once<\/span>(<span class=\"hljs-string\">'mysql.php'<\/span>);\t\t\t\t\t<span class=\"hljs-comment\">\/\/Konfiguration MYSQL-connection<\/span>\n<\/span><\/span><span class='shcb-loc'><span>$db_link = mysqli_connect($DatabaseHost, $DatabaseUser, $DatabasePassword, $GWS_Database);\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> (!$db_link){ <span class=\"hljs-keyword\">DIE<\/span>(<span class=\"hljs-string\">\"keine Verbindung zur DB\"<\/span>); } \n<\/span><\/span><span class='shcb-loc'><span>mysqli_set_charset($db_link, <span class=\"hljs-string\">'utf8'<\/span>);\t    <span class=\"hljs-comment\">\/\/ Zeichensatz auswaehlen<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>$table = $GWS_Table_hz_sensor;\n<\/span><\/span><span class='shcb-loc'><span>$sql = <span class=\"hljs-string\">\"select * from  \"<\/span>.$table;\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> ($result = mysqli_query($db_link,$sql))\n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t$Count_Sensors = mysqli_num_rows($result);\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">else<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Fehler bei Query_Table_sensors: \"<\/span>.mysqli_error($db_link);\t\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\t\n<\/span><\/span><span class='shcb-loc'><span>mysqli_free_result($result);    \t<span class=\"hljs-comment\">\/* free result set *\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>$table = $GWS_Table_hz;\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>$time = time();\t\t<span class=\"hljs-comment\">\/\/aktuelle Zeit holen<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/ Strings f\u00fcr MYSQL bauen<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t$data =<span class=\"hljs-string\">\"\"<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">for<\/span> ($i=<span class=\"hljs-number\">1<\/span>;$i&lt;=$Count_Sensors;$i++) \n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t\t<span class=\"hljs-keyword\">if<\/span> ($DS1820&#91;$i] != <span class=\"hljs-string\">\"\"<\/span>) {$data = $data.<span class=\"hljs-string\">\"S\"<\/span>.$i.<span class=\"hljs-string\">\" = \"<\/span>.$DS1820&#91;$i].<span class=\"hljs-string\">\" , \"<\/span>;}\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\t$data = trim($data,<span class=\"hljs-string\">\" , \"<\/span>);\t<span class=\"hljs-comment\">\/\/ letztes Komma und Leerzeichen entfernen<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/\/\techo $data;<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t$sql = \n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-string\">\"INSERT INTO \"<\/span> .$table.<span class=\"hljs-string\">\" SET \"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t.<span class=\"hljs-string\">\" datetime = DATE_FORMAT(FROM_UNIXTIME(\"<\/span>.$time.<span class=\"hljs-string\">\"),\\\"%Y-%m-%d %H:%i:00\\\") , \"<\/span>.$data.<span class=\"hljs-string\">\" ON DUPLICATE KEY UPDATE \"<\/span>.$data;\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">echo<\/span> nl2br($sql).<span class=\"hljs-string\">\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-string\">\"<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> ($result = mysqli_query($db_link,$sql))\n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">if<\/span> ($result != <span class=\"hljs-number\">0<\/span> )\n<\/span><\/span><span class='shcb-loc'><span>\t\t{<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"MYSQL OK.\\n\"<\/span>;}\t<span class=\"hljs-comment\">\/\/ wenn Eintrag in Datenbank geklappt hat --&gt; ok. melden<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">else<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t{\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Fehler bei Query_Write_New_Data: \"<\/span>.mysqli_error($db_link);\t\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>mysqli_free_result($result);    \t\t<span class=\"hljs-comment\">\/\/ free result set<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-keyword\">true<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>\t{\t\n<\/span><\/span><span class='shcb-loc'><span>    $loeschen = <span class=\"hljs-string\">\"DELETE FROM \"<\/span>.$table.<span class=\"hljs-string\">\" WHERE DATEDIFF(NOW(), datetime) &gt;= 20\"<\/span>;\n<\/span><\/span><span class='shcb-loc'><span>    $result = mysqli_query($db_link, $loeschen);\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">if<\/span>(!$result)\t\t<span class=\"hljs-comment\">\/\/ hier sollte die Datenbank Werte liefern<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t\t{\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">DIE<\/span>(<span class=\"hljs-string\">'Ung\u00fcltige Abfrage: '<\/span> . mysql_error());\n<\/span><\/span><span class='shcb-loc'><span>\t\t}\n<\/span><\/span><span class='shcb-loc'><span>\t<span class=\"hljs-keyword\">else<\/span> {\tmysqli_free_result($result); }\t<span class=\"hljs-comment\">\/\/ free result set<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\t}\n<\/span><\/span><span class='shcb-loc'><span>mysqli_close($db_link);\t\t\t\t<span class=\"hljs-comment\">\/\/ Datenbank schliessen <\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-meta\">?&gt;<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>","protected":false},"excerpt":{"rendered":"<p>Dieses Modul habe ich f\u00fcr das Monitoring der Heizungstherme gebaut. Basierend auf dem Modul f\u00fcr die Steuerung der Umw\u00e4lzpumpe wurde fast die gleiche Schaltung verwendet. Relais und Spannungswandler&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"template-full-width.php","meta":{"footnotes":""},"class_list":["post-204","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=204"}],"version-history":[{"count":20,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/204\/revisions"}],"predecessor-version":[{"id":555,"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=\/wp\/v2\/pages\/204\/revisions\/555"}],"wp:attachment":[{"href":"https:\/\/dieter.dimo4u.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}