{"id":1206,"date":"2023-10-22T15:47:11","date_gmt":"2023-10-22T13:47:11","guid":{"rendered":"https:\/\/www.gressly.ch\/?page_id=1206"},"modified":"2023-10-24T20:15:55","modified_gmt":"2023-10-24T18:15:55","slug":"wifi-sensor","status":"publish","type":"page","link":"https:\/\/www.gressly.ch\/index.php\/elektronik\/wifi-sensor\/","title":{"rendered":"WiFi-Sensor"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Relais-Steuerung und Luftmessung mittels Raspberry Pico W<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-1024x768.jpg\" alt=\"\" class=\"wp-image-1207\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-1024x768.jpg 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-300x225.jpg 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-768x576.jpg 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-1536x1152.jpg 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/P_20231022_150257-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Elektronik ist eine simple Schaltung eines Relais (Blau) mittels einem Raspberry Pico W. Das W steht f\u00fcr Wlan, d.h. das Ganze kann mittels WiFi mit dem Heimnetz kommunizieren und so ferngesteuert werden. Zus\u00e4tzlich misst der DHT22-Sensor auf der Seite auch die Luft-Temperatur und -Feuchtigkeit. Die Stromversorgung f\u00fcr den Raspberry und den Sensor kommt vom 5V Wandler (Schwarz), welcher vom 230V AC Anschluss (Kabel) gespiesen wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Messwerte erh\u00e4lt man auf HTTP-Request in JSON als Antwort:<\/p>\n\n\n\n<pre class=\"wp-block-code has-background\" style=\"background-color:#abb7c263\"><code>\/\/ http:\/\/picow\/values\n\n{\n  \"switch\": 0,\n  \"humidity\": 52.1,\n  \"temperature\": 24.5\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So kann man die Werte z.B. ganz einfach mit OpenHAB lesen und darstellen. Nat\u00fcrlich kann der Schalter auch umgelegt werden. Dies geschieht indem man die URL mit dem neuen Wert aufruft:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;picow\/values?switch=on<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Und schon hat die eingebaute Steckdose 230V und das daran angeschlossene Ger\u00e4t wird mit Energie versorgt. Hier der MicroPython Code, der dies erm\u00f6glicht:<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<pre class=\"wp-block-preformatted has-background\" style=\"background-color:#abb7c261\">from phew import server, connect_to_wifi\nimport json, dht\nfrom machine import Pin\n\nconnect_to_wifi(\"ssid\", \"pwd\")\n\nsensor = dht.DHT22(Pin(16))\nswitch = Pin(5, Pin.OUT)\n\n@server.route(\"\/values\", methods=[\"GET\"])\ndef values(request):\n    sensor.measure()\n    if \"switch\" in request.query:\n        state = request.query[\"switch\"]\n        if state.lower() == 'on' or state.lower() == 'true' or state == '1' :\n            switch.value(1)\n        if state.lower() == 'off' or state.lower() == 'false' or state == '0':\n            switch.value(0)\n        \n    x = {\n      \"humidity\": sensor.humidity(),\n      \"temperature\": sensor.temperature(),\n      \"switch\": switch.value()\n    }\n    \n    return json.dumps(x)\n\n@server.catchall()\ndef catchall(request):\n  return \"Not found\", 404\n\nserver.run()\n<\/pre>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr den Webserver verwende ich <a href=\"https:\/\/github.com\/pimoroni\/phew\">Phew<\/a> &#8211; das ist eine sehr einfache Weise auf MicroPython einen Webserver zu starten. Achtung, Phew funktioniert nicht auf CircuitPython. Zum Programmieren des Pico verwende ich <a href=\"https:\/\/thonny.org\/\">Thonny<\/a>, musste aber um Phew zu installieren auf die Version 4.0.1 f\u00fcr Windows 10 (64 Bit) zur\u00fcckgreifen. Mit der Version 4.1.2 gings bei mir nicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Verkabelung ist relativ simpel. Wer mit einer 230V Installation arbeitet, sollte sich den Regeln vertraut sein oder einen Fachmann befragen. Je nachdem an welchem GP-Pin am Pico man die Ger\u00e4te verbindet, muss man den Programmcode entsprechend anpassen. Der Sensor (Gelb) ist auf dem Schema an GP16 und der Steuerausgang f\u00fcr das Relais (Violett) am Pin 5. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"850\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1-1024x850.png\" alt=\"\" class=\"wp-image-1234\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1-1024x850.png 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1-300x249.png 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1-768x638.png 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1-1536x1275.png 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/temphumswitch_schema-1.png 2016w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Verbindung mit openHAB<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nun k\u00f6nnte man eine komplette Logik in dem Raspberry Pico programmieren, so dass dieser entsprechend das Relais ein und ausschaltet. Diese hinterlege ich aber in meinem openHAB, so ist alles zentral in einer Einheit. Infos, wie man REST-Schnittstellen mit openHAB anbindet habe ich hier dokumentiert: <a href=\"https:\/\/www.gressly.ch\/index.php\/openhab\/gerate-mit-rest-api-steuern\/\" data-type=\"page\" data-id=\"1023\">Ger\u00e4te mit REST API steuern<\/a>. Der kniffligste Punkt hierbei ist das senden des Wertes f\u00fcrs Ein- und Ausschalten. Dazu muss die Command-URL-Erweiterung verwendet werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"688\" height=\"1024\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1-688x1024.png\" alt=\"\" class=\"wp-image-1214\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1-688x1024.png 688w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1-201x300.png 201w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1-768x1143.png 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1-1032x1536.png 1032w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1.png 1129w\" sizes=\"auto, (max-width: 688px) 100vw, 688px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Auch zum darstellen der Werte als Grafik kann man openHAB einsetzen. Das sieht dann etwa so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"754\" src=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1024x754.png\" alt=\"\" class=\"wp-image-1208\" srcset=\"https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1024x754.png 1024w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-300x221.png 300w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-768x566.png 768w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image-1536x1131.png 1536w, https:\/\/www.gressly.ch\/wp-content\/uploads\/2023\/10\/image.png 1590w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die Linien sind wohl selbsterkl\u00e4rend. Die gr\u00fcnen Bereiche zeigen, wann der Schalter auf Ein stand und somit der daran angeh\u00e4ngte Luftentfeuchter aktiv war. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Und hier Links zum Shop wo ich die Komponenten gekauft habe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.bastelgarage.ch\/raspberry-pi-pico-w-mikrocontroller-mit-wifi\">Raspberry Pico W<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/hlk-pm01-230v-nach-5v-step-down-abwartswandler\">Trafo<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/1-kanal-relais-modul\">Relais<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/dht22-temperatur-und-luftfeuchtigkeitssensor\">Sensor<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.bastelgarage.ch\/kunststoffgehause-gehause-ip66-transparent-m\">Geh\u00e4use<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Relais-Steuerung und Luftmessung mittels Raspberry Pico W Diese Elektronik ist eine simple Schaltung eines Relais (Blau) mittels einem Raspberry Pico W. Das W steht f\u00fcr Wlan, d.h. das Ganze kann mittels WiFi mit dem Heimnetz kommunizieren und so ferngesteuert werden. Zus\u00e4tzlich misst der DHT22-Sensor auf der Seite auch die Luft-Temperatur und -Feuchtigkeit. Die Stromversorgung f\u00fcr den Raspberry und den Sensor kommt vom 5V Wandler (Schwarz), welcher vom 230V AC Anschluss (Kabel) gespiesen wird. Die Messwerte erh\u00e4lt man auf HTTP-Request in JSON als Antwort: So kann man die Werte z.B. ganz einfach mit OpenHAB lesen und darstellen. Nat\u00fcrlich kann der Schalter auch umgelegt werden. Dies geschieht indem man die URL mit dem neuen Wert aufruft: Und schon hat die eingebaute Steckdose 230V und das daran angeschlossene Ger\u00e4t wird mit Energie versorgt. Hier der MicroPython Code, der dies erm\u00f6glicht: from phew import server, connect_to_wifi import json, dht from machine import Pin connect_to_wifi(&#8220;ssid&#8221;, &#8220;pwd&#8221;) sensor = dht.DHT22(Pin(16)) switch = Pin(5, Pin.OUT) @server.route(&#8220;\/values&#8221;, methods=[&#8220;GET&#8221;]) def values(request): sensor.measure() if &#8220;switch&#8221; in request.query: state = request.query[&#8220;switch&#8221;] if state.lower() == &#8216;on&#8217; or state.lower() == &#8216;true&#8217; or state == &#8216;1&#8217; : switch.value(1) if state.lower() == &#8216;off&#8217; or state.lower() == &#8216;false&#8217; or state == &#8216;0&#8217;: switch.value(0) x = { &#8220;humidity&#8221;: sensor.humidity(), &#8220;temperature&#8221;: sensor.temperature(), &#8220;switch&#8221;: switch.value() } return json.dumps(x) @server.catchall() def catchall(request): return &#8220;Not found&#8221;, 404 server.run() F\u00fcr den Webserver verwende ich Phew &#8211; das ist eine sehr einfache Weise auf MicroPython einen Webserver zu starten. Achtung, Phew funktioniert nicht auf CircuitPython. Zum Programmieren des Pico verwende ich Thonny, musste aber um Phew zu installieren auf die Version 4.0.1 f\u00fcr Windows 10 (64 Bit) zur\u00fcckgreifen. Mit der Version 4.1.2 gings bei mir nicht. Die Verkabelung ist relativ simpel. Wer mit einer 230V Installation arbeitet, sollte sich den Regeln vertraut sein oder einen Fachmann befragen. Je nachdem an welchem GP-Pin am Pico man die Ger\u00e4te verbindet, muss man den Programmcode entsprechend anpassen. Der Sensor (Gelb) ist auf dem Schema an GP16 und der Steuerausgang f\u00fcr das Relais (Violett) am Pin 5. Verbindung mit openHAB Nun k\u00f6nnte man eine komplette Logik in dem Raspberry Pico programmieren, so dass dieser entsprechend das Relais ein und ausschaltet. Diese hinterlege ich aber in meinem openHAB, so ist alles zentral in einer Einheit. Infos, wie man REST-Schnittstellen mit openHAB anbindet habe ich hier dokumentiert: Ger\u00e4te mit REST API steuern. Der kniffligste Punkt hierbei ist das senden des Wertes f\u00fcrs Ein- und Ausschalten. Dazu muss die Command-URL-Erweiterung verwendet werden. Auch zum darstellen der Werte als Grafik kann man openHAB einsetzen. Das sieht dann etwa so aus: Die Linien sind wohl selbsterkl\u00e4rend. Die gr\u00fcnen Bereiche zeigen, wann der Schalter auf Ein stand und somit der daran angeh\u00e4ngte Luftentfeuchter aktiv war. Und hier Links zum Shop wo ich die Komponenten gekauft habe:<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1202,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1206","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/comments?post=1206"}],"version-history":[{"count":16,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1206\/revisions"}],"predecessor-version":[{"id":1235,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1206\/revisions\/1235"}],"up":[{"embeddable":true,"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/pages\/1202"}],"wp:attachment":[{"href":"https:\/\/www.gressly.ch\/index.php\/wp-json\/wp\/v2\/media?parent=1206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}