[{"content":"\nDas Board Der NanoESP-Board hat viele Namen. In Franzis Produkten wird das Board oft Pretzel Board genannt. Bei Conrad findet man den NanoESP unter dem Namen C-Control IoT WiFi Board. Doch innen ist immer das gleiche: ein einfach zu bedienendes und Arduino kompatibles Entwicklungsboard für Ihre Internet of Things Projekte.\nÜber einfache AT-Kommandos können Sie z.B. einen Webserver starten, das Modul als Acces Point einstellen oder die Verbindung zu Ihrem Heimnetzwerk herstellen.\nBoard Features:\n• Arduino™-kompatibel\n• Steuerung des WLAN-Moduls über einfache AT-Kommandos\n• Integrierter TCP/IP-Stack, aktivierbarer TCP/UDP-Server\n• Unterstützt gängige WLAN-Techniken \u0026amp; Modul als AccessPoint benutzbar\nDas Board ist unter anderem in folgenden Shops erhältlich:\nDas Board bei Franzis\nDas Board im Conrad-Shop\nThemen NanoESP Updaten Die neue NanoESP-Library mit MQTT, HTTP und Blynk-Support Pinout NanoESP \u0026amp; Pretzel Board Fritzing Bauteil - NanoESP \u0026amp; Pretzel Board Beispielprojekt - NanoESP \u0026amp; Pretzelboard Technische Daten NanoESP \u0026amp; Pretzel Board Schnellstart Anleitung - NanoESP \u0026amp; Pretzelboard Diskusionen und Hilfe -NanoESP \u0026amp; Pretzelboard AT Befehlsliste - NanoESP \u0026amp; Pretzelboard Treiber- NanoESP \u0026amp; Pretzelboard ","permalink":"https://iot.fkainka.de/board/","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/images/2015/09/Purple.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"das-board\"\u003eDas Board\u003c/h3\u003e\n\u003cp\u003eDer NanoESP-Board hat viele Namen. In Franzis Produkten wird das Board oft Pretzel Board genannt. Bei Conrad findet man den NanoESP unter dem Namen C-Control IoT WiFi Board. Doch innen ist immer das gleiche: ein einfach zu bedienendes und Arduino kompatibles Entwicklungsboard für Ihre Internet of Things Projekte.\u003c/p\u003e\n\u003cp\u003eÜber einfache AT-Kommandos können Sie z.B. einen Webserver starten, das Modul als Acces Point einstellen oder die Verbindung zu Ihrem Heimnetzwerk herstellen.\u003c/p\u003e","title":"Alles über NanoESP \u0026 Pretzel Board"},{"content":"Das NodeESP Board Das NodeESP Board Der NodeESP ist ein Experimentier- und Entwicklungsboard für den Bereich IoT und Hausautomatisierung. Die vorprogrammierte Firmware mit integrierter Webseite erlaubt es Ihnen, einfache Konfigurationen vorzunehmen und Programme und Anwendungen kinderleicht in einem Menü auszuwählen. So können Sie durch wenige Mausklicks das Board als smarten Schalter, buntes Licht oder Raumklimasensor konfigurieren und mit anderen Geräten in Ihrem Heimnetz verbinden. Für eigene individuelle Projekte lässt sich das Board außerdem über die Arduino IDE programmieren.\nFirmware Neuigkeiten und Bug Report NodeESP Kommandoreferenz NodeESP Technische Daten NodeESP Firmware Reinstallieren ","permalink":"https://iot.fkainka.de/das-nodeesp-board/","summary":"\u003ch3 id=\"das-nodeesp-board\"\u003eDas NodeESP Board\u003c/h3\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/images/2018/10/board1.jpg\"\u003e\u003c/p\u003e\n\u003ch3 id=\"das-nodeesp-board-1\"\u003eDas NodeESP Board\u003c/h3\u003e\n\u003cp\u003eDer NodeESP ist ein Experimentier- und Entwicklungsboard für den Bereich IoT und Hausautomatisierung. Die vorprogrammierte Firmware mit integrierter Webseite erlaubt es Ihnen, einfache Konfigurationen vorzunehmen und Programme und Anwendungen kinderleicht in einem Menü auszuwählen. So können Sie durch wenige Mausklicks das Board als smarten Schalter, buntes Licht oder Raumklimasensor konfigurieren und mit anderen Geräten in Ihrem Heimnetz verbinden. Für eigene individuelle Projekte lässt sich das Board außerdem über die Arduino IDE programmieren.\u003c/p\u003e","title":"Das NodeESP Board"},{"content":"Adventskalender Internet of Things 2018: Experimente für Smart Home Dank des Adventskalenders Internet of Things (IoT) muss die Wartezeit bis Weihnachten nicht langweilig werden. Der bereits vorprogrammierte Mikrocontroller in Verbindung mit dem Node-RED Programmier-Tool bietet eine Menge Spielraum für 24 vielfältige und spannende Experimente rund um das Thema Smart Home und Hausautomatisierung.\nInternet of Things und Smarthome beinhalten die automatisierte Erfassung und Steuerung von Sensoren und Aktoren in einem großen Netzwerk. Vom automatisierten Ein- und Ausschalten von LEDs über das Steuern Ihres TVs\nvon irgendwo in der Welt bis hin zur Langzeitüberwachung Ihres Raumklimas, mit einfachen Beispielen werden die verschiedenen Aspekte der Hausautomatisierung praktisch ergründet.\nTag 24: Tannenbaumbeleuchtung Tag 23: Alarmanlage Tag 22: Klimawächter Tag 21: Piano-Player Tag 20: Pflanzenwächter Tag 19: Cheerlights Tag 18: Kerzenalarm Tag 17: Zeitgesteuerte Lichter Tag 16: Universalfernbedienung Tag 15: Fernbedienungsempfänger Tag 14: Smarte Lichter Tag 13: Smarter Schalter für ein Soundboard Tag 12: MQTT-Button Tag 11: MQTT Tag 10: Deep Sleep Tag 9: Ein Stimmungslicht Tag 8: Ein Regler Tag 7: Treppenhauslicht Tag 6: Touch to Speach Tag 5: Node-RED Tag 4: UDP und JSON Tag 3: UDP und Packet Sender Tag 2: OnBoard-LED und Update Tag 1: Das NodeESP-Board Tag 0: Alle Flows des Kalenders ","permalink":"https://iot.fkainka.de/der-conrad-adventskalender-iot-2018-smarthome-edition/","summary":"\u003ch3 id=\"adventskalender-internet-of-things-2018-experimente-für-smart-home\"\u003eAdventskalender Internet of Things 2018: Experimente für Smart Home\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.conrad.de/de/adventskalender-conrad-adventskalender-internet-of-things-1662787.html\"\u003e\u003cimg loading=\"lazy\" src=\"/images/2018/10/bg-2018.jpeg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDank des Adventskalenders Internet of Things (IoT) muss die Wartezeit bis Weihnachten nicht langweilig werden. Der bereits vorprogrammierte Mikrocontroller in Verbindung mit dem Node-RED Programmier-Tool bietet eine Menge Spielraum für 24 vielfältige und spannende Experimente rund um das Thema Smart Home und Hausautomatisierung.\u003c/p\u003e\n\u003cp\u003eInternet of Things und Smarthome beinhalten die automatisierte Erfassung und Steuerung von Sensoren und Aktoren in einem großen Netzwerk. Vom automatisierten Ein- und Ausschalten von LEDs über das Steuern Ihres TVs\u003cbr\u003e\nvon irgendwo in der Welt bis hin zur Langzeitüberwachung Ihres Raumklimas, mit einfachen Beispielen werden die verschiedenen Aspekte der Hausautomatisierung praktisch ergründet.\u003c/p\u003e","title":"Der Conrad Adventskalender IoT - 2018 [Smarthome Edition]"},{"content":"\nSie können das Lernpaket unter anderem hier erwerben:\nDirekt bei Franzis\nBei Amazon.de\nBei Elektor\nBei Conrad\nDas Lernpaket Internet of Things gibt es in mehreren Ausführungen. Es gibt eine Franzis und eine Conrad Version. Beide Lernpakete bringt Ihnen das brandaktuelle Thema IoT anhand von praktischen Beispielen mit ausführlichen Erklärungen näher. Teil des Pakets ist das neue Pretzel Board (NanoESP) mit dem der Einstieg in das komplexe wie spannende Thema spielerisch gelingt.\nIn verschieden Projekten, wie dem Bedienen des Mediacenters Kodi, dem Steuern einer RGB-LED über einen Webserver oder dem Senden und Empfangen von Twitter-Nachrichten lernen Sie sowohl die Grundlagen der Internetkommunikation als auch die Beherrschung des IoT-Boards. Damit steht Ihrem eigenen Internet of Things Projekt nichts mehr im Wege.\nBauteile des Lernpakets:\nWiFi-Controller Pretzel Board (NanoESP) Kabel RGB-LED LED Schalter Poti NTC Fototransitor Und mehr Download Beispielprogramme Diskusionen und Hilfe Treiber- NanoESP \u0026amp; Pretzelboard ","permalink":"https://iot.fkainka.de/das-lernpaket-iot/","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/images/2016/01/IoT-LP3.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eSie können das Lernpaket unter anderem hier erwerben:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.franzis.de/elektronik/lernpakete-mikrocontroller/franzis-maker-kit-internet-of-things\"\u003eDirekt bei Franzis\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"http://www.amazon.de/dp/3645653163\"\u003eBei Amazon.de\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://www.elektor.de/franzis-maker-kit-internet-of-things\"\u003eBei Elektor\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://www.conrad.de/de/lernpaket-conrad-components-profi-lernpaket-internet-of-things-10215-ab-14-jahre-1421380.html\"\u003eBei Conrad\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDas Lernpaket Internet of Things gibt es in mehreren Ausführungen. Es gibt eine Franzis und eine Conrad Version. Beide Lernpakete bringt Ihnen das brandaktuelle Thema IoT anhand von praktischen Beispielen mit ausführlichen Erklärungen näher. Teil des Pakets ist das neue Pretzel Board (NanoESP) mit dem der Einstieg in das komplexe wie spannende Thema spielerisch gelingt.\u003c/p\u003e","title":"Die IoT Lernpakete"},{"content":"\nConrad Shop\nMit dem Adventskalenders Internet of Things (IoT) muss die Wartezeit bis Weihnachten nicht angweilig werden. Das neue Arduino kompatible Pretzelboard (NanoESP) mit integriertem WLAN-Modul und die enthaltenden Bauteile sind ideal für 24 vielfältige und spannende Experimente rund um dieses Thema.\nInternet of Things beinhaltet die Kommunikation und Steuerung von Sensoren und Aktoren in einem großen Netzwerk. Vom einfachen Ein- und Ausschalten einer LED mit dem Smartphone über das Erstellen eines Webservers bis hin zur Langzeitüberwachung mittels Sensoren, mit einfachen Beispielen werden die verschiedenen Aspekte des Themas IoT praktisch ergründet.\nAlle Schaltungen werden ohne zu Löten auf einem Steckbrett aufgebaut. Ganz nebenbei vermittelt der Adventskalender auf spielerische Art nützliches Hardware- und Programmierwissen. Mit Hilfe des illustrierten Handbuchs lassen sich alle 24 Experimente aufbauen und testen.\nCalendar Days Tag 24: Feuermelder für den Weihnachtsbaum Tag 23: Cheerlights Tag 22: TalkBack Tag 21: Twitter Alarmanlage Tag 20: Twitch Tag 19: ThingSpeak Tag 18: Universal Fernbedienung Tag 17: IR-Modul Tag 16: GPIO Control Tag 15: Lichtsensor Tag 14: Webserver für die RGB-LED Tag 13: Webseite mit Buttons Tag 12: Autonomer Webserver Tag 11: TCP Webserver Tag 10: Temperaturanzeige Tag 9: TCP Uhrzeit Tag 8: Ein Browser Tag 7 (special): Hinweis für Arduino Neulinge - Teil 2 Tag 7: Analoger Sensor Tag 6: UDP Button Tag 5: LED Schalten Tag 4: UDP Bidirektional Tag 3: UDP-Send Tag 2: Google Ping Tag 1 - Hinweis für Arduino Neulinge Tag 1: Die ersten Schritte Day 0: Alternative zum ausverkauften Adventskalender (Spoiler Alert) Tag 0: Alle Projekte für Ungeduldige (Spoiler Alert) ","permalink":"https://iot.fkainka.de/der-conrad-iot-adventskalender/","summary":"\u003cp\u003e\u003ca href=\"http://www.conrad.de/ce/de/product/1365865/Adventskalender-Conrad-Internet-of-Things-2015-10180\"\u003e\u003cimg loading=\"lazy\" src=\"/images/2015/09/prev2.jpeg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.conrad.de/ce/de/product/1365865/Adventskalender-Conrad-Internet-of-Things-2015-10180\"\u003eConrad Shop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMit dem Adventskalenders Internet of Things (IoT) muss die Wartezeit bis Weihnachten nicht angweilig werden. Das neue Arduino kompatible Pretzelboard (NanoESP) mit integriertem WLAN-Modul und die enthaltenden Bauteile sind ideal für 24 vielfältige und spannende Experimente rund um dieses Thema.\u003c/p\u003e\n\u003cp\u003eInternet of Things beinhaltet die Kommunikation und Steuerung von Sensoren und Aktoren in einem großen Netzwerk. Vom einfachen Ein- und Ausschalten einer LED mit dem Smartphone über das Erstellen eines Webservers bis hin zur Langzeitüberwachung mittels Sensoren, mit einfachen Beispielen werden die verschiedenen Aspekte des Themas IoT praktisch ergründet.\u003c/p\u003e","title":"Der Conrad Adventskalender Internet of Things"},{"content":"\nVerkürzen Sie die Wartezeit auf Weihnachten mit spannenden und unterhaltsamen Experimenten zum Internet der Dinge. Schicken Sie dabei Push-Nachrichten auf Ihr Smartphone oder bauen Sie eine Alarmanlage mit Bewegungsmelder und lassen Sie sich bei verdächtigen Bewegungen benachrichtigen. Lernen Sie, wie Sie unterschiedliche Webdienste wie z.B. Twitter ansteuern, und nutzen Sie das Protokoll für das Internet der Dinge: MQTT.\nDer Internet-of-Things-Adventskalender enthält alle Bauteile für 24 Experimente, darunter eine eigens entwickelte Hardware-Platine mit integriertem WLAN-Modul, die sich über die kostenfreie Arduino IDE programmieren lässt.\nAlle Schaltungen werden ohne zu löten auf einem Steckbrett aufgebaut. Ganz nebenbei erwerben Sie auf spielerische Art nützliches Hardware- und Programmierwissen. Mit Hilfe des illustrierten Handbuchs lassen sich alle 24 Experimente ohne Vorkenntnisse aufbauen und testen. Die einzelnen Quellcodes müssen Sie nicht abtippen, da sie zum Download bereit stehen.\nTag 24: Geschenkbox Tag 23: MQTT Climate Tag 22: MQTT Cheerlights Tag 21: Hausautomation Tag 20: MQTT (Message Queue Telemetry Transport) Tag 19: Konfigurationsseite für den NanoESP Tag 18: Klimaüberwachung Tag 17: Wake Up Light Tag 16: Ein Webserver Piano Tag 15: Ein Webserver Tag 14: Langzeit Temperatur Messung Tag 13: Alarmanlage mit Push Nachrichten Tag 12: Lichtwächter Tag 11: Tag/Nacht Licht Tag 10: RGB-LED Tag 9: Helligkeit der realen LED Tag 8: Virtuelle LEDs Tag 7: Analog Write Tag 6: Der Hardware Button Tag 5: Blynk Tag 4: Verbindung mit dem Internet aufbauen Tag 3: Der NanoESP im AccesPoint-Modus Tag 2: Die Arduino IDE Tag 1: Das NanoESP-Board Tag 0: Alle Programm von Kalender 2016 Die neue NanoESP-Library mit MQTT, HTTP und Blynk-Support Infos zum neuen Adventskalender ","permalink":"https://iot.fkainka.de/der-conrad-adventskalender-iot-2016/","summary":"\u003cp\u003e\u003ca href=\"https://www.conrad.de/de/conrad-components-internet-of-things-ab-14-jahre-1435475.html\"\u003e\u003cimg loading=\"lazy\" src=\"/images/2016/10/bg-2016.jpg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eVerkürzen Sie die Wartezeit auf Weihnachten mit spannenden und unterhaltsamen Experimenten zum Internet der Dinge. Schicken Sie dabei Push-Nachrichten auf Ihr Smartphone oder bauen Sie eine Alarmanlage mit Bewegungsmelder und lassen Sie sich bei verdächtigen Bewegungen benachrichtigen. Lernen Sie, wie Sie unterschiedliche Webdienste wie z.B. Twitter ansteuern, und nutzen Sie das Protokoll für das Internet der Dinge: MQTT.\u003c/p\u003e\n\u003cp\u003eDer Internet-of-Things-Adventskalender enthält alle Bauteile für 24 Experimente, darunter eine eigens entwickelte Hardware-Platine mit integriertem WLAN-Modul, die sich über die kostenfreie Arduino IDE programmieren lässt.\u003c/p\u003e","title":"Der Conrad Adventskalender IoT - 2016"},{"content":"\nJetzt bist du gefragt!\nIn diesem Bereich hast du nun die Möglichkeit, deine Projekte, Ideen und Experimente vorzustellen.\nDabei ist es egal, ob du einem bestehenden Projekt eine neue Verpackung gibst, z.B. eine schöne Cheerlights Lampe, oder eine völlig neue Idee hast. Auf dieser Seite kannst du alle deine Projekte eigenständig präsentieren.\nBesonders praktisch: Über diese Funktion kannst du außerdem auch Beitrage zu dem aktuellen Wettbewerb einreichen. Und wer weiß, ob nicht in Zukunft noch mehr Wettbewerbe stattfinden.\nZur Anleitung für deinen ersten Beitrag Die User Projekte WiFi UDP Y-Netzwerk aus drei Pretzelboards und einem Laptop Ausgelagerte Webseiten für den NanoESP Wettbewerbsbeitrag: Quadrocopter Landing Pad Wettbewerbsbeitrag: Neigungssensor – auslesen per IoT- Board, übertragen per WLAN Wettbewerbsbeitrag: Polarfuchs Wettbewerbsbeitrag: Blumenwächter Wettbewerbsbeitrag: IoTeaTimer Wettbewerbsbeitrag: Wassermelder mit Twitter-Alarmmeldung Fernbedienung über WLAN oder Alt und Neu ergänzen sich Anleitung für dein erstes User Projekt ","permalink":"https://iot.fkainka.de/user-projekte/","summary":"\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/images/2015/12/IMG_3481.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eJetzt bist du gefragt!\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIn diesem Bereich hast du nun die Möglichkeit, deine Projekte, Ideen und Experimente vorzustellen.\u003c/p\u003e\n\u003cp\u003eDabei ist es egal, ob du einem bestehenden Projekt eine neue Verpackung gibst, z.B. eine schöne \u003ca href=\"/day-23\"\u003eCheerlights Lampe\u003c/a\u003e, oder eine völlig neue Idee hast. Auf dieser Seite kannst du alle deine Projekte eigenständig präsentieren.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBesonders praktisch:\u003c/strong\u003e Über diese Funktion kannst du außerdem auch Beitrage zu dem \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eaktuellen Wettbewerb\u003c/a\u003e einreichen. Und wer weiß, ob nicht in Zukunft noch mehr Wettbewerbe stattfinden.\u003c/p\u003e","title":"User Projekte"},{"content":"Damit das Board an Ihrem PC funktionieren kann, benötigen Sie einen Treiber für den USB-to-Serial Wandler CH340G. Diesen können Sie die hier\nWindows (ab Windows 98 bis Windows 10, 32-Bit/64-Bit)\nLinux Version\nAndroid Version\nMac Version **(**Hinweis für MAC-Nutzer: Seit Mac OS Sierra scheint es vermehrt Probleme mit dem Treiber zu geben. Es gibt noch keinen offiziellen Treiber vom USB-Chip Hersteller. Allerdings finden Sie hier zwei Links mit alternativen Versionen:\nhttps://github.com/jimaobian/CH34x_Install_V1.3/blob/master/CH34x_Install_V1.3.zip\nhttps://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver )\nherunterladen. In der Windows Version befindet sich in dem Zip-Ordner eine Setup.exe-Datei, die Sie ausführen müssen. In dem Fenster müssen Sie dann auf Install klicken.\nDie Installation Nach einer Erfolgsmeldung können Sie das Preztelboard (NanoESP) anstecken und der Treiber wird automatisch gefunden.\n","permalink":"https://iot.fkainka.de/driver/","summary":"\u003cp\u003eDamit das Board an Ihrem PC funktionieren kann, benötigen Sie einen Treiber für den USB-to-Serial Wandler CH340G. Diesen können Sie die hier\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/09/CH341SER.zip\"\u003eWindows (ab Windows 98 bis Windows 10, 32-Bit/64-Bit)\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/09/CH341SER_LINUX.zip\"\u003eLinux Version\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/09/CH341SER_ANDROID.zip\"\u003eAndroid Version\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/08/CH34x_Install.zip\"\u003eMac Version\u003c/a\u003e **(**\u003cstrong\u003eHinweis für MAC-Nutzer:\u003c/strong\u003e Seit Mac OS Sierra scheint es vermehrt Probleme mit dem Treiber zu geben. Es gibt noch keinen offiziellen Treiber vom USB-Chip Hersteller. Allerdings finden Sie hier zwei Links mit alternativen Versionen:\u003cbr\u003e\n\u003ca href=\"https://github.com/jimaobian/CH34x_Install_V1.3/blob/master/CH34x_Install_V1.3.zip\"\u003ehttps://github.com/jimaobian/CH34x_Install_V1.3/blob/master/CH34x_Install_V1.3.zip\u003c/a\u003e\u003cbr\u003e\n\u003ca href=\"https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver\"\u003ehttps://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver\u003c/a\u003e )\u003c/p\u003e","title":"Treiber- NanoESP \u0026 Pretzelboard"},{"content":"Hallo allerseits, ich versuche, unter Windows 10 64bit mit der IDE 1.8.12 ein Pretzelboard aus dem Maker Kit Internet of Things von 2019 in der Arduino-IDE anzumelden. Board = \u0026ldquo;Arduino Nano\u0026rdquo;; Programmer = „AVR ISP“; Prozessor = „ATmega328P (Old Bootloader)“.\nIch bekomme ausschließlich COM1 als Port gemeldet. Es erscheint die Fehlermeldung \u0026ldquo;avrdude: stk500_recv(): programmer is not responding und avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=… \u0026ldquo;. Mit mehreren Nano-Boards klappt die Anmeldung und Hochladen eines Sketches (mit demselben Kabel), Port ist dann COM3 o.ä. Der CH340G-Treiber ist also installiert, wird aber anscheinend nicht gefunden vom Pretzelboard.\nWas kann ich versuchen, wer hat eine Idee, woran es liegen könnte?\n","permalink":"https://iot.fkainka.de/forum/topic/keine-virtuelle-schnittstelle-nur-com1-vorhanden/","summary":"\u003cp\u003eHallo allerseits, ich versuche, unter Windows 10 64bit mit der IDE 1.8.12 ein Pretzelboard aus dem Maker Kit Internet of Things von 2019 in der Arduino-IDE anzumelden. Board = \u0026ldquo;Arduino Nano\u0026rdquo;; Programmer = „AVR ISP“; Prozessor = „ATmega328P (Old Bootloader)“.\u003cbr\u003e\nIch bekomme ausschließlich COM1 als Port gemeldet. Es erscheint die Fehlermeldung \u0026ldquo;avrdude: stk500_recv(): programmer is not responding und avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=… \u0026ldquo;. Mit mehreren Nano-Boards klappt die Anmeldung und Hochladen eines Sketches (mit demselben Kabel), Port ist dann COM3 o.ä. Der CH340G-Treiber ist also installiert, wird aber anscheinend nicht gefunden vom Pretzelboard.\u003cbr\u003e\nWas kann ich versuchen, wer hat eine Idee, woran es liegen könnte?\u003c/p\u003e","title":"keine virtuelle Schnittstelle, nur COM1 vorhanden"},{"content":"Moin,\nwenn ich versuche das Programm P11_TCPClock.ino zu komplilieren bekomme ich die Fehlermeldung \u0026ldquo;hour\u0026rdquo; was not declared in this scope. Zeile 47. Das hat mit dem Einbinden der Bibliothek im C Code zu tun. Ich hab die Datei Time.h in den libraries Ordner von P11_TCPClock.ino kopiert. funktioniert nur leider nicht.. Brauch ich eine andere Datei oder einen anderen Ort?\nschöne Grüße,\n3 Antworten Sabet – 16.01.2020\nFehler gefunden.\nIn der Hauptdatei muss die Einbindung der Bibliothek mit #include \u0026ldquo;Time.h\u0026rdquo; erfolgen. (Nicht #include \u0026lt;Time.h\u0026gt;).\nDas war\u0026rsquo;s schon :)\nSabet – 16.01.2020\nok, was ich nicht raffe ist warum es der 01.01.1970 sein soll. sonst alles klar^^\nprisma01 – 01.11.2020\nMoin!\nWo find ich denn bitte das Wiring zu P11_TCPClock.ino?\nlg Stephan\n","permalink":"https://iot.fkainka.de/forum/topic/p11_tcpclock-ino-hour-not-declared-in-this-scope/","summary":"\u003cp\u003eMoin,\u003cbr\u003e\nwenn ich versuche das Programm P11_TCPClock.ino zu komplilieren bekomme ich die Fehlermeldung \u0026ldquo;hour\u0026rdquo; was not declared in this scope. Zeile 47. Das hat mit dem Einbinden der Bibliothek im C Code zu tun. Ich hab die Datei Time.h in den libraries Ordner von P11_TCPClock.ino kopiert. funktioniert nur leider nicht.. Brauch ich eine andere Datei oder einen anderen Ort?\u003cbr\u003e\nschöne Grüße,\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"3-antworten\"\u003e3 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSabet\u003c/strong\u003e – 16.01.2020\u003c/p\u003e\n\u003cp\u003eFehler gefunden.\u003cbr\u003e\nIn der Hauptdatei muss die Einbindung der Bibliothek mit #include \u0026ldquo;Time.h\u0026rdquo; erfolgen. (Nicht #include \u0026lt;Time.h\u0026gt;).\u003cbr\u003e\nDas war\u0026rsquo;s schon :)\u003c/p\u003e","title":"P11_TCPClock.ino \"hour\" not declared in this scope"},{"content":"Auf dieser Seite finden Sie alle im Lernpaket vorgestellten Programme.\nDownload Neuauflage: Alle Programme GitHub Repository: https://github.com/FKainka/Lernpaket-IoT Download Franzis Version: Alle Proramme Download Conrad Version: Alle Programme - Conrad Version Achtung: Es gab eine Änderung im Programm P12_TCPWeather. Der Webservice, den ich in diesem Programm verwendet habe, hat seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite http://www.openweathermap.com/ bezieht. Der Link zu dem neuen und auch in der neuen Version des Programms verwendeten Dienst lautet:\nwww.temp.fkainka.de\nDurch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:\nwww.temp.fkainka.de/?city=essen\n","permalink":"https://iot.fkainka.de/download-beispielprogramme/","summary":"\u003cp\u003eAuf dieser Seite finden Sie alle im Lernpaket vorgestellten Programme.\u003c/p\u003e\n\u003ch3 id=\"download-neuauflage-alle-programme\"\u003eDownload Neuauflage: \u003ca href=\"/images/2015/09/Lernpaket_IoT_Neuauflage.zip\"\u003eAlle Programme\u003c/a\u003e\u003c/h3\u003e\n\u003ch3 id=\"github-repository\"\u003eGitHub Repository: \u003ca href=\"https://github.com/FKainka/Lernpaket-IoT\"\u003ehttps://github.com/FKainka/Lernpaket-IoT\u003c/a\u003e\u003c/h3\u003e\n\u003ch3 id=\"download-franzis-version-alle-proramme\"\u003eDownload Franzis Version: \u003ca href=\"/images/2015/09/IoT-LP.zip\"\u003eAlle Proramme\u003c/a\u003e\u003c/h3\u003e\n\u003ch3 id=\"download-conradversion-alle-programme---conrad-version\"\u003eDownload Conrad Version: \u003ca href=\"/images/2015/09/IoT_-LP_-C_Programme.zip\"\u003eAlle Programme - Conrad Version\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"achtung\"\u003eAchtung:\u003c/h4\u003e\n\u003cp\u003eEs gab eine Änderung im Programm P12_TCPWeather. Der Webservice, den ich in diesem Programm verwendet habe, hat seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite \u003ca href=\"http://www.openweathermap.com/\"\u003ehttp://www.openweathermap.com/\u003c/a\u003e bezieht. Der Link zu dem neuen und auch in der neuen Version des Programms verwendeten Dienst lautet:\u003c/p\u003e","title":"Download Beispielprogramme"},{"content":" Hallo\nIch haber mit das IoT Kit besorgt und das Board erfolgreich mit dem Computer verbunden. Wenn ich in der Arduino IDE den Serial Monitor öffnete, hat sich das Board auch ordentlich gemeldet:\nBaudrate OK\nConfig OK\nConfiguration successfull\nServer OK\nDas Board ist auf \u0026ldquo;CR und NL\u0026rdquo; sowie auf 19200 Baud eingestellt.\nIch habe dann erst ein wenig im Serial Monitor mit den AT-Befehlen gespielt und alles hat funktioniert.\nDanach habe ich ein Programm geschrieben und mit Upload auf das Board geladen. Auch das hat super funktioniert und das Programm lief auf dem Board fehlerfrei.\nJetzt das Problem: Seitdem ich das Programm auf dem Board am Laufen hatte, meldet sich das Board nach einem Neustart (sowohl das Board habe ich neu gestartet mit ein-/ausstecken vom USB-Stecker, als auch die Arduino IDE habe ich neu gestartet) nicht mehr im Serial Monitor. Der Serial Monitor bleibt einfach leer. Und AT-Befehle akzeptiert das Board dort auch nicht mehr bzw. es reagiert nicht mehr auf AT-Befehle. Auch diese Meldung, die ich Anfangs immer bekam, kommt nicht mehr:\nBaudrate OK\nConfig OK\nConfiguration successfull\nServer OK\nDas Merkwürdige ist, dass ich nach wie vor Programme auf das Board uploaden kann und diese auch korrekt (inklusive Ausgabe auf dem Serial Monitor) ausgeführt werden. Nur die direkte Eingabe von AT-Befehlen im Serial Monitor funktioniert nicht mehr.\nIch habe schon mehrfach sowohl das Board als auch die Arduino IDE neu gestartet.\nWas mache ich falsch?\n1 Antwort Parallaxe – 06.01.2020\nIch bin mir nicht sicher, ob das die \u0026ldquo;richtige\u0026rdquo; Lösung ist, aber es ist zumindest eine Lösung, die für mich funktioniert hat: Ich lade nach jedem Neustart jetzt einfach ein Programm hoch, welches eine Art serieller Schnittstelle zwischen dem Arduino Nano Teil vom Board und dem WLAN Teil vom Board herstellt:\nvoid loop()\n{\nif (esp8266.available())\nSerial.write(esp8266.read());\nif (Serial.available())\nesp8266.write(Serial.read());\n}\nDas hat jetzt zwar funktioniert, um mein Problem zu lösen, ich wäre aber sehr froh um Hinweise, wie man mein Problem \u0026ldquo;richtig\u0026rdquo; behebt.\n","permalink":"https://iot.fkainka.de/forum/topic/board-nimmt-keine-at-befehle-ueber-den-serial-monitor-mehr-an/","summary":"\u003cnoobalarm\u003e\n\u003cp\u003eHallo\u003c/p\u003e\n\u003cp\u003eIch haber mit das IoT Kit besorgt und das Board erfolgreich mit dem Computer verbunden. Wenn ich in der Arduino IDE den Serial Monitor öffnete, hat sich das Board auch ordentlich gemeldet:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eBaudrate OK\u003cbr\u003e\nConfig OK\u003cbr\u003e\nConfiguration successfull\u003cbr\u003e\nServer OK\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eDas Board ist auf \u0026ldquo;CR und NL\u0026rdquo; sowie auf 19200 Baud eingestellt.\u003c/p\u003e\n\u003cp\u003eIch habe dann erst ein wenig im Serial Monitor mit den AT-Befehlen gespielt und alles hat funktioniert.\u003c/p\u003e","title":"Board nimmt keine AT-Befehle über den Serial Monitor mehr an"},{"content":"Hallo, hab leider erst jetzt die Zeit gefunden, mich mit meinem tollen ioT-Adventskalender zu beschäftigen. Wollte mich heute über meinen Mac mit dem NodeESP verbringen. Habe ihn angesteckt und die Lampe hat sofort grün geblinkt. Wenn ich lange auf den Boot-Button klicke leuchtet er nur blau und sobald ich wieder los lasse, grün\u0026hellip; hab auch versucht mich mit dem Netzwerk des NodeESP zu verbinden, aber wenn ich danach suche, findet mein Mac nichts unter dem Namen. Kann mir da wer weiterhelfen?\nDanke!\nLg Manu\n","permalink":"https://iot.fkainka.de/forum/topic/nodeesp-verbindung-aufbauen/","summary":"\u003cp\u003eHallo, hab leider erst jetzt die Zeit gefunden, mich mit meinem tollen ioT-Adventskalender zu beschäftigen. Wollte mich heute über meinen Mac mit dem NodeESP verbringen. Habe ihn angesteckt und die Lampe hat sofort grün geblinkt. Wenn ich lange auf den Boot-Button klicke leuchtet er nur blau und sobald ich wieder los lasse, grün\u0026hellip; hab auch versucht mich mit dem Netzwerk des NodeESP zu verbinden, aber wenn ich danach suche, findet mein Mac nichts unter dem Namen. Kann mir da wer weiterhelfen?\u003cbr\u003e\nDanke!\u003cbr\u003e\nLg Manu\u003c/p\u003e","title":"NodeESP Verbindung aufbauen"},{"content":"Hallo zusammen\nDas FirmwareUpdate bleibt mit dem Text Chip sync error: Failed to connect to ESP8266: Timed out waiting for packet header [2019-12-26 10:12:01,148][ESP8266Loader\\_spi[1]][espDownloader.py][line:459][ERROR]: ESP8266 Chip sync error esp\\_sync\\_blocking. hängen.\nGibt es eine Rettung?\n","permalink":"https://iot.fkainka.de/forum/topic/firmware-update-misslungen/","summary":"\u003cp\u003eHallo zusammen\u003c/p\u003e\n\u003cp\u003eDas FirmwareUpdate bleibt mit dem Text \u003ccode\u003eChip sync error: Failed to connect to ESP8266: Timed out waiting for packet header [2019-12-26 10:12:01,148][ESP8266Loader\\_spi[1]][espDownloader.py][line:459][ERROR]: ESP8266 Chip sync error esp\\_sync\\_blocking. \u003c/code\u003e hängen.\u003c/p\u003e\n\u003cp\u003eGibt es eine Rettung?\u003c/p\u003e","title":"Firmware Update misslungen"},{"content":"Hallo,\nich habe das Board von Conrad gekauft.\nGibt es eine Möglichkeit damit unter MacOs Catalina 10.15 zu arbeiten?\nArduino: 1.8.11 Hourly Build 2019/12/16 10:04 (Mac OS X), Board: \u0026ldquo;Arduino Nano, ATmega328P\u0026rdquo;\nDer Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.\nGlobale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00\navrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00\navrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00\navrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0\navrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0\nBeim Hochladen des Sketches ist ein Fehler aufgetreten\nDieser Bericht wäre detaillierter, wenn die Option\n\u0026ldquo;Ausführliche Ausgabe während der Kompilierung\u0026rdquo;\nin Datei -\u0026gt; Voreinstellungen aktiviert wäre.\nGrüße\nMark49\n","permalink":"https://iot.fkainka.de/forum/topic/macos-10-15-catalina-und-nanoesp/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe das Board von Conrad gekauft.\u003cbr\u003e\nGibt es eine Möglichkeit damit unter MacOs Catalina 10.15 zu arbeiten?\u003c/p\u003e\n\u003cp\u003eArduino: 1.8.11 Hourly Build 2019/12/16 10:04 (Mac OS X), Board: \u0026ldquo;Arduino Nano, ATmega328P\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eDer Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.\u003cbr\u003e\nGlobale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.\u003cbr\u003e\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00\u003cbr\u003e\navrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00\u003cbr\u003e\navrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00\u003cbr\u003e\navrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0\u003cbr\u003e\navrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0\u003cbr\u003e\nBeim Hochladen des Sketches ist ein Fehler aufgetreten\u003c/p\u003e","title":"MacOS 10.15 Catalina und NanoESP"},{"content":"Hallo, leider komme ich nicht weiter, weil beim Import des Node-RED-Flow\u0026rsquo;s immer eine Fehlermeldung kommt , weil folgende node\u0026rsquo;s nicht erkannt werden:\nui_tab\nui_text\nui_audio\nui_group\nWoran kann das liegen.\nKann mir jemand helfen?\n","permalink":"https://iot.fkainka.de/forum/topic/tag-6-import-des-node-red-flows/","summary":"\u003cp\u003eHallo, leider komme ich nicht weiter, weil beim Import des Node-RED-Flow\u0026rsquo;s immer eine Fehlermeldung kommt , weil folgende node\u0026rsquo;s nicht erkannt werden:\u003c/p\u003e\n\u003cp\u003eui_tab\u003cbr\u003e\nui_text\u003cbr\u003e\nui_audio\u003cbr\u003e\nui_group\u003c/p\u003e\n\u003cp\u003eWoran kann das liegen.\u003c/p\u003e\n\u003cp\u003eKann mir jemand helfen?\u003c/p\u003e","title":"Tag 6 - Import des Node-RED-Flow's"},{"content":"Habe Node-Red installiert, die Firewall geöffnt. Aber es kommt auf der linken Seite kein Feld mit INPUT. Wenn ich den udp Button suche, finde ich einen. Aber auch nach korrekter Bestückung und deploy kommt eine Fehlermeldung Error: EACCES:\nWas kann ich tun ?\n","permalink":"https://iot.fkainka.de/forum/topic/node-red-hat-zugriffsproblem/","summary":"\u003cp\u003eHabe Node-Red installiert, die Firewall geöffnt. Aber es kommt auf der linken Seite kein Feld mit INPUT. Wenn ich den udp Button suche, finde ich einen. Aber auch nach korrekter Bestückung und deploy kommt eine Fehlermeldung Error: EACCES:\u003cbr\u003e\nWas kann ich tun ?\u003c/p\u003e","title":"node-red hat Zugriffsproblem"},{"content":"Am Sonntag habe ich das NodeESP-Board an meinen PC angeschlossen und aktiviert. Nach einem versuchten Firmware-Update leuchtete die LED nicht mehr, das Board war nicht mehr erreichbar.- Heute nun habe ich ein Firmware-Update, wie beschrieben, durchgeführt und auf den ersten Blick schien es ok zu sein, die LED leuchtete grün, jedoch war kein WLAN-Netz namens NodeESP zu sehen, mit dem ich mich hätte verbinden können. Auch ein Reset per Button-press brachte nichts.\nHat jemand eine Idee dazu?\n","permalink":"https://iot.fkainka.de/forum/topic/wlan-nicht-sichtbar-keine-verbindung-mit-nodeesp-moeglich/","summary":"\u003cp\u003eAm Sonntag habe ich das NodeESP-Board an meinen PC angeschlossen und aktiviert. Nach einem versuchten Firmware-Update leuchtete die LED nicht mehr, das Board war nicht mehr erreichbar.- Heute nun habe ich ein Firmware-Update, wie beschrieben, durchgeführt und auf den ersten Blick schien es ok zu sein, die LED leuchtete grün, jedoch war kein WLAN-Netz namens NodeESP zu sehen, mit dem ich mich hätte verbinden können. Auch ein Reset per Button-press brachte nichts.\u003cbr\u003e\nHat jemand eine Idee dazu?\u003c/p\u003e","title":"WLAN nicht sichtbar - keine Verbindung mit NodeESP möglich"},{"content":"Hallo\nich habe folgende Frage: ist es möglich, den UART des Pretzelboards zu verwenden für ein eigenes Programm? Das Problem ist ja wahrscheinlich, dass dieser UART zum download und flashen des codes benötigt wird, oder gibt es eine andere Möglichkeit, den Code hochzuladen?\nDanke für Eure Hilfe, Peter\n","permalink":"https://iot.fkainka.de/forum/topic/dmx-receiver-mit-pretzelboard/","summary":"\u003cp\u003eHallo\u003c/p\u003e\n\u003cp\u003eich habe folgende Frage: ist es möglich, den UART des Pretzelboards zu verwenden für ein eigenes Programm? Das Problem ist ja wahrscheinlich, dass dieser UART zum download und flashen des codes benötigt wird, oder gibt es eine andere Möglichkeit, den Code hochzuladen?\u003c/p\u003e\n\u003cp\u003eDanke für Eure Hilfe, Peter\u003c/p\u003e","title":"DMX Receiver mit Pretzelboard"},{"content":"Smarthome Lernpaket Licht, Heizung, Alarm oder Pflanzenbewässerung: Im vernetzten Heim lassen sich diese und viele weitere Systeme fernsteuern und automatisieren. Steigen Sie mit diesem Maker Kit ein in die Welt des Smart Homes und lernen Sie grundlegende Prozesse und Techniken kennen und selbst anzuwenden. Als Basis für alle Experimente dient Ihnen ein speziell dafür entwickeltes NodeESP-Board, das in diesem Maker Kit enthalten ist.\nHausautomatisierung leicht gemacht\nVom automatisierten Ein- und Ausschalten von LEDs über das Steuern Ihres TVs von irgendwo in der Welt bis hin zur Langzeitüberwachung Ihres Raumklimas ergründen Sie die verschiedenen Aspekte der Hausautomatisierung. Alle benötigten Bauteile, darunter ein speziell entwickeltes NodeESP-Board, sind in diesem Maker Kit enthalten es kann sofort losgehen!\nDateien und Links zum Lernpaket SD-Karten Dateien zum Downloaden: sd_card_files.zip Die Firmware des NodeESP auf GitHub ","permalink":"https://iot.fkainka.de/maker-kit-fuer-smart-home/","summary":"\u003cfigure\u003e\u003ca href=\"/images/2019/10/smarthome.png\"\u003e\u003cimg class=\"wp-image-2925 size-medium\" src=\"/images/2019/10/smarthome.png\" alt=\"Smarthome Lernpaket\" width=\"300\" height=\"295\" data-id=\"2925\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eSmarthome Lernpaket\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eLicht, Heizung, Alarm oder Pflanzenbewässerung: Im vernetzten Heim lassen sich diese und viele weitere Systeme fernsteuern und automatisieren. Steigen Sie mit diesem Maker Kit ein in die Welt des Smart Homes und lernen Sie grundlegende Prozesse und Techniken kennen und selbst anzuwenden. Als Basis für alle Experimente dient Ihnen ein speziell dafür entwickeltes NodeESP-Board, das in diesem Maker Kit enthalten ist.\u003c/p\u003e\n\u003cp\u003eHausautomatisierung leicht gemacht\u003cbr\u003e\nVom automatisierten Ein- und Ausschalten von LEDs über das Steuern Ihres TVs von irgendwo in der Welt bis hin zur Langzeitüberwachung Ihres Raumklimas ergründen Sie die verschiedenen Aspekte der Hausautomatisierung. Alle benötigten Bauteile, darunter ein speziell entwickeltes NodeESP-Board, sind in diesem Maker Kit enthalten es kann sofort losgehen!\u003c/p\u003e","title":"Maker Kit für Smart Home"},{"content":"Hallo,\nUdp funktioniert bei mir nicht. Ich denke ich habe alle Einstellungen korrekt vorgenommen, trotzdem erhalte ich keine Meldungen.\nIn der Windows-Firewall-Einstellung sind unter Node in alle Protokolltypen, Ports und Remote-Ports aktiviert und zugelassen.\nSiehe Anhänge.\nKann mir jemand weiterhelfen?\nDanke vorab\nRainald\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/dup-funktioniert-nicht/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eUdp funktioniert bei mir nicht. Ich denke ich habe alle Einstellungen korrekt vorgenommen, trotzdem erhalte ich keine Meldungen.\u003cbr\u003e\nIn der Windows-Firewall-Einstellung sind unter \u003cstrong\u003eNode in\u003c/strong\u003e alle Protokolltypen, Ports und Remote-Ports aktiviert und zugelassen.\u003c/p\u003e\n\u003cp\u003eSiehe Anhänge.\u003c/p\u003e\n\u003cp\u003eKann mir jemand weiterhelfen?\u003c/p\u003e\n\u003cp\u003eDanke vorab\u003c/p\u003e\n\u003cp\u003eRainald\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Paketsender.png\" loading=\"lazy\" src=\"/images/2019/09/Paketsender.png\"\u003e\u003cbr\u003e\n\u003cimg alt=\"ESP-Settings.png\" loading=\"lazy\" src=\"/images/2019/09/ESP-Settings.png\"\u003e\u003c/p\u003e","title":"DUP Funktioniert nicht"},{"content":"Das NanoESP-Board, auch als Pretzelboard bekannt, ist nun schon vor einer ganzen Weile erschienen. Dennoch bekomme ich immer noch Mails von Leuten, die Hilfe benötigen oder Fragen haben. Zuletzt erreicht mich eine Mail mit der Frage, ob man die Firmware des ESP8266 Chips auf einen neueren Stand bringen könnte. Der für das WLAN zuständige Mikrocontroller hat eine AT-Firmware aus dem Jahre 2015 und mittlerweile gibt es verbesserte Versionen der AT-Firmware. Das Problem ist allerdings, dass der Flash-Speicher Chip, auf dem sich die Firmware zum ESP-Controller befindet, nur eine Kapazität von 4 Mbit (also 512 kB) hat und deswegen nicht mit allen neueren Firmware Versionen kompatibel ist. Dennoch habe ich nach einigem Recherchieren eine Firmwareversion gefunden, die kompatibel ist und zudem neue Möglichkeiten bereitstellt. Deswegen finden Sie hier eine Anleitung, wie Sie das Board updaten können.\nDer Updatevorgang Im ersten Schritt benötigen Sie ein Tool, mit dem es möglich ist, die neue Firmware auf den Flash-Speicher des ESP8266-Moduls hochzuladen. Sie finden ein passendes Programm auf der Herstellerseite unter\nhttps://www.espressif.com/en/support/download/other-tools\nund dort beim Punkt Flash Download Tools (derzeit Version V3.6.5). Laden Sie die Zip-Datei herunter und entpacken Sie es an geeigneter Stelle um anschließend die darin enthaltene EXE-Datei zu starten. Es öffnet sich zunächst ein Terminal Fenster und nach kurzer Wartezeit haben Sie vier Button zur Auswahl. Entscheiden Sie sich für den Button mit der Beschriftung ESP8266 Download Tool. Sie gelangen in ein weiters Fenster, wie auf dem unteren Bild zu sehen. In diesem Fenster können Sie nun die neue Firmware-Datei in dem auf dem Bild grün hervorgehobenen Feld auswählen. Die neue Firmware können Sie hier herunterladen. Es handelt sich um die Datei NanoESP_FW_11062019.bin.\nFirmware11062019\nGeben Sie außerdem in dem Textfeld rechts daneben die Adresse 0x00000 ein und übernehmen Sie auch die restlichen Einstellungen von dem Bild. Außerdem muss das Häkchen links neben dem Dateifeld gesetzt sein. Bevor Sie nun aber mit Klick auf Start den Uploadvorgang beginnen können, müssen Sie zunächst noch ein paar Vorbereitungen am Board treffen.\nDas Firmware Upload Tool Sie können die Firmwaren nämlich nicht einfach auf den WLAN-Chip laden, denn Sie haben in der Regel nur die Möglichkeit, den ATmega328p-Chip zu Programmieren. Mit einem kleinen Trick können Sie aber dennoch den Controller direkt erreichen. Bauen Sie dazu folgende Schaltung auf:\nDie Schaltung für den Upgradevorgang Diese Schaltung wirkt auf den ersten Blick etwas seltsam. Zunächst besteht eine Drahtbrücke von GND zu RESET. Dadurch bleibt der ATmega328P dauerhaft resetet und funkt nicht dazwischen. Dann gibt es Drahtbrücken von RX und TX, also den Anschlüssen der Seriellen Schnittstelle, zu den Pins D12 und D11. Das hat den Grund, dass die Pins 11 und 12 mit den Seriellen Pins des ESP8266 verbunden sind, um diesen über eine Software-Serielle-Schnittstelle ansprechen zu können. Hier wird nun also der USB-to-Serial Chip statt mit dem ATmega328p direkt mit dem ESP8266 verbunden. Dadurch können Sie nun auch direkt ein Programm auf das WLAN-Modul hochladen.\nDer rechte Teil der Schaltung sieht noch seltsamer aus. Es gibt an dieser Stelle auch keine richtigen Steckplätze aber mit etwas Fingerspitzengefühl kann es reichen, den schwarzen Draht lose in den Kontakt zu legen. Sie müssen nämlich den Pin IO0 des ESP8266-Chips auf LOW setzen, damit der Chip in den Boot-Modus geht und Sie eine neue Firmware einspielen können. Anschließend müssen Sie den ESP8266 resetten, indem Sie das braune Kabel kurz mit dem auf dem Bild unter dem losen Ende liegenden Pin (auf dem Board mit NRST beschriftet) verbinden.\nDa das Board nun im Boot-Modus ist, können Sie im Download Tool den Button Start drücken, um den Upload Vorgang zu starten. Der grüne Balken sollte nun durchlaufen bis schließlich das Wort FINISH erscheint. Damit sollte die neue Firmware hochgeladen sein.\nDas Problem ist nun allerdings, dass das Board in dem aktuellen Zustand eine Baudrate von 115200 verwendet. Die Software-Serielle-Schnittstelle arbeitet aber nur zuverlässig bis zu einer Baudrate von 19200. Aber auch dafür gibt es Abhilfe. Trennen Sie zunächst alle Drahtverbindungen, um den NanoESP in den normalen Betriebszustand zu versetzen. Trennen Sie ausserdem das Board einmal kurz komplett vom USB-Kabel, um die beiden Controller zu resetten. Öffnen Sie dann den Arduino Sketch Reinitialisation, der sich ebenfalls in dem eben heruntergeladenen Verzeichnis befindet. Laden Sie das Programm anschließend über den Upload-Button auf den NanoESP (Einstellungen wie richtigen Prozessor und Com-Port beachten). Bei dem Sketch handelt es sich um das Programm, das sich auch im Auslieferungszustand auf dem Board befindet. Es sorgt dafür, dass am WLAN-Modul einige wichtige Voreinstellungen vorgenommen werden, unter anderem die Baudrate. Hat alles wie gewünscht funktioniert, leuchtet die LED 13 (auf der Platine mit D3 beschriftet) im Anschluss dauerhaft. Damit haben Sie nun ein Board wie im Auslieferungszustand – nur mit neuerer Firmware.\nZusätzlich zu der Verbesserten Performance gibt es nun auch ein paar neue Befehle, die Sie ausprobieren können. Dazu können Sie das Programm P01_SoftwareSerial aus dem Zip-Ordner öffnen und hochladen. Anschließend öffnen Sie den Seriellen Monitor und stellen eine Baudrate von 19200 ein. Zudem muss die Option NL und CR im unteren Dropdown Menü ausgewählt sein.\nWPS Ein neuer Befehl den ich vorstelle nennt sich WPS. Die meisten Router unterstützen nämlich die sogenannte WPS (Wi-Fi Protected Setup) Funktion, über die Geräte eine Verbindung zum Router herstellen können, ohne zuvor die WLAN-Daten wissen zu müssen. Dazu geben Sie zunächst den Befehl\nAT+WPS=1\nein, um den WPS-Modus auf dem Board zu starten. Anschließend gehen Sie zum Router und drücken Sie dort die WPS-Taste. Sie haben dafür meistens bis zu zwei Minuten Zeit. Router und Board versuchen sich nun zu finden und eine Verbindung aufzubauen. War dies erfolgreich erscheint im Seriellen Monitor die Meldung:\nwps success,connecting ap \u0026hellip;\nFalls es beim ersten Versuch nicht funktioniert hat, probieren Sie den Vorgang erneut.\nSSL/TLS Ein neuer Standard für das sichere Kommunizieren mit Webservern lautet HTTPS. Wenn Sie die Webseite http://example.com aufrufen, meldet Ihr Browser wahrscheinlich, dass die Verbindung nicht gesichert ist. Wenn Sie die Webseite https://example.com aufrufen, wir ihr Browser keine Sicherheitsbedenken melden. Der Unterschied liegt vor darin, dass ein weiteres Verschlüsselungsprotokoll zwischen TCP und HTTP verwendet wird. Dieses Protokoll heißt TLS (engl. für Transportsicherheit) beziehungswiese SSL (Secure Sockets Layer). Wenn Sie die neue Modul-Firmware auf dem Board installiert haben, können Sie dieses sichere Protokoll testen.\nSSL ist recht Ressourcenhungrig, da es ein komplexes Verschlüsselungsprotokoll mit Zertifikaten ist. Das bedeutete im ersten Schritt müssen Sie den für SSL verfügbaren Speicher des Boards hochsetzen. Dies geschieht mit dem Befehl:\nAT+CIPSSLSIZE=4096\nSie stellen also rund 4 kB des Arbeitsspeichers des WLAN-Moduls für die SSL-Kommunikation bereit. Beim resetten des Boards ist der Speicher aber wieder beim alten Wert. Die nächsten Schritte sind fast identisch zu den vorherigen, mit der Ausnahme, dass Sie beim Verbindungsaufbau statt TCP SSL angeben und sich der Port von 80 auf 443 ändert:\nAT+CIPSTART=\u0026ldquo;SSL\u0026rdquo;,\u0026ldquo;www.example.com\u0026rdquo;,443\nMit der neuen Firmware können Sie auch einen neuen Sende-Befehl ausprobieren, nämlich\nAT+CIPSENDEX=200\nEr ist dem schon bekannten Befehl sehr ähnlich mit dem Unterschied, dass es möglich ist dem Modul mitzuteilen, dass die Nachricht auch vor dem Erreichen der zuvor angegebenen Zeichenanzahl zu Ende ist und gesendet werden kann. Der Vorteil ist, dass man die Zeichen seiner Nachricht nicht genau abzählen muss, sondern einfach schätzt wie viele Zeichen maximal verwendet werden und abschließend ein \u0026ldquo;\\0\u0026rdquo; einfügt, um das Ende zu kennzeichnen. Sie können also nach dem CIPSENDEX Befehl mit einer maximalen Nachrichtenlänge von 200 die folgenden Zeilen eingeben:\nGET / HTTP/1.1*[Enter]*\nHost:www.example.com*[Enter]*\n[Enter]\n[Enter]\n\\0*[Enter]*\nUnd schon erhalten Sie eine Antwort vom Webserver über einen gesicherten Kommunikationskanal.\nEine vollständige Liste der AT-Befehle der SDK Version V2.0.0 ist als PDF dem in dem ZIP-Ordner enthalten.\n","permalink":"https://iot.fkainka.de/nanoesp-updaten/","summary":"\u003cp\u003eDas NanoESP-Board, auch als Pretzelboard bekannt, ist nun schon vor einer ganzen Weile erschienen. Dennoch bekomme ich immer noch Mails von Leuten, die Hilfe benötigen oder Fragen haben. Zuletzt erreicht mich eine Mail mit der Frage, ob man die Firmware des ESP8266 Chips auf einen neueren Stand bringen könnte. Der für das WLAN zuständige Mikrocontroller hat eine AT-Firmware aus dem Jahre 2015 und mittlerweile gibt es verbesserte Versionen der AT-Firmware.  Das Problem ist allerdings, dass der Flash-Speicher Chip, auf dem sich die Firmware zum ESP-Controller befindet, nur eine Kapazität von 4 Mbit (also 512 kB) hat und deswegen nicht mit allen neueren Firmware Versionen kompatibel ist. Dennoch habe ich nach einigem Recherchieren eine Firmwareversion gefunden, die kompatibel ist und zudem neue Möglichkeiten bereitstellt. Deswegen finden Sie hier eine Anleitung, wie Sie das Board updaten können.\u003c/p\u003e","title":"NanoESP Updaten"},{"content":"Hey,\nI\u0026rsquo;ve made Blynk_Tag5 app. You are welcome to try it out!\nTo start using it:\nDownload Blynk App: http://j.mp/blynk_Android or http://j.mp/blynk_iOS\nTouch the QR icon and point the camera to the code below or open the link below - http://tinyurl.com/hpo76l3\nEnjoy my app!\n","permalink":"https://iot.fkainka.de/check-out-blynk_tag5-app-ive-made/","summary":"\u003cp\u003eHey,\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve made Blynk_Tag5 app. You are welcome to try it out!\u003c/p\u003e\n\u003cp\u003eTo start using it:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eDownload Blynk App: \u003ca href=\"http://j.mp/blynk_Android\"\u003ehttp://j.mp/blynk_Android\u003c/a\u003e or \u003ca href=\"http://j.mp/blynk_iOS\"\u003ehttp://j.mp/blynk_iOS\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTouch the QR icon and point the camera to the code below or open the link below - \u003ca href=\"http://tinyurl.com/hpo76l3\"\u003ehttp://tinyurl.com/hpo76l3\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnjoy my app!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e","title":"Check out Blynk_Tag5 app I've made."},{"content":"Hallo Forum!\nHabe mich 2 Monate nach der Adventszeit (leider) mit dem Kalender beschäftigt.\nAlles soweit hat super funktioniert \u0026hellip; bis Tag 22.\nDann hats Puff gemacht und aus \u0026ldquo;Gründen\u0026rdquo; hat sich der Temperatursensor und Helligkeitssensor in grauen Dampf aufgelöst.\nGibt es eine Ersatzteilliste?\nWürde gerne ein Temperatursensor wieder bauen und diesen in mein OpenHAB einbinden.\nBisher bin ich aber auf keine Aussagekräftige Liste gestoßen, welche brauchbare Ersatzteile auflistet.\n","permalink":"https://iot.fkainka.de/forum/topic/ersatzteilliste/","summary":"\u003cp\u003eHallo Forum!\u003cbr\u003e\nHabe mich 2 Monate nach der Adventszeit (leider) mit dem Kalender beschäftigt.\u003cbr\u003e\nAlles soweit hat super funktioniert \u0026hellip; bis Tag 22.\u003c/p\u003e\n\u003cp\u003eDann hats Puff gemacht und aus \u0026ldquo;Gründen\u0026rdquo; hat sich der Temperatursensor und Helligkeitssensor in grauen Dampf aufgelöst.\u003cbr\u003e\nGibt es eine Ersatzteilliste?\u003c/p\u003e\n\u003cp\u003eWürde gerne ein Temperatursensor wieder bauen und diesen in mein OpenHAB einbinden.\u003cbr\u003e\nBisher bin ich aber auf keine Aussagekräftige Liste gestoßen, welche brauchbare Ersatzteile auflistet.\u003c/p\u003e","title":"Ersatzteilliste"},{"content":"Hallo Community\nmit Arduinos habe ich etwas Erfahrung und so wollte ich mit einem NanoESP mal einen Temperaturfühler bauen.\nDas Board erscheint im Gerätemanager als COMXY, der Serial Monitor ist auf 19200 und \u0026ldquo;CR und NL\u0026rdquo; eingestellt.\nDas Board meldet sich mit:\nBaudrate OK\nConfig OK\nConfiguration successfull\nServer OK\nJedoch nimmt es keinerlei Befehle an. Nicht mal ein simples AT funktioniert. Passiert einfach nichts. Irgendwie sieht es so aus, wie wenn die Befehle nicht beim Board ankommen würden.\nBisherige Versuche:\nLaptop mit Windows 10 (1809), 64bit\nLaptop mit Windows 7, 64bit\nDesktop PC mit Windows 10 (1809), 64bit\nTreiber CH341SER (verschiedene Versionen)\nEin zweites, baugleiches NanoESP Board\n3 verschiedene USB Kabel\nVerschiedene (USB 2) Ports an den obigen Geräten ausprobiert\nMit Microsoft \u0026ldquo;devcon\u0026rdquo; aus dem Windows Driver Kit die USB Geräte neu installiert\nDas Resultat ist immer dasselbe, egal welches der 2 Boards ich wo anstecke. Um die Arduino Umgebung auch noch auszuschliessen habe ich ein simples Terminalprogramm (PUTTY) benutzt. Auch hier meldet sich das Board, nimmt aber nichts entgegen. Und langsam aber sicher bin ich mit meinem Latein am Ende :-(\nHabe ich da was übersehen? Hat das jemand von Euch auch schon gehabt?\nDanke für jeden Hinweis, der mir weiterhelfen könnte!\n1 Antwort Herbie – 01.01.2019\nUpdate:\nInternet sei Dank habe ich das Problem gelöst.\nLetztlich habe ich die Fehlermeldung beim Upload übersehen. Die sagte mir zwar nicht viel, es hat sich aber herausgestellt, dass auf meinem NanoESP ein alter BootLoader installiert ist und dieser in der Arduino IDE als Prozessor ausgewählt werden muss. Dann ging auch der Upload und das Board hat die AT Befehle entgegengenommen. Wohl ein Stolperstein für Anfänger ;-)\nAllen weiterhin viel Spass in der IoT Welt!\n","permalink":"https://iot.fkainka.de/forum/topic/nanoesp-nimmt-keine-befehle-an/","summary":"\u003cp\u003eHallo Community\u003c/p\u003e\n\u003cp\u003emit Arduinos habe ich etwas Erfahrung und so wollte ich mit einem NanoESP mal einen Temperaturfühler bauen.\u003c/p\u003e\n\u003cp\u003eDas Board erscheint im Gerätemanager als COMXY, der Serial Monitor ist auf 19200 und \u0026ldquo;CR und NL\u0026rdquo; eingestellt.\u003cbr\u003e\nDas Board meldet sich mit:\u003cbr\u003e\nBaudrate OK\u003cbr\u003e\nConfig OK\u003cbr\u003e\nConfiguration successfull\u003cbr\u003e\nServer OK\u003c/p\u003e\n\u003cp\u003eJedoch nimmt es keinerlei Befehle an. Nicht mal ein simples AT funktioniert. Passiert einfach nichts. Irgendwie sieht es so aus, wie wenn die Befehle nicht beim Board ankommen würden.\u003c/p\u003e","title":"NanoESP nimmt keine Befehle an"},{"content":"Hallo zusammen,\ndas war es dann wohl mit dem Kalender. Ich bin - um es vorsichtig auszudrücken - enttäuscht:\nBis heute ist der Quelltext für den NodeESP nicht frei zugänglich. Das ist vor allem für diejenigen sehr ärgerlich, die auch nach Weihnachten mit dem Board weitertüfteln wollen. Was hilft mir z. B. eine Deep-Sleep-Demo (Tag 10), wenn ich die Umsetzung auf dem NodeESP nicht nachverfolgen kann? In mir wächst der Verdacht, dass der Code nicht vorzeigbar ist. Node-RED kannte ich nicht und fand es anfangs interessant. Auf Dauer wurde es aber langweilig und ich hätte mich lieber näher mit dem NodeESP befasst. Die Beispiele sind zum Teil doch arg bemüht: wie realistisch ist es, einen Tastendruck auszuwerten, die Info \u0026ldquo;Taste gedrückt\u0026rdquo; um die Welt zum MQTT-Broker zu senden, der dann die Info \u0026ldquo;Licht an\u0026rdquo; zurücksendet (Tag 7)? Wer benutzt den einen Feuchte-Sensor und dazu einen NTC, um an einem Punkt Temperatur und Feuchte zu messen? Dafür gibt es schon länger Sensoren, die beides können. Sicher, das sind Beispiele zum Verständnis. Aber etwas mehr Realitätsnähe hätte nicht geschadet. Der Materialeinsatz war wieder überschaubar, außerdem z. T. defekt und nicht richtig zugeordnet: Eine der beiden RGB-LEDs war bei mir defekt. Die IR-Sendediode war bei meinem Kalender vertauscht mit der RGB-LED am 24.12. Ich musste also im Begleitheft vorblättern und suchen, wann eine RGB-LED dran ist. Erster Treffer: 19.12. – in dem Fach war jedoch auch eine RGB-LED. Zweiter Treffer: 24.12. – dort war dann der IR-Sender für den 16.12. Dazu der Spar-Klassiker „Hinter der heutigen Tür befindet sich ein Widerstand, den wir aber erst morgen brauchen“. Am nächsten Tag ist dann eine LED drin… Wirklich gut fand ich die Beispiele mit der IR-Fernbedienung. Ich vermute mal, dass es treue Fans gibt, die den Kalender in jedem Jahr kaufen. Ich hatte 2016 schon einen (mit dem NanoESP) und hatte mehrere \u0026ldquo;Déjà-vus\u0026rdquo;: wieder MQTT, wieder Cheerlights… Da stellt sich die Frage nach der Zielgruppe, die ja hier im Forum auch schon gestellt wurde:\nWer mal ins „IoT“ reinschnuppern möchte, der kann das mit dem Kalender tun. Nach Kalenderablauf kann er die Materialien nicht gut nutzen, da der Quellcode fehlt, Bauteile nicht genau bezeichnet sind usw. Wer schon einen solchen Kalender hatte, der langweilt sich bei MQTT, Cheerlights usw. Nach Kalenderablauf kann er die Materialien nicht gut nutzen, da der Quellcode fehlt, Bauteile nicht genau bezeichnet sind usw. Wer sollte also einen solchen Kalender ein zweites Mal kaufen?\nIch hoffe, dass die Fa. Conrad hier mitliest. Im Rahmen der Kundenbindung sollte sie das Konzept für den IoT-Adventskalender überdenken und die Qualitätskontrolle verbessern.\nNun danke ich allen Beteiligten, gerade auch den freiwilligen Helfern im Forum.\nEin frohes neues Jahr und viel Spaß mit dem IoT wünscht euch\njue\n6 Antworten iot-nutzer – 14.03.2019\nAuch von mir ein Hallo zusammen.\nIch hänge mich hier mit dran, statt ein neues Thema zu erstellen, weil ich mich den Ausführungen von jue anschließen möchte.\nInsbesondere vermisse ich noch immer eine Liste mit den genauen Bezeichnungen der einzelnen Bauteile. Solange ich nicht weiß, um welche Bauteile es sich handelt, ist eine Weiterverwendung in eigenen Projekten oder Erweiterungen schwierig bis unmöglich. Im jetzigen Zustand betrachte ich daher den Kalender im Wesentlichen als Elektroschrott. Der fehlende Quellcode trägt dazu ebenfalls bei.\nFalls also doch jemand eine Teileliste hat (oder sogar eine Sammlung mit den technischen Spezifikationen der Bauteile) wäre ich sehr an einer Kopie interessiert.\nViele Grüße,\nD\nHC05 – 04.11.2019\nHallo,\nja, der fehlende Code - sprich die BlackBox NodeESP - stört(e)?!\nInzwischen scheint aber doch etwas passiert zu sein.\nEs gibt neue Firmware-Updates\nu. eine Github-Seite:\nhttps://github.com/FKainka/NodeESP_Firmware.git\nIn der aktuellen Firmware ist auch ein Editor für den HTML-Kram enthalten. Hab\u0026rsquo;s gerade entdeckt - daher noch keine Bewertung möglich.\nviele Grüße - hc\nAnhänge:\nMalte – 01.12.2019\nHallo,\nGibt es das Forum noch?\nLg Malte\nJovel – 03.12.2019\nMoin Malte,\nhabe mich gerade mal angemeldet.\nMalte – 03.12.2019\nOk cool\nrklass – 04.12.2019\nDas sehe ich genauso, bin seeeehr enttäuscht.\n","permalink":"https://iot.fkainka.de/forum/topic/kalender-2018-mein-fazit/","summary":"\u003cp\u003eHallo zusammen,\u003cbr\u003e\ndas war es dann wohl mit dem Kalender. Ich bin - um es vorsichtig auszudrücken - enttäuscht:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBis heute ist der Quelltext für den NodeESP nicht frei zugänglich. Das ist vor allem für diejenigen sehr ärgerlich, die auch nach Weihnachten mit dem Board weitertüfteln wollen. Was hilft mir z. B. eine Deep-Sleep-Demo (Tag 10), wenn ich die Umsetzung auf dem NodeESP nicht nachverfolgen kann? In mir wächst der Verdacht, dass der Code nicht vorzeigbar ist.\u003c/li\u003e\n\u003cli\u003eNode-RED kannte ich nicht und fand es anfangs interessant. Auf Dauer wurde es aber langweilig und ich hätte mich lieber näher mit dem NodeESP befasst.\u003c/li\u003e\n\u003cli\u003eDie Beispiele sind zum Teil doch arg bemüht: wie realistisch ist es, einen Tastendruck auszuwerten, die Info \u0026ldquo;Taste gedrückt\u0026rdquo; um die Welt zum MQTT-Broker zu senden, der dann die Info \u0026ldquo;Licht an\u0026rdquo; zurücksendet (Tag 7)? Wer benutzt den einen Feuchte-Sensor und dazu einen NTC, um an einem Punkt Temperatur und Feuchte zu messen? Dafür gibt es schon länger Sensoren, die beides können. Sicher, das sind Beispiele zum Verständnis. Aber etwas mehr Realitätsnähe hätte nicht geschadet.\u003c/li\u003e\n\u003cli\u003eDer Materialeinsatz war wieder überschaubar, außerdem z. T. defekt und nicht richtig zugeordnet: Eine der beiden RGB-LEDs war bei mir defekt. Die IR-Sendediode war bei meinem Kalender vertauscht mit der RGB-LED am 24.12. Ich musste also im Begleitheft vorblättern und suchen, wann eine RGB-LED dran ist. Erster Treffer: 19.12. – in dem Fach war jedoch auch eine RGB-LED. Zweiter Treffer: 24.12. – dort war dann der IR-Sender für den 16.12. Dazu der Spar-Klassiker „Hinter der heutigen Tür befindet sich ein Widerstand, den wir aber erst morgen brauchen“. Am nächsten Tag ist dann eine LED drin…\u003c/li\u003e\n\u003cli\u003eWirklich gut fand ich die Beispiele mit der IR-Fernbedienung.\u003c/li\u003e\n\u003cli\u003eIch vermute mal, dass es treue Fans gibt, die den Kalender in jedem Jahr kaufen. Ich hatte 2016 schon einen (mit dem NanoESP) und hatte mehrere \u0026ldquo;Déjà-vus\u0026rdquo;: wieder MQTT, wieder Cheerlights…\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDa stellt sich die Frage nach der Zielgruppe, die ja hier im Forum auch schon gestellt wurde:\u003c/p\u003e","title":"Kalender 2018 - mein Fazit"},{"content":"Hallo,\nmein Board hat bist gestern einwandfrei Funktion.\nIch habe dann am Board die Rest Taste gedrückt und seitdem habe ich keine Verbindung mehr.\nEs startet der Serialmonitor, der COM Port wird angezeigt und stimmt auch mit dem Gerätemanager überein.\nBaudrate ist bei 19200\nIm Serialmonitor kann ich AT Befehle eingeben, diese werden aber nicht weitergegeben, Wenn ich einen Sketch lade kommen Fehler\nDiese beginnen alle mit ESP SEND ERROR + dem AT Befehl\nESP SEND ERROR: AT+RST\nESP SEND ERROR: AT+CWMODE=1\nESP SEND ERROR: AT+CWJAP=\u0026ldquo;WLAN\u0026rdquo;,\nESP SEND ERROR: AT+CIPMODE=0\nESP SEND ERROR: AT+CIPMUX=0\nVielleicht weiß jemand Rat\nDanke Frank\n2 Antworten paulaner – 31.12.2018\nHallo Frank,\nfang einfach bei Tag 1 an.\nTag 1 von den Programmen Conrad!\nIch habe hier 3 Verionen der Programme, fk, Conrad, Franzis alle 2016 und dann noch 2015.\n2017 war ESP2866 mit Bluetooth.\nAber ich habe gerade das Programm in den Nano \u0026lsquo;geschoben\u0026rsquo; und im Monitor Befehle eingegeben, regiert.\nViel Erfolg\npaulaner – 31.12.2018\n\u0026lsquo;2017 war ESP2866 mit Bluetooth.\u0026rsquo;\nprinzipiell war es ja kein ESP, ich meine natürlich die Kommunikation per BT.\nAlso ein Nano mit Bluetoothmodul.\n","permalink":"https://iot.fkainka.de/forum/topic/keine-verbindung-zu-nano-board/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nmein Board hat bist gestern einwandfrei Funktion.\u003cbr\u003e\nIch habe dann am Board die Rest Taste gedrückt und seitdem habe ich keine Verbindung mehr.\u003cbr\u003e\nEs startet der Serialmonitor, der COM Port wird angezeigt und stimmt auch mit dem Gerätemanager überein.\u003cbr\u003e\nBaudrate ist bei 19200\u003cbr\u003e\nIm Serialmonitor kann ich AT Befehle eingeben, diese werden aber nicht weitergegeben, Wenn ich einen Sketch lade kommen Fehler\u003cbr\u003e\nDiese beginnen alle mit ESP SEND ERROR + dem AT Befehl\u003cbr\u003e\nESP SEND ERROR: AT+RST\u003cbr\u003e\nESP SEND ERROR: AT+CWMODE=1\u003cbr\u003e\nESP SEND ERROR: AT+CWJAP=\u0026ldquo;WLAN\u0026rdquo;,\u003cbr\u003e\nESP SEND ERROR: AT+CIPMODE=0\u003cbr\u003e\nESP SEND ERROR: AT+CIPMUX=0\u003c/p\u003e","title":"Keine Verbindung zu nano Board"},{"content":"Hinter dem letzten Türchen des Adventskalenders befindet sich eine weitere programmierbare RGB-LED. Damit haben Sie jetzt zwei LEDs, die Sie zu einer kleinen Weihnachtsbaumbeleuchtung verbinden können. Dazu benötigen Sie den folgenden Aufbau.\nDer Aufbau des Weihnachtsbaumlichts. Die langen Beinchen der LEDs befinden sich rechts Aktivieren Sie dann das Programm und importieren Sie den Flow des heutigen Tages. Deaktivieren Sie alle vorangegangenen Flows und ändern Sie gegebenenfalls die Broadcast-IP des UDP-Nodes.\nDer letzte Flow des Adventskalenders Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow enthält wieder ein paar Userinterface-Elemente, allen voran zwei Color-Picker-Elemente, über die Sie die beiden LEDs steuern können. Es gibt aber noch zwei Elemente, und zwar ein Switch und ein Element zum Einstellen einer Zahl. Wenn Sie den Button drücken, sehen Sie, wie sich die beiden ColorPicker-Elemente verändern. Der Kreis, der den aktuellen Farbwert anzeigt, wandert laufend im Kreis herum. Gleichzeitig ändern sich die Farben der beiden LEDs am NodeESP-Board. Sie können auch die Fade-Speed-Zeit verändern und so einen langsameren oder schnelleren Wechsel einstellen. Außerdem können Sie während des Fade-Vorgangs die Farbe einer LED verändern. Der Verlauf geht dann ab dem neuen Punkt weiter. Das Gesamtergebnis ist eine kleine schöne Beleuchtung, die Sie sich in den Weihnachtsbaum hängen können. In diesem Sinne wünsche ich Ihnen ein schönes Weihnachtsfest.\nDas Userinterface mit den beiden Color-Pickern ","permalink":"https://iot.fkainka.de/day24-2018/","summary":"\u003cp\u003eHinter dem letzten Türchen des Adventskalenders befindet sich eine weitere programmierbare RGB-LED. Damit haben Sie jetzt zwei LEDs, die Sie zu einer kleinen Weihnachtsbaumbeleuchtung verbinden können. Dazu benötigen Sie den folgenden Aufbau.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day24_2RGB_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2596\" src=\"/images/2018/11/Day24_2RGB_Steckplatine.png\" alt=\"Der Aufbau des Weihnachtsbaumlichts. Die langen Beinchen der LEDs befinden sich rechts\" width=\"348\" height=\"476\" data-id=\"2596\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau des Weihnachtsbaumlichts. Die langen Beinchen der LEDs befinden sich rechts\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eAktivieren Sie dann das Programm und importieren Sie den Flow des heutigen Tages. Deaktivieren Sie alle vorangegangenen Flows und ändern Sie gegebenenfalls die Broadcast-IP des UDP-Nodes.\u003c/p\u003e","title":"Tag 24: Tannenbaumbeleuchtung"},{"content":"Hinter dem vorletzten Türchen des Adventskalenders befindet sich ein sogenannter Tilt-Sensor (Neigungssensor). Der Sensor erkennt, wenn er gekippt wird. Wir setzen ihn heute als Sensor für eine Alarmanlage ein. Der Lautsprecher von vor zwei Tagen dient uns dabei als Signalgeber. Dazu wird der folgende Aufbau benötigt.\nDer Aufbau Aktivieren Sie zunächst wie gewohnt das Programm des heutigen Tages und fügen Sie anschließend den Node-RED-Flow in die Umgebung ein. Passen Sie außerdem das MQTT-Topic an und deaktivieren Sie alle vorangegangenen Flows.\nDer Flow Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow wartet nun darauf, dass der Tilt-Sensor ausgelöst und eine Nachricht in das entsprechende Topic gepublisht wird. Dies löst einen Trigger-Node aus, der das Payload auf TRUE setzt. Dieser wird zum einen über ein Topic wieder an das Board gesendet, das einen Alarm auslöst. Der Trigger-Node sendet dann nach fünf Sekunden ein FALSE, um den Alarm wieder zu deaktivieren.\nGleichzeitig mit dem Alarmsignal über das Board gibt es in der oberen rechten Ecke noch eine Reihe von weiteren Nodes, die einen Alarm signalisieren. Zum einen gibt es heute einen Audio-out-Node, der über den Alarm informiert. Eine Textnachricht erscheint ebenfalls auf dem Userinterface. Außerhalb des Userinterface können Sie sich per Mail oder Twitter über einen Alarm informieren lassen. Ebenfalls möglich ist es, Nodes nachzuinstallieren, die Push-Nachrichten an das Smartphone senden können. Pushbullet ist beispielsweise einer dieser Services mit einer praktischen App. Somit ist Ihr smartes Heim auch vor Einbruch geschützt.\n","permalink":"https://iot.fkainka.de/day23-2018/","summary":"\u003cp\u003eHinter dem vorletzten Türchen des Adventskalenders befindet sich ein sogenannter Tilt-Sensor (Neigungssensor). Der Sensor erkennt, wenn er gekippt wird. Wir setzen ihn heute als Sensor für eine Alarmanlage ein. Der Lautsprecher von vor zwei Tagen dient uns dabei als Signalgeber. Dazu wird der folgende Aufbau benötigt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day23_Speaker_Tilt_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2590\" src=\"/images/2018/11/Day23_Speaker_Tilt_Steckplatine.png\" alt=\"Der Aufbau\" width=\"371\" height=\"566\" data-id=\"2590\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eAktivieren Sie zunächst wie gewohnt das Programm des heutigen Tages und fügen Sie anschließend den Node-RED-Flow in die Umgebung ein. Passen Sie außerdem das MQTT-Topic an und deaktivieren Sie alle vorangegangenen Flows.\u003c/p\u003e","title":"Tag 23: Alarmanlage"},{"content":"Hallo,\nIch habe nun seid einigen Tagen nichts mehr mit dem Adventskalender gemacht aber als ich gestern wieder etwas machen wollte funktionierte nichts mehr. Ich habe wie immer das Batteriefach angeschlossen und dann leuchtet auch schon die Onboard LED aber als ich dann versucht habe die Webseite zu erreichen ging dies nicht. Ich habe mich auch schon mit meinen Laptop im Hotspot angemeldet und dort hat es auch nicht Funktioniert.\nWürde mich über jede Hilfe freuen.\nLG. Jan\nAnhänge:\n1 Antwort paulaner – 23.12.2018\nHallo,\ndu benutzt Opera als Browser, ok..\nAber fangen wir am anfang wieder an!\nNimm Tag 1 und vergiss alles andere. Entweder Hotspot oder WPS.\nNimm die IP, wie du es ja schon gemacht hast, Bonjour kann warten.\nOb die sich geändert hat entscheidet dein Router, sollte da drin stehen.\nWenn nichts geht, hilft ein flashen der Firmware, sie fk. Link https://iot.fkainka.de/nodeesp-firmware-reinstallieren\nFragen, hier rein.\n","permalink":"https://iot.fkainka.de/forum/topic/nodeesp-nicht-mehr-erreichbar/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nIch habe nun seid einigen Tagen nichts mehr mit dem Adventskalender gemacht aber als ich gestern wieder etwas machen wollte funktionierte nichts mehr. Ich habe wie immer das Batteriefach angeschlossen und dann leuchtet auch schon die Onboard LED aber als ich dann versucht habe die Webseite zu erreichen ging dies nicht. Ich habe mich auch schon mit meinen Laptop im Hotspot angemeldet und dort hat es auch nicht Funktioniert.\u003cbr\u003e\nWürde mich über jede Hilfe freuen.\u003c/p\u003e","title":"NodeESP nicht mehr erreichbar"},{"content":"Hinter dem Türchen des 22. Tages befindet sich ein neuer Sensor, der die aktuelle Luftfeuchtigkeit messen kann. Wir benutzen ihn, um einen vollständigen Raumklimawächter zu realisieren. Dazu benötigen wir die folgende Schaltung.\nDie Schaltung des Raumklimawächters Der Versuch des heutigen Tages vereint drei Sensoren: den Temperatursensor (NTC), den Lichtsensor (Fototransistor) und den Luftfeuchtesensor. Zusammen können sie einen recht guten Eindruck der aktuellen Klimalage in einem Zimmer abgeben. Dazu müssen Sie aber zunächst das Programm des heutigen Tages starten.\nDas Programm misst alle 30 Sekunden alle Werte und überträgt sie über MQTT, was beispielsweise so aussieht:\n{\u0026ldquo;cmd”:”get_hum_state”,”Light”:3903,”Temp”:368,”HUMIDITY”:45}\nWenn Sie den Flow des heutigen Tages in Ihre Node-RED-Umgebung kopieren, natürlich nicht, ohne das persönliche Topic anzupassen und die vorherigen Flows zu deaktivieren, können Sie auf der GUI-Seite die gemessenen Werte einsehen. Ein Function-Node hat auch heute die Temperatur auf einen passenden Wert umgerechnet. Zur genaueren Kalibrierung sind die beiden Potis da, mit denen Sie die Werte Temperatur und Umgebungshelligkeit anpassen können.\nDer Flow zur Langzeitmessung Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Es gibt aber noch ein Zusatz-Feature. Alle fünf Minuten speichert das Programm nämlich die aktuell gemessenen Werte in eine Datei. Diese trägt den Namen climadata.txt und befindet sich in der Regel in dem Verzeichnis, in dem Node-RED arbeitet. Bei mir war dies:\nC:\\Users[USERNAME]\n[USERNAME] steht für den eigenen Windows-Benutzernamen. Sie können den Dateipfad aber auch in dem Node anpassen. Gespeichert wird übrigens in einem CSV-Format (Comma Separated Values), bei dem alle Werte durch ein Komma getrennt sind. Somit können Sie die Daten auch einfach in eine Excel-Tabelle einfügen und dort auswerten. Die Auswertung der Langzeitmessung wird dadurch kinderleicht.\n","permalink":"https://iot.fkainka.de/day22-2018/","summary":"\u003cp\u003eHinter dem Türchen des 22. Tages befindet sich ein neuer Sensor, der die aktuelle Luftfeuchtigkeit messen kann. Wir benutzen ihn, um einen vollständigen Raumklimawächter zu realisieren. Dazu benötigen wir die folgende Schaltung.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day22_Clima_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2584\" src=\"/images/2018/11/Day22_Clima_Steckplatine.png\" alt=\"Die Schaltung des Raumklimawächters\" width=\"432\" height=\"554\" data-id=\"2584\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDie Schaltung des Raumklimawächters\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDer Versuch des heutigen Tages vereint drei Sensoren: den Temperatursensor (NTC), den Lichtsensor (Fototransistor) und den Luftfeuchtesensor. Zusammen können sie einen recht guten Eindruck der aktuellen Klimalage in einem Zimmer abgeben. Dazu müssen Sie aber zunächst das Programm des heutigen Tages starten.\u003c/p\u003e","title":"Tag 22: Klimawächter"},{"content":"Hinter dem Türchen des 21. Tages finden Sie einen Lautsprecher. In dem heutigen Versuch werden wir damit etwas Musik abspielen. Dazu benötigen wir den folgenden einfachen Aufbau.\nVersuchsaufbau In diesem Versuch ist der Lautsprecher an einem der beiden DAC-Ausgänge des Boards angeschlossen. DAC bedeutet Digital/Analog-Converter und ermöglicht es, durch digitale Befehle ein analoges Signal zu erzeugen. In dem heutigen Versuch werden wir damit Töne erzeugen, genauer gesagt Töne wie von einem Piano. Die Noten, Pausen und Tonarten werden dabei per UDP übertragen, und zwar als Array von Zahlen.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Kopieren Sie zunächst den Node-RED-Flow des heutigen Tages in Ihre Umgebung, natürlich nicht, ohne die vorherigen zu deaktivieren. Außerdem müssen Sie noch die IP des UDP-Nodes auf die Broadcast-IP Ihres Boards anpassen. Wählen Sie zudem das Programm des heutigen Tages. Dann können Sie den Flow starten.\nEs gibt bereits vordefinierte Songs, die über das Userinterface gestartet werden können. Sie dürfen allerdings auch selbst Songs übersetzen oder komponieren. Dazu gibt es ein Textfeld, in das Sie Ihre Komposition kopieren können.\nDie Noten entsprechen dabei dem einfachen Notenschema und werden in der folgenden Form angegeben:\nNOTE_C1, NOTE_CS1, NOTE_D1, NOTE_DS1, NOTE_E1, NOTE_F1, NOTE_FS1, NOTE_G1, NOTE_GS1, NOTE_A1, NOTE_AS1, NOTE_B1\nDie Zahl hinter der Note entspricht der Oktave. Sie können die 1 durch eine Zahl von 1 bis 7 ersetzen. Außerdem können Sie die Notenlänge mit dem Präfix BEAT angeben, um so halbe, Viertel- oder Achtelnoten daraus zu machen. Das BEAT-Attribut bezieht sich immer auf die davorstehende Note. Standard ist BEAT_1, daher muss es nicht extra vor jeder Note angegeben werden. Es gelten folgende Notenlängen:\nBEAT_025, BEAT_05, BEAT_075, BEAT_1, BEAT_125, BEAT_15, BEAT_175, BEAT_2, BEAT_25, BEAT_3, BEAT_4, BEAT_5\nUm zum Beispiel den Anfang von Beethovens berühmter 5. Symphonie zu spielen, kann folgender Text in das Fenster eingegeben werden:\nNOTE_G5,BEAT_075,NOTE_G5,BEAT_075,NOTE_G5,BEAT_075,NOTE_E5,BEAT_5, NOTE_F5,BEAT_075,NOTE_F5,BEAT_075,NOTE_F5,BEAT_075,NOTE_D5,BEAT_5\nSie müssen allerdings kein Musikgenie sein. Probieren Sie einfach ein paar Noten und Notenlängen aus und komponieren Sie so Ihr eigenes Lied. Oder setzen Sie ein bekanntes Lied in dieses System um. Ihrer Fantasie sind dabei keine Grenzen gesetzt.\n","permalink":"https://iot.fkainka.de/tag-21-piano-player/","summary":"\u003cp\u003eHinter dem Türchen des 21. Tages finden Sie einen Lautsprecher. In dem heutigen Versuch werden wir damit etwas Musik abspielen. Dazu benötigen wir den folgenden einfachen Aufbau.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day21_Speaker_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2580\" src=\"/images/2018/11/Day21_Speaker_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"418\" height=\"638\" data-id=\"2580\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eIn diesem Versuch ist der Lautsprecher an einem der beiden DAC-Ausgänge des Boards angeschlossen. DAC bedeutet \u003cstrong\u003eDigital/Analog-Converter\u003c/strong\u003e und ermöglicht es, durch digitale Befehle ein analoges Signal zu erzeugen. In dem heutigen Versuch werden wir damit Töne erzeugen, genauer gesagt Töne wie von einem Piano. Die Noten, Pausen und Tonarten werden dabei per UDP übertragen, und zwar als Array von Zahlen.\u003c/p\u003e","title":"Tag 21: Piano-Player"},{"content":"Hinter dem Türchen des heutigen Tages befindet sich ein NTC-Widerstand (Negative Temperature Coefficient) zur Messung der Temperatur. Zusammen mit dem Fototransistor und ein paar Drähten bauen wir damit einen Pflanzenwächter, der uns vor schlechten Bedingungen für eine zu überwachende Pflanze warnt. Dazu benötigen wir den folgenden Aufbau und das Programm des aktuellen Tages.\nDer Pflanzenwächter Die beiden gelben Drähte sind dabei einfache Drähte, die in die Pflanzenerde gesteckt werden können. Sie sollen überwachen, wie feucht die Erde ist. Für erste Tests reicht es aber aus, beide Drähte mit einem Finger zu berühren.\nDer heutige Flow Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow des Tages kann wieder einfach in die Node-RED-Umgebung importiert werden, natürlich nicht, ohne die vorherigen zu deaktivieren und das Topic anzupassen. Über das out-Topic wird nun ein JSON-String empfangen, der in etwa so aussieht:\n{\u0026ldquo;cmd”:”get_hum_state”,”Light”:3903,”Temp”:368,”HUMIDITY”:45}\nEs werden also die Daten Licht, Temperatur und Feuchtigkeit übertragen. Licht ist hierbei wieder ein relativer Wert mit einem Wertebereich von 0 bis 4095, genau wie die gemessene Feuchtigkeit. Die Temperatur wird ebenfalls in diesem Wertebereich übermittelt. Da damit aber niemand etwas anfangen kann, gibt es einen Function-Node, der die Werte in Celsius umrechnet. Dargestellt werden die Werte praktisch auf der Nutzeroberfläche. Neben den Anzeigen finden sich dazu noch ein paar Regler.\nDas Userinterface des Pflanzenwächters Diese Regler sind dazu da, Grenzbereiche für die Messwerte festzulegen. Man kann jeweils einen Minimalund einen Maximalwert bestimmen. Wenn man auf einen Wert oder eine Grenze nicht testen möchte, kann man den Regler auch auf eine Extremposition setzen, die niemals vom Board gemessen werden kann. Wenn man also beispielsweise nicht möchte, dass nachts der Alarm für eine zu geringe Helligkeit angeht, kann man den Minimalregler auf –1 stellen.\nSollte einer der Grenzwerte überschritten werden, triggert der entsprechende Switch-Node, und eine Nachricht wird eingestellt, die dann über die UI ausgegeben wird. Da man diese häufig nicht geöffnet hat, kann man zusätzlich seine E-Mail-Zugangsdaten in den E-Mail-Node eintragen. Dann wird eine E-Mail gesendet, die daran erinnert, dass man mal wieder die Pflanze gießen sollte oder für bessere Lichtverhältnisse zu sorgen hat. So wird selbst die einfache Zimmerpflanze smart.\n","permalink":"https://iot.fkainka.de/day20-2018/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich ein NTC-Widerstand (\u003cstrong\u003eNegative Temperature Coefficient\u003c/strong\u003e) zur Messung der Temperatur. Zusammen mit dem Fototransistor und ein paar Drähten bauen wir damit einen Pflanzenwächter, der uns vor schlechten Bedingungen für eine zu überwachende Pflanze warnt. Dazu benötigen wir den folgenden Aufbau und das Programm des aktuellen Tages.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day20_Plant_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2574\" src=\"/images/2018/11/Day20_Plant_Steckplatine.png\" alt=\"Der Pflanzenwächter\" width=\"389\" height=\"460\" data-id=\"2574\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Pflanzenwächter\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDie beiden gelben Drähte sind dabei einfache Drähte, die in die Pflanzenerde gesteckt werden können. Sie sollen überwachen, wie feucht die Erde ist. Für erste Tests reicht es aber aus, beide Drähte mit einem Finger zu berühren.\u003c/p\u003e","title":"Tag 20: Pflanzenwächter"},{"content":"Hinter dem Türchen des heutigen Tages befindet sich eine ganz besondere LED. Es handelt sich um eine RGB-LED mit integriertem Controller (Typenbezeichnung PL9823, vergleichbar mit WS2812). Sie ermöglicht es, mehrere LEDs hintereinanderzuschalten und über ein Protokoll einzeln anzusteuern. Heute werden wir allerdings zunächst eine LED ansteuern. Dafür kommt ein Versuch gerade recht, der schon eine gewisse Tradition in meinen Adventskalendern hat: das Cheerlights-Projekt von Hans Schaaler. Für alle diejenigen, die das Projekt nicht kennen: Es geht um weltweit vernetzte bunte Lichter, die sich simultan über Twitter-Kommandos steuern lassen. Und dazu passt Node-RED sehr gut. Für den Versuch des heutigen Tages benötigen Sie den folgenden Aufbau und das Programm des heutigen Tages.\nSo wird die PL9823 richtig angeschlossen (lange Beinchen rechts). Die LED kann nun über eine Reihe von Kommandos gesteuert werden. Sie wird über den Begriff Pixel angesprochen. Am heutigen Tag werden wir vor allem sehen, wie man alle LEDs mit der gleichen Farbe ansteuern kann, denn wir haben heute ja nur eine LED. In einem späteren Versuch wird aber deutlich, mit welchen Kommandos man den LEDs einzelne Farben zuweisen kann.\nKommando im in-Topic Einstellungen {„cmd“:“set_pixel_hex“,„value“:“#FFFFFF“} Setzt alle LEDs auf den Farbwert im HEX-Format. {„cmd“:“set_pixel_rgb“,„value“:“rgb(255,255,255)“} Setzt alle LEDs auf den Farbwert im RGB-Format. {„cmd“:“set_pixel_hsv“,„value“:“hsv(120, 100%, 100%)“} Setzt alle LEDs auf den Farbwert im HSV-Format. {„cmd“:“get_pixel_hex“} Gibt die aktuelle Farbe im entsprechenden Format wieder, wird automatisch beim Setzen einer Farbe zurückgegeben. {„cmd“:“get_pixel_rgb“} {„cmd“:“get_pixel_hsv“} Das Cheerlights Cheerlights-Projekt hat eine Webseite (https://cheerlights.****com/), auf der Sie einige Informationen zu dem Projekt bekommen. Außerdem finden Sie dort eine Unterseite, bezeichnet mit Cheerlights API, auf der Sie eine Vielzahl von Möglichkeiten dazu erhalten, wie Sie den aktuellen Farbwert bekommen. Wir benutzen hier die Schnittstelle\nhttp://api.thingspeak.com/channels/1417/field/2/last.json\nüber die der aktuelle Wert als JSON-Value und im HEX-Format angeboten wird.\nIn dem Flow des heutigen Tages müssen wir einfach nur alle paar Sekunden diese Seite aufrufen und den aktuellen Wert extrahieren. Es wird überprüft, ob sich der Wert geändert hat. Ist das der Fall, wird die neue Farbe an das Board übertragen. Zusätzlich können Sie auch den Twitter-Node mit Ihren TwitterDaten konfigurieren, falls Sie bei Twitter angemeldet sind. Er sucht dann ebenfalls nach Tweets mit dem Cheerlights-Text und liest die Nachricht vor, während sie auf der GUI anzeigt wird.\nDer heutige Flow Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Doch wie können Sie die Farbe verändern? Das geht, indem Sie eine Twitter-Nachricht verfassen und damit Ihre und auch die Farbe aller anderen Cheerlights-Nutzer verändern. Die Nachricht muss zum einen #Cheerlights, @Cheerlights oder einfach nur das Stichwort Cheerlights enthalten, und zum anderen muss eine der vordefinierten Farben hinter dem Stichwort stehen. Zu den vordefinierten Farben gehören:\nred, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink\nEin möglicher Tweet lautet also:\nTesting my #cheerlights project on my #NodeESP with the color blue.\nDamit geben Sie sich und der ganzen Welt eine neue Farbe.\n","permalink":"https://iot.fkainka.de/day19-2018/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich eine ganz besondere LED. Es handelt sich um eine RGB-LED mit integriertem Controller (Typenbezeichnung PL9823, vergleichbar mit WS2812). Sie ermöglicht es, mehrere LEDs hintereinanderzuschalten und über ein Protokoll einzeln anzusteuern. Heute werden wir allerdings zunächst eine LED ansteuern. Dafür kommt ein Versuch gerade recht, der schon eine gewisse Tradition in meinen Adventskalendern hat: das Cheerlights-Projekt von Hans Schaaler. Für alle diejenigen, die das Projekt nicht kennen: Es geht um weltweit vernetzte bunte Lichter, die sich simultan über Twitter-Kommandos steuern lassen. Und dazu passt Node-RED sehr gut. Für den Versuch des heutigen Tages benötigen Sie den folgenden Aufbau und das Programm des heutigen Tages.\u003c/p\u003e","title":"Tag 19: Cheerlights"},{"content":"Hinter dem Türchen des heutigen Tages befindet sich eine kleine Diode. Wir werden diese Diode als Temperatursensor für besonders hohe Temperaturen nutzen. Damit ist es uns möglich, einen kleinen Kerzenwächter zu bauen.\nVersuchsaufbau Der Aufbau des heutigen Tages besteht, neben der Diode, aus einem Poti, das einfach als 10-kOhm-Widerstand herhält. Dieser Widerstand ist fix und kann auch nicht eingestellt werden. Das Board misst nun die Spannung an der Diode und überträgt die Werte über MQTT an Node-RED.\nDer Flow des Kerzenmelders Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow des heutigen Tages wertet nun ständig den gemessenen Wert aus. Sollte ein bestimmter Wert unterschritten werden (je höher die Temperatur, desto kleiner die gemessene Spannung), wird ein Alarm in Form einer vorgelesenen Textnachricht und einer Infobox ausgegeben. Sie können im Userinterface einen Schwellenwert für den Alarm einstellen. Wenn Sie nun die Diode so an den unteren Teil einer Kerze anlegen, dass die Flamme beim Abbrennen in die Nähe der Diode kommt, haben Sie einen praktischen Melder für eine abgebrannte Kerze.\n","permalink":"https://iot.fkainka.de/day18-2018/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich eine kleine Diode. Wir werden diese Diode als Temperatursensor für besonders hohe Temperaturen nutzen. Damit ist es uns möglich, einen kleinen Kerzenwächter zu bauen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day18_Diode_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2562\" src=\"/images/2018/11/Day18_Diode_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"458\" height=\"567\" data-id=\"2562\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDer Aufbau des heutigen Tages besteht, neben der Diode, aus einem Poti, das einfach als 10-kOhm-Widerstand herhält. Dieser Widerstand ist fix und kann auch nicht eingestellt werden. Das Board misst nun die Spannung an der Diode und überträgt die Werte über MQTT an Node-RED.\u003c/p\u003e","title":"Tag 18: Kerzenalarm"},{"content":"Hallo,\nich habe mir den Adventskalender selber geschenkt und fand es anfangs auch sehr interessant. Nach ein paar Tagen habe ich mich aber gefragt, für welche Zielgruppe er gedacht ist.\nIch bin eher auf der Software-Seite daheim und habe nicht viel Ahnung von Elektronik und auch nicht von Mikrocontrollern und hatte gehofft, etwas über die grundlegende Funktionsweise zu lernen.\nBei mir hat alles gut funktioniert. Wenn ich ein Kabel an irgendeiner Stelle anstecke und dann die LED blinkt, ist das schön, aber ich weiß nicht, warum ich das Kabel da angesteckt habe und nicht zwei Stellen weiter. Wofür ist beim esp32 welcher Pin zuständig? In meinem Fall wäre eine detailliertere Erklärung zu jedem Tag super gewesen.\nAndererseits ist der Kalender wohl auch nicht für erfahrene Leute gedacht, da die durch eine blinkende LED eher gelangweilt sind.\nIch finde zum esp32 auch im Internet keine einführende Erklärung. Zumiondest nicht zu dem, den wir verwenden.\nAber wie auch immer, ich bin trotzdem angefixt und werde mir wohl eines der Arduino Boards kaufen. Dazu gibt es zumindest haufenweise Dokumentation.\nGrüße, Stefan\n2 Antworten paulaner – 17.12.2018\nHallo Stefan,\nich schreibe dir mal, du hast ja diese Frage an alle in den Raum geworfen.\nZitat von dir:\nAndererseits ist der Kalender wohl auch nicht für erfahrene Leute gedacht \u0026hellip;\n\u0026lsquo;Erfahrene Leute\u0026rsquo;, ohne etwas Wissen von der Hardware kannst du auch nicht ernsthaft programmieren.\nArduino! ist was zum Lernen, genau wie ein Raspberry Pi zum Lernen ist und zwar für Kinder!\nDas das verwendete Board selbstgestrickt ist hat doch fk. erklärt, liest du nur oberflächlich?\nFühl dich bitte nicht beleidigt.\nLies alles nochmal, beschäftige dich damit, google nach den Komponenten und es wird alles klarer.\nDu kannst doch nicht einen Elektronikkurs im Adventskalenderformat erwarten.\nAnregungen ja, Bildung nein.\nGruß paulaner\nStefanO – 17.12.2018\nHallo Paulaner,\ndanke für die Antwort.\nIch denke, ich habe schon alles gelesen, fühle mich nur mit meinem Wissensstand nicht gut aufgehoben hier. Das wollte ich damit sagen. Ich bin in Sachen Mikrocontroller tatsächlich auf dem Stand eines Kindes und für mich ist es einfacher, mich mit Arduino einzulernen, wie ich heute schon festgestellt habe.\nIch frage mich nur, für welche Erfahrungsstufe dieser Kurs gedacht ist. Für Einsteiger also nicht (obwohl die Beschreibung der ersten Tage noch sehr danach klingt). Aber doch auch nicht für Fortgeschrittene? Mit Programmierung hat es ja bisher auch nicht viel zu tun. Es werden eher Tools vorgestellt, die das übernehmen.\nIst es für Leute mit Erfahrung in Elektronik aber nicht mit Mikrocontrollern?\nDanke und Grüße, Stefan\n","permalink":"https://iot.fkainka.de/forum/topic/zielgruppe/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe mir den Adventskalender selber geschenkt und fand es anfangs auch sehr interessant. Nach ein paar Tagen habe ich mich aber gefragt, für welche Zielgruppe er gedacht ist.\u003cbr\u003e\nIch bin eher auf der Software-Seite daheim und habe nicht viel Ahnung von Elektronik und auch nicht von Mikrocontrollern und hatte gehofft, etwas über die grundlegende Funktionsweise zu lernen.\u003cbr\u003e\nBei mir hat alles gut funktioniert. Wenn ich ein Kabel an irgendeiner Stelle anstecke und dann die LED blinkt, ist das schön, aber ich weiß nicht, warum ich das Kabel da angesteckt habe und nicht zwei Stellen weiter. Wofür ist beim esp32 welcher Pin zuständig? In meinem Fall wäre eine detailliertere Erklärung zu jedem Tag super gewesen.\u003cbr\u003e\nAndererseits ist der Kalender wohl auch nicht für erfahrene Leute gedacht, da die durch eine blinkende LED eher gelangweilt sind.\u003cbr\u003e\nIch finde zum esp32 auch im Internet keine einführende Erklärung. Zumiondest nicht zu dem, den wir verwenden.\u003c/p\u003e","title":"Zielgruppe?"},{"content":"Hinter dem Türchen des 17. Tages befindet sich ein weiteres Poti. Das bedeutet, dass nun für jede LED genau ein Poti zur Verfügung steht. Damit können wir das Programm von Tag 13, die smarten Lichter, um eine etwas praktischere und intuitivere Dimm-Funktion erweitern. Außerdem werden wir heute sehen, wie man mit Node-RED zeitgesteuerte Ereignisse startet.\nVersuchsaufbau Sie müssen das Programm des heutigen Tages in der Weboberfläche aktivieren. Anschließend können Sie den heutigen Flow in die Node-RED-Umgebung einfügen, natürlich nicht, ohne die vorherigen Flows zu deaktivieren und das MQTT-Topic an Ihre persönliche ID anzupassen.\nDie LEDs können nun, wie schon bekannt, über die Hardware-Buttons oder über das Userinterface anund ausgeschaltet werden. Die Helligkeit der einzelnen LEDs wird über die Potis gesteuert. Als Alternative zu den Buttons gibt es die Inject-Nodes unten links. Über diese können Zeiten angegeben werden, zu denen ein Befehl an das Board gesendet wird. Dazu müssen Sie wieder einfach nur doppelt auf den entsprechenden Node klicken, und schon können Sie einen Zeitpunkt und auch Tage auswählen, an denen die Nachricht geschickt werden soll. Somit können Sie beispielsweise eine automatische Lampe für Räume oder ein Aquarium einstellen oder an Arbeitstagen eine spezielle Beleuchtung aktivieren – ganz automatisch und ganz im Sinne von Smarthome.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow von Tag 17 ","permalink":"https://iot.fkainka.de/day17-2018/","summary":"\u003cp\u003eHinter dem Türchen des 17. Tages befindet sich ein weiteres Poti. Das bedeutet, dass nun für jede LED genau ein Poti zur Verfügung steht. Damit können wir das Programm von Tag 13, die smarten Lichter, um eine etwas praktischere und intuitivere Dimm-Funktion erweitern. Außerdem werden wir heute sehen, wie man mit Node-RED zeitgesteuerte Ereignisse startet.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day17_Poti2_Button2_LED2_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2556\" src=\"/images/2018/11/Day17_Poti2_Button2_LED2_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"335\" height=\"414\" data-id=\"2556\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eSie müssen das Programm des heutigen Tages in der Weboberfläche aktivieren. Anschließend können Sie den heutigen Flow in die Node-RED-Umgebung einfügen, natürlich nicht, ohne die vorherigen Flows zu deaktivieren und das MQTT-Topic an Ihre persönliche ID anzupassen.\u003c/p\u003e","title":"Tag 17: Zeitgesteuerte Lichter"},{"content":"Auf dieser Seite sollen Neuigkeiten zur Firmware veröffentlicht werden. Bugs können über die Kommentarfunktion gemeldet werden.\nNeusete Version: Download Link Git Repository: https://github.com/FKainka/NodeESP_Firmware Firmware Update 05.12.2019 Bug Hotfix: Neue SD-Library störte PULLUP-Funktion von Pin 18, Keine SD-Karte an Versuchen mit Pin 18 verwenden! Firnware Update 04.12.2019 (Stabilitäts Update) ESP32 Arduino Core updated (v1.11.1) Verschiedene Libraries geupdatet Update Vorgang verbessert (md5-Hash) Config-Verbesert Diverse Bug fixes Firnware Update 17.10.2019 (Smarthome Update) Apps für das Smarthome Lernpaket hinzugefügt Onboard HTML-Editor zum Verändern der integrierten Webseite und Uploaden von Dateien hinzugefügt (http://nodeesp.local/editor) Automatische SD-Karten Unterstützung hinzugefügt (SD-Karten werden automatisch unter http://nodeesp.local/sd eingebunden) Bessere Vorabinformationen beim Auswählen von Apps über die Config-Seite Neues Update-Verfahren direkt vom GitHub-Repository aus (https://github.com/FKainka/NodeESP_Firmware) Bug Fixes Firmware Update 16.12.2018 (Version 2 - Mit MQTT Fix) Es gibt nun eine neue Version dieser Firmware, in der der MQTT-Bug behoben ist. Dieses Update kann auch über die Update-Funktion auf der Config-Seite geladen werden. Download Link\nFehler von Tag 8: Frequenz vom Messen und Senden wurde von alle 100ms auf alle 2 Sekunden erhöht. Touch Sensibilität: Die Empfindlichkeit ist nun nur noch von 5 bis 70 einstellbar. Je niedriger der Wert umso sensibler ist die Touch Erkennung. MQTT und Login Daten: MQTT-Broker mit Login-Daten sollten nun unterstützt werden Alte Firmware (26.10.2018) Download Link\n","permalink":"https://iot.fkainka.de/firmware-neuigkeiten-und-bug-report/","summary":"\u003cp\u003eAuf dieser Seite sollen Neuigkeiten zur Firmware veröffentlicht werden. Bugs können über die Kommentarfunktion gemeldet werden.\u003c/p\u003e\n\u003ch2 id=\"neusete-version-download-link\"\u003eNeusete Version: \u003ca href=\"https://github.com/FKainka/NodeESP_Firmware/raw/master/bin/ESP32_FW.bin\"\u003eDownload Link\u003c/a\u003e\u003c/h2\u003e\n\u003ch4 id=\"git-repository\"\u003eGit Repository: \u003ca href=\"https://github.com/FKainka/NodeESP_Firmware\"\u003ehttps://github.com/FKainka/NodeESP_Firmware\u003c/a\u003e\u003c/h4\u003e\n\u003ch2 id=\"firmware-update-05122019\"\u003eFirmware Update 05.12.2019\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBug Hotfix: Neue SD-Library störte PULLUP-Funktion von Pin 18, Keine SD-Karte an Versuchen mit Pin 18 verwenden!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"firnware-update-04122019-stabilitäts-update\"\u003eFirnware Update 04.12.2019 (Stabilitäts Update)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eESP32 Arduino Core updated (v1.11.1)\u003c/li\u003e\n\u003cli\u003eVerschiedene Libraries geupdatet\u003c/li\u003e\n\u003cli\u003eUpdate Vorgang verbessert (md5-Hash)\u003c/li\u003e\n\u003cli\u003eConfig-Verbesert\u003c/li\u003e\n\u003cli\u003eDiverse Bug fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"firnware-update-17102019-smarthome-update\"\u003eFirnware Update 17.10.2019 (Smarthome Update)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eApps für das Smarthome Lernpaket hinzugefügt\u003c/li\u003e\n\u003cli\u003eOnboard HTML-Editor zum Verändern der integrierten Webseite und Uploaden von Dateien hinzugefügt (\u003ca href=\"http://nodeesp.local/editor\"\u003ehttp://nodeesp.local/editor\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAutomatische SD-Karten Unterstützung hinzugefügt (SD-Karten werden automatisch unter \u003ca href=\"http://nodeesp.local/sd\"\u003ehttp://nodeesp.local/sd\u003c/a\u003e eingebunden)\u003c/li\u003e\n\u003cli\u003eBessere Vorabinformationen beim Auswählen von Apps über die Config-Seite\u003c/li\u003e\n\u003cli\u003eNeues Update-Verfahren direkt vom GitHub-Repository aus (\u003ca href=\"https://github.com/FKainka/NodeESP\"\u003ehttps://github.com/FKainka/NodeESP\u003c/a\u003e_Firmware)\u003c/li\u003e\n\u003cli\u003eBug Fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"firmware-update-16122018-version-2---mit-mqtt-fix\"\u003eFirmware Update 16.12.2018 (Version 2 - Mit MQTT Fix)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEs gibt nun eine neue Version dieser Firmware, in der der MQTT-Bug behoben ist. Dieses Update kann auch über die Update-Funktion auf der Config-Seite geladen werden.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"http://ota.fkainka.de/ESP32_FW_1v3_161218.bin\"\u003eDownload Link\u003c/a\u003e\u003c/p\u003e","title":"Firmware Neuigkeiten und Bug Report"},{"content":"Hinter dem Türchen des heutigen Tages befindet sich das Gegenstück zum gestrigen Bauteil, nämlich eine IR-Diode. Jetzt können Sie eine komplette Fernbedienung für den Fernseher nachbauen, die Sie per Smartphone und Webseite bequem steuern. Dazu benötigen Sie den folgenden Aufbau.\nDer Aufbau der Fernbedienungen mit IR-Empfänger und Sendediode Wählen Sie das Programm des heutigen Tages aus. Das Board startet anschließend wieder im HeadlessModus, in dem die Webseite des Boards nicht erreichbar ist. Stattdessen ist lediglich die MQTT-Funktion des Boards verfügbar. Um in den Standardmodus zu gelangen, müssen Sie die Drahtbrücke an Pin 23 entfernen und das Board neu starten.\nDer Flow des heutigen Tages Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der Flow des Tages sieht kompliziert aus, besteht aber im Grunde nur aus einer großen Anzahl von UIButtons, die alle in dasselbe Topic schreiben. Bevor Sie den Flow importieren und starten, sollten Sie alle Topics mit dem „Alles ersetzen“-Trick auf Ihr persönliches Topic umschreiben. Außerdem sollten Sie alle vorherigen Flows deaktivieren. Anschließend können Sie den Flow starten und auf die UI-Seite wechseln. Sie sehen eine ganze Reihe von Buttons, die allerdings noch nicht auf Ihren Fernseher kalibriert sind.\nDeswegen gehen Sie zunächst auf den zweiten Tab mit dem Namen Day16 Recieve IR Codes. Diese Seite sieht zwar viel langweiliger aus, denn sie enthält nur ein Textfeld, sie ist aber sehr nützlich. Wenn Sie nämlich nun eine Fernbedienung auf den Empfänger richten und eine Taste drücken, erscheint ein Text im Fenster, zum Beispiel folgender:\n{\u0026ldquo;cmd”:”ir_send”,”type”:3,”value”:551494365,”length”:32}\nDieser Text wurde über das Topic NodeESP/[PID]/ir/recv/out empfangen und enthält die Daten des empfangenen Codes. Nur ein paar Kleinigkeiten wurden vom Flow geändert. Zum einen werden sogenannte Wiederholungscodes herausgefiltert, zum anderen wurde das Kommando von ir_recv auf ir_send geändert, und zwar aus diesem Grund: Sie brauchen nun den Text praktischerweise nur zu kopieren und können ihn anschließend in den Payload-Bereich eines Buttons einfügen. Schon sendet der Button beim Betätigen auf der UI-Seite das Kommando mit den Daten des Codes an das Board, das wiederum den Code per IR-Diode an das TV überträgt. Auf diese Weise können Sie Code für Code einprogrammieren und sich Ihre eigene Fernbedienung erstellen.\nSo werden die Kommandos als Payload des Buttons gespeichert Hinweis: Das Layout der GUI ist einer durchschnittlichen modernen Fernbedienung nachempfunden. Icons auf den Buttons sollen die Funktion verdeutlichen. Eine Liste nutzbarer Icons finden Sie auf der Webseite https://klarsys.github.io/angular-material-icons/.\nDas User Interface ","permalink":"https://iot.fkainka.de/day16-2018/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich das Gegenstück zum gestrigen Bauteil, nämlich eine IR-Diode. Jetzt können Sie eine komplette Fernbedienung für den Fernseher nachbauen, die Sie per Smartphone und Webseite bequem steuern. Dazu benötigen Sie den folgenden Aufbau.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day16_IRremotefzz_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2548\" src=\"/images/2018/11/Day16_IRremotefzz_Steckplatine.png\" alt=\"Der Aufbau der Fernbedienungen mit IR-Empfänger und Sendediode\" width=\"498\" height=\"616\" data-id=\"2548\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau der Fernbedienungen mit IR-Empfänger und Sendediode\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eWählen Sie das Programm des heutigen Tages aus. Das Board startet anschließend wieder im HeadlessModus, in dem die Webseite des Boards nicht erreichbar ist. Stattdessen ist lediglich die MQTT-Funktion des Boards verfügbar. Um in den Standardmodus zu gelangen, müssen Sie die Drahtbrücke an Pin 23 entfernen und das Board neu starten.\u003c/p\u003e","title":"Tag 16: Universalfernbedienung"},{"content":"Hinter dem heutigen Türchen befindet sich ein ganz besonderes Bauteil, nämlich ein Infrarotempfangsmodul. Damit ist es möglich, handelsübliche Infrarotfernbedienungssignale zu empfangen. Dazu benötigen wir den folgenden Aufbau.\nSo schließen Sie das IR-Modul richtig am Board an Nachdem Sie die Schaltung aufgebaut haben, können Sie das Programm des heutigen Tages auswählen. Die Boardwebseite können Sie dann nicht mehr erreichen, denn sie musste für den Versuch deaktiviert werden. Das Board arbeitet nun im Headless-Modus, also ohne sichtbare Oberfläche. Um wieder die Webseite starten und zum Beispiel andere Programme aktivieren zu können, müssen Sie lediglich die Drahtbrücke an Pin 23 herausziehen und das Board neu starten. Dann läuft wieder alles wie gewohnt.\nUm zu sehen, ob das Programm des heutigen Tages richtig läuft, müssen Sie zuerst den Flow des heutigen Tages in Ihre Node-RED-Umgebung einfügen. Vergessen Sie nicht, die vorangegangenen Flows zu deaktivieren und das MQTT-Topic an Ihr persönliches Topic anzupassen.\nNachdem Sie den Flow aktiviert haben, können Sie eine Fernbedienung auf den Empfänger richten. Sie sehen dann auf der GUI-Seite den vom Board übermittelten Text, z. B. folgenden:\n{\u0026ldquo;cmd”:”ir_recv”,”type”:3,”value”:551489775,”length”:32}\nWichtig ist vor allem der value-Wert. Wählen Sie zum Beispiel die Power-Taste auf Ihrer Fernbedienung und kopieren Sie den empfangenen Wert. Dieser muss in den Switch-Node eingetragen werden. Sie können derzeit fünf verschiedene Werte, also fünf verschiedene Fernbedienungstasten, in den SwitchNode eintragen. Jede dieser Tasten führt dann zu einem Node, der einen Text als Payload setzt und diesen an einen Audio-out-Node weitergibt. Der erste Wert im Switch-Node entspricht der Power-Taste. Also wird auch „Power“ vom Browser vorgelesen. Dies dient allerdings allein der Demonstration. Im Sinne des Smarthomes können Sie genauso einfach die Wohnzimmerbeleuchtung dimmen, wenn der Fernseher angeschaltet wird. Node-RED macht die Anpassung an eigene Wünsche sehr einfach.\nDer Flow des heutigen Tages Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ ","permalink":"https://iot.fkainka.de/day15-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein ganz besonderes Bauteil, nämlich ein Infrarotempfangsmodul. Damit ist es möglich, handelsübliche Infrarotfernbedienungssignale zu empfangen. Dazu benötigen wir den folgenden Aufbau.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day15_IRrecv_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2542\" src=\"/images/2018/11/Day15_IRrecv_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"439\" height=\"544\" data-id=\"2542\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eSo schließen Sie das IR-Modul richtig am Board an\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eNachdem Sie die Schaltung aufgebaut haben, können Sie das Programm des heutigen Tages auswählen. Die Boardwebseite können Sie dann nicht mehr erreichen, denn sie musste für den Versuch deaktiviert werden. Das Board arbeitet nun im Headless-Modus, also ohne sichtbare Oberfläche. Um wieder die Webseite starten und zum Beispiel andere Programme aktivieren zu können, müssen Sie lediglich die Drahtbrücke an Pin 23 herausziehen und das Board neu starten. Dann läuft wieder alles wie gewohnt.\u003c/p\u003e","title":"Tag 15: Fernbedienungsempfänger"},{"content":"Hinter dem Türchen des 14. Tages befindet sich eine weitere LED. Nun haben wir zwei LEDs mit Vorwiderständen und zwei Taster sowie genug Kabel, um ein komplexes Lampensystem zu bauen. Dazu benötigen Sie den folgenden Aufbau:\nDer Aufbau mit vier losen Kabeln (gelb) als Touch-Buttons Nun können Sie das Programm des heutigen Tages aktivieren und den heutigen Flow einfügen. Vergessen Sie nicht, die [PID] durch Ihre persönliche ID zu ersetzen, am einfachsten mit dem Editortrick.\nIn dem von Ihnen aktivierten Programm sind die LEDs als PWM-LEDs eingestellt. Das bedeutet, dass Sie die Helligkeit der LEDs verändern können. Der Wertebereich reicht dabei von 0 bis 255. Zusätzlich können Sie die LEDs aber immer noch wie digitale Ausgänge ein- oder ausschalten. Folgende Kommandos können Sie verwenden:\nKommando im in-Topic Einstellungen {„cmd“:“set_pwm_state“, „LED1“:255} Die LED wird auf die maximale Helligkeit eingestellt. Nur sichtbar, wenn die LED an ist. {„cmd“:“set_pwm_state“, „LED1“:0} Die LED wird auf die minimale Helligkeit eingestellt (die LED leuchtet nicht). {„cmd“:“set_pwm_state“, „LED1“:true} Die LED wird aktiviert und die letzte Helligkeit eingestellt. Änderungen der Helligkeit werden sofort sichtbar. {„cmd“:“set_pwm_state“, „LED1“:“ON“} {„cmd“:“set_pwm_state“, „LED1“:false} Die LED wird deaktiviert. Eine Veränderung der Helligkeit wird erst nach einem erneuten Aktivieren sichtbar. {„cmd“:“set_pwm_state“, „LED1“:“off“} Diese Statusveränderungen können über das out-Topic oder über NodeESP/[PID]/pwm/state/set gesendet werden. Bei einer Veränderung eines Status wird der aktuelle Zustand auch über das Topic\nNodeESP/[PID]/pwm/state/get/out\ngepublisht.\nZusätzlich sind in dem heutigen Programm zwei Buttons und vier Touch-Buttons aktiviert, die nach dem bekannten System funktionieren. Der Node-RED-Flow ist heute etwas größer, denn für jeden Button und jede Einstellung gibt es eine UI-Schaltfläche.\nDas Userinterface des heutigen Programms Das Userinterface gibt schon einige Hinweise darauf, wie der heutige Versuch funktioniert. Die beiden LEDs simulieren zwei dimmbare Lampen im Haushalt. Mit den beiden Tastern auf dem Steckboard oder über das Webinterface können sie anoder ausgeschaltet werden. Mit den Reglern in der UI kann die Helligkeit eingestellt werden. Über die Schaltflächen darunter wird die Helligkeit jeweils um +10 oder\n–10 verändert. Die gleiche Funktion erfüllen auch die Touch-Buttons. Wenn Sie den auf dem Aufbaubild linken Draht berühren, verringern Sie über die Zeit die Helligkeit der linken LED. Der Draht direkt rechts daneben erhöht dabei die Helligkeit. Die beiden verbliebenen Drähte funktionieren genauso für die rechte LED. Sie können die Helligkeit auch verändern, wenn die LED gerade nicht an ist. Allerdings wird dann die Veränderung erst sichtbar, nachdem Sie die LED wieder angeschaltet haben. Die Funktion kann dennoch sehr praktisch sein, wenn Sie beispielsweise die Helligkeit der Lampe in Abhängigkeit von der Uhrzeit variieren wollen.\nDer Flow des Tages Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ ","permalink":"https://iot.fkainka.de/day14-2018/","summary":"\u003cp\u003eHinter dem Türchen des 14. Tages befindet sich eine weitere LED. Nun haben wir zwei LEDs mit Vorwiderständen und zwei Taster sowie genug Kabel, um ein komplexes Lampensystem zu bauen. Dazu benötigen Sie den folgenden Aufbau:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day14_2LED_2Btn_4tch_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2536\" src=\"/images/2018/11/Day14_2LED_2Btn_4tch_Steckplatine.png\" alt=\"Der Aufbau mit vier losen Kabeln (gelb) als Touch-Buttons\" width=\"509\" height=\"660\" data-id=\"2536\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau mit vier losen Kabeln (gelb) als Touch-Buttons\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eNun können Sie das Programm des heutigen Tages aktivieren und den heutigen Flow einfügen. Vergessen Sie nicht, die \u003cstrong\u003e[PID]\u003c/strong\u003e durch Ihre persönliche ID zu ersetzen, am einfachsten mit dem Editortrick.\u003c/p\u003e","title":"Tag 14: Smarte Lichter"},{"content":"Hinter dem Türchen des heutigen Tages befindet sich ein weiterer Widerstand mit 1 kOhm, der heute noch keine Rolle spielt. Stattdessen möchte ich Ihnen zeigen, wie man einen smarten Touch-Schalter baut. Dazu ist folgender Aufbau nötig, der nur aus vier lose hängenden Drähten als Touch-Buttons und einer Drahtbrücke an Pin 23 besteht.\nVier gelbe Drähte als Touch-Buttons Die Besonderheit des heutigen Versuchs besteht vor allem im Programm selbst, das Sie an dieser Stelle über die Konfigurationsseite aktivieren können. Nach dem Aktivieren werden Sie feststellen, dass die Status-LED kurz blinkt und dann erlischt. Das liegt daran, dass das Board wieder im stromsparenden Deep-Sleep-Modus betrieben wird. Aufgeweckt wird es aber nicht nach einer gewissen Zeit, sondern erst, wenn Sie einen der Touch-Buttons berühren. Das Board sendet dann Infos über den Touch-Button zum Broker, der das Aufwecken ausgelöst hat. Das sieht dann z. B. so aus:\n{\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_touch_state\u0026rdquo;,\u0026ldquo;pin_name\u0026rdquo;:\u0026ldquo;Touch4\u0026rdquo;,\u0026ldquo;pin_id\u0026rdquo;:6,\u0026ldquo;pin_nr\u0026rdquo;:14,\u0026ldquo;pin_state\u0026rdquo;:true}\nWährend des Verbindungsaufbaus können Sie sehen, dass die Status-LED grün blinkt. Nach dem Senden leuchtet sie grün und zeigt so das erfolgreiche Übertragen an. Sollte die LED rot aufleuchten, hat die Übertragung nicht funktioniert. Direkt danach geht das Board wieder in den Deep-Sleep-Modus. Das System ist so stromsparend, dass man das Board wieder über die Batterien versorgen kann, um den smarten Schalter irgendwo in der Wohnung zu platzieren.\nHinweis: Um vom Deep-Sleep-Modus wieder in den normalen Modus zu wechseln, müssen Sie einfach nur die Drahtbrücke an Pin 23 herausziehen und das Board resetten\nDer smarte Schalter selbst ist schon eine Besonderheit, aber wir wollen den Schalter nun auch mit NodeRED und einer Anwendung verbinden. Wir werden in dem Node-RED-Flow von heute noch einmal den Audio-out-Node bemühen, diesmal aber auch, um Audiodateien abzuspielen. Dazu müssen Sie zunächst einmal den Flow des heutigen Tages importieren, natürlich nicht, ohne die alten Flows zu deaktivieren, und Ihre persönliche ID statt des [PID]-Platzhalters einfügen.\nDer Flow des heutigen Tages Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Nun können Sie einfach mal ausprobieren, was die einzelnen Buttons eigentlich für Funktionen versteckt halten. Aber nicht vergessen, die Lautsprecher leiser zu stellen.\n","permalink":"https://iot.fkainka.de/day13-2018/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich ein weiterer Widerstand mit 1 kOhm, der heute noch keine Rolle spielt. Stattdessen möchte ich Ihnen zeigen, wie man einen smarten Touch-Schalter baut. Dazu ist folgender Aufbau nötig, der nur aus vier lose hängenden Drähten als Touch-Buttons und einer Drahtbrücke an Pin 23 besteht.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day13_5tch_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2529\" src=\"/images/2018/11/Day13_5tch_Steckplatine.png\" alt=\"Vier gelbe Drähte als Touch-Buttons\" width=\"467\" height=\"611\" data-id=\"2529\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVier gelbe Drähte als Touch-Buttons\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDie Besonderheit des heutigen Versuchs besteht vor allem im Programm selbst, das Sie an dieser Stelle über die Konfigurationsseite aktivieren können. Nach dem Aktivieren werden Sie feststellen, dass die Status-LED kurz blinkt und dann erlischt. Das liegt daran, dass das Board wieder im stromsparenden Deep-Sleep-Modus betrieben wird. Aufgeweckt wird es aber nicht nach einer gewissen Zeit, sondern erst, wenn Sie einen der Touch-Buttons berühren. Das Board sendet dann Infos über den Touch-Button zum Broker, der das Aufwecken ausgelöst hat. Das sieht dann z. B. so aus:\u003c/p\u003e","title":"Tag 13: Smarter Schalter für ein Soundboard"},{"content":"Hinter dem heutigen Türchen des Adventskalenders finden Sie einen weiteren Button. In dem Versuch des heutigen Tages werden wir uns weiter mit dem MQTT-Protokoll beschäftigen, diesmal in Verbindung mit Node-RED. Außerdem sehen wir, wie zwei Buttons gleichzeitig ausgewertet werden können. Der Versuch des heutigen Tages hat folgenden Aufbau:\nDer Aufbau mit zwei Buttons Es gibt also zwei Buttons, die wir nutzen können. Aktivieren Sie nun das Programm des heutigen Tages. Anschließend können Sie den Node-RED-Flow importieren. Diesen müssen Sie zunächst aber leicht anpassen. Sie müssen nämlich [PID] im Topic durch Ihre persönliche MQTT-ID ersetzen. Das geht aber ganz einfach mit dem folgenden Trick:\nKopieren Sie den Node-RED-Flow in einen Texteditor Ihrer Wahl, in Windows zum Beispiel in den Editor. Anschließend wählen Sie die Option Ersetzen (im Editor unter Bearbeiten/Ersetzen ([Strg]+[H]). Dort geben Sie im Feld Suchen nach [PID] ein und im Feld Ersetzen durch Ihre persönliche ID. Anschließend können Sie einfach auf Alle ersetzen klicken. Schon haben Sie den Flow angepasst und können ihn in Node-RED importieren und starten, natürlich nicht, ohne die alten Flows zu deaktivieren.\nSo können Sie den Flow schnell auf Ihre persönliche ID anpassen Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Wenn Sie nun in Node-RED auf das Debug-Register gehen und einen Button auf dem Steckboard drücken, sehen Sie dort zum Beispiel folgende Nachricht:\nDie JSON Nachricht Unter dem Key cmd wird das Kommando get_button_state gesendet. Unter value folgt ein Array mit allen Buttons und ihren Werten. Über pin_name, pin_id oder pin_nr können Sie einen Button identifizieren. Die ersten beiden Werte sind selbst definiert, der dritte gibt den verwendeten IO-Pin am Board an. Pin_state gibt an, wie der boolesche Wert des Buttons ist, also TRUE oder FALSE bzw. HIGH oder LOW.\nIst der Button nicht gedrückt, ist der Pin-Value übrigens TRUE. Das liegt daran, dass der Pin mit einem internen Pull-up-Widerstand auf HIGH und per Tastendruck auf LOW gezogen wird. Der Key pin_value gibt einen anlogen Wert an, der bei Buttons keine Rolle spielt.\nIn diesem Fall habe ich Button2 gedrückt, und das Board hat sofort eine Meldung mit allen aktivierten Buttons und deren Werten sowohl an das out-Topic, das am Debug-Node hängt, als auch an das Topic\nNodeESP/[PID]/button/state/get/out\ngesendet. Das letzte Topic wird in Node-RED ausgewertet. Dazu kommt ein JSON-Node, der aus dem reinen Text ein JSON-Objekt macht. Der Split-Node trennt das Button-Array in einzelne Elemente auf, die nacheinander an den Switch-Node weitergereicht werden. Dieser überprüft den Pinnamen und entscheidet, um welchen der beiden Buttons es sich handelt. Es folgt ein Template-Node, der einfach nur den Wert von pin_state filtert, also TRUE oder FALSE an den nächsten Node weitergibt. Hierbei handelt es sich um einen Dashboard-Button, der einen An-Zustand anzeigt, wenn der Wert FALSE war, und umgekehrt. Er invertiert an dieser Stelle also sozusagen den Wert des Buttons.\nWenn Sie auf das Dashboard wechseln, indem Sie beispielsweise auf das Dashboard-Register auf der rechten Seite und anschließend auf das Rechteck mit dem Pfeil nach oben klicken, sehen Sie auch die beiden Buttons. Da das Board beim Loslassen des Buttons direkt die Statusveränderung mitteilt, können Sie also sofort sehen, welcher Button gedrückt und welcher nicht gedrückt ist.\nDer große Vorteil bei MQTT und dem Verwenden eines Online-Brokers ist, dass man die Buttons von überall in der Welt aus auswerten kann. Sie können also das Board mit zur Arbeit nehmen, während der Node-RED-Server zu Hause auf einem Rechner läuft. Und dann könnten Sie beispielsweise das Licht und die Heizung einstellen, wenn Sie sich auf den Nachhauseweg machen, oder per Sprachausgabe den Daheimgebliebenen mitteilen, dass Sie auf dem Weg sind. Und das alles mit einem simplen Knopfdruck von irgendwo auf der Welt.\n","permalink":"https://iot.fkainka.de/day12-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen des Adventskalenders finden Sie einen weiteren Button. In dem Versuch des heutigen Tages werden wir uns weiter mit dem MQTT-Protokoll beschäftigen, diesmal in Verbindung mit Node-RED. Außerdem sehen wir, wie zwei Buttons gleichzeitig ausgewertet werden können. Der Versuch des heutigen Tages hat folgenden Aufbau:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day12_2Button_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2519\" src=\"/images/2018/11/Day12_2Button_Steckplatine.png\" alt=\"Der Aufbau mit zwei Buttons\" width=\"469\" height=\"580\" data-id=\"2519\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau mit zwei Buttons\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eEs gibt also zwei Buttons, die wir nutzen können. Aktivieren Sie nun das Programm des heutigen Tages. Anschließend können Sie den Node-RED-Flow importieren. Diesen müssen Sie zunächst aber leicht anpassen. Sie müssen nämlich \u003cstrong\u003e[PID]\u003c/strong\u003e im Topic durch Ihre persönliche MQTT-ID ersetzen. Das geht aber ganz einfach mit dem folgenden Trick:\u003c/p\u003e","title":"Tag 12: MQTT-Button"},{"content":"Meine NodeESP funktioniert einwandfrei, nur so unglaublich langsam, dass mein Browser meist beim Laden der Seite die Reißleine zieht oder eine Teilweise geladene Website ausspuckt\u0026hellip;Wie kann ich da abhilfe schaffen?\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/geschwindigkeitsproblem/","summary":"\u003cp\u003eMeine NodeESP funktioniert einwandfrei, nur so unglaublich langsam, dass mein Browser meist beim Laden der Seite die Reißleine zieht oder eine Teilweise geladene Website ausspuckt\u0026hellip;Wie kann ich da abhilfe schaffen?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Unbenannt.png\" loading=\"lazy\" src=\"/images/2018/12/Unbenannt.png\"\u003e\u003c/p\u003e","title":"Geschwindigkeitsproblem"},{"content":"Hinter dem heutigen Türchen finden Sie wieder einen Satz Kabel, die wir für die nächsten Tage und die komplexer werdenden Aufbauten benötigen werden.\nIn den letzten Tagen haben wir die meisten unserer Daten mittels UDP übertragen. Dieses Protokoll ist sehr praktisch, da es einerseits einen kleinen Overhead (Daten, die neben den eigentlichen Nutzdaten übermittelt werden) hat und andererseits Broadcast-fähig ist und somit gleich an mehrere Geräte gleichzeitig Daten senden kann. Heute wollen wir aber noch ein zweites Protokoll näher kennenlernen, das im Bereich IoT eine große Rolle spielt. Es geht um das Nachrichtenprotokoll MQTT (Message Queue Telemetry Transport), das speziell für die Kommunikation von Maschine zu Maschine (M2M) entwickelt wurde. Der Grund dafür, dass dieses Protokoll so genial ist, liegt in der Kompaktheit und Einfachheit, mit der Daten wie Steuerdaten, Messdaten oder Texte zwischen Geräten ausgetauscht werden können. Im Vergleich zu HTTP ist der Overhead sehr klein. Deswegen können auch Embeded Devices, also Mikrocontroller wie unser NodeESP, die Daten gut verarbeiten.\nGrundlange für die Kommunikation bildet ein sogenannter Broker. Ein Broker ist eine Serveranwendung, die alle Nachrichten verarbeitet. Ein Gerät wie unser NodeESP kann sich mit dem Broker verbinden und Nachrichten veröffentlichen (publishen), also an den Broker senden. Ein anderes Gerät kann dann bestimmte Themen (Topics genannt) abonnieren (subscriben) und bekommt sofort alle neu zu diesem Thema veröffentlichten Nachrichten vom Broker zugestellt.\nDer MQTT-Broker stellt die Nachrichten zu Die Topics sind hierarchisch strukturiert, wobei Unterthemen jeweils durch ein / getrennt sind. Zusätzlich gibt es sogenannte Wildcards. Durch + oder # können mehrere Themen gleichzeitig abonniert werden.\nDie Topics MyHome/Kitchen/Temperature und MyHome/Bathroom/Temperature können so z. B. durch das Subscriben des Themas MyHome/+/Temperature gleichzeitig empfangen werden. Das Plus ersetzt dabei immer nur eine Topic-Ebene, die Raute ersetzt gleich alle. Mit dem Topic MyHome/# empfangen Sie also gleich alle Nachrichten, die in allen Untertopics von MyHome gepublished werden. Eine Nachricht kann so ziemlich alles sein: vom reinen Text über Messwerte bis zu einfachen 1/0-Befehlen zum Schalten von Licht.\nFür heute brauchen Sie keinen Hardwareaufbau, denn wir beginnen mit ein paar grundlegenden Tests. Schauen Sie sich zunächst die Einstellungen auf der Konfigurationsseite an. Bestimmt ist Ihnen schon der Bereich MQTT Settings aufgefallen. Hier finden Sie bereits die richtig vorkonfigurierten Einstellungen. Als Broker-Adresse ist ein speziell für das Adventskalenderprojekt eingerichteter Server angegeben, nämlich broker.fkainka.de**.** Sie können aber auch selbst einen Broker aufsetzen, z. B. auf Ihrem Raspberry Pi.\nIch empfehle dazu die Open-Source-Software Mosquitto. Die Client-ID wurde anhand der MAC-Adresse des Boards generiert. Der Grund dafür ist, dass diese ID serverweit nur von einem einzigen Gerät genutzt werden darf. Da eine MAC-Adresse weltweit eindeutig sein sollte, bietet sie sich hier als ID an. Einen Usernamen und ein Passwort brauchen Sie für den Testbroker nicht.\nSie können die Verbindung testen, indem Sie weiter unten auf den Button Test Connection klicken. Nun sollte die Farbe der Fläche daneben auf Grün wechseln, wenn die Verbindung zum Broker erfolgreich hergestellt wurde. Falls es mal nicht funktioniert, kann es sein, dass der Server down ist und Sie den Broker wechseln müssen. Ein alternativer frei verfügbarer Broker ist z. B. broker. mqttdashboard.com.\nNachdem Sie die prinzipielle Verbindung getestet haben, können Sie nun das Programm des heutigen Tages einstellen. Gehen Sie anschließend auf die Seite\nhttps://www.hivemq.com/demos/websocket-client/?\nund klicken Sie dort auf Try the websocket client. Es erscheint eine Oberfläche, mit der Sie sich auf einem MQTT-Broker mit Websocket-Unterstützung anmelden können. Unter Host müssen Sie einen Broker, also hier broker.fkainka.de, eintragen und anschließend mit connect eine Verbindung herstellen. Es öffnet sich die Oberfläche aus der Abbildung. Sie können nun mit Klick auf Add New Topic Subscription Ihr eigenes, persönliches Topic abonnieren. Dieses setzt sich aus dem Begriff NodeESP und der Client-ID zusammen. Bei meinem Board war das zum Beispiel:\nNodeESP/240AC48178E4/\nSämtliche MQTT-Kommunikation vom und zum Board beginnt mit diesem Topic. Ich werde den Client-IDTeil in Zukunft mit [PID] für „persönliche ID“ abkürzen. Sie müssen diesen Teil durch Ihre Client-ID ersetzen. Im ersten Versuch können Sie alle Kommunikation vom Board mit dem Topic\nNodeESP/[PID]/#\nempfangen. Wenn Sie das Board resetten, sehen Sie nach kurzer Zeit eine Meldung, die Ihnen sagt, dass sich das Board mit dem Broker verbunden hat. Diese Meldung wurde in das Topic NodeESP/[PID]/status geschrieben und durch das Subscriben mit # ebenfalls empfangen. Nun können Sie eine erste Nachricht an das Board übermitteln. Dazu geben Sie im Publish-Bereich im Feld Topic Ihr persönliches Topic plus das Subtopic testtopic ein, also in meinem Fall:\nNodeESP/[PID]/testtopic\nIn dem Feld Message können Sie jetzt eine beliebige Nachricht eingeben. Das Feld kann sogar leer bleiben. Klicken Sie anschließend auf Publish, und nur wenige Augenblicke später haben Sie zwei weitere Nachrichten im Messages-Bereich. Die eine Nachricht ist ein Begrüßungstext und wurde im Topic NodeESP/[PID]/testtopic/out veröffentlicht. Die andere Nachricht enthält ebenfalls den Begrüßungstext, allerdings als JSON-String inklusive Kommando-Key, und wurde im Topic NodeESP/[PID]/out veröffentlicht.\nDiese beiden Nachrichten kommen dadurch zustande, dass das Board die Topics in das bekannte Kommandoformat übersetzt und dann auswertet. Die Antworten erscheinen in einem Topic, das sich aus dem Kommando und out zusammensetzt, hier also …/testtopic/out, und gleichzeitig im Kanal NodeESP/ [PID]/out.\nÄquivalent zum out-Topic gibt es ein in-Topic, in das Sie direkt Kommandos im JSON-Format publishen können. Wenn Sie zum Beispiel in das Topic NodeESP/[PID]/in den JSON-String {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;testtopic\u0026rdquo;} schreiben, käme es zu den gleichen Antworten wie beim ersten Versuch. Sie können also ein Kommando entweder über ein entsprechendes Topic oder über den in-Channel als JSON-Objekt schicken. Wundern Sie sich nicht darüber, dass einige bekannte Kommandos wie z. B. get_wifi_status etc. nicht funktionieren. Das liegt daran, dass diese Kommandos durchaus sensible Daten enthalten können und deswegen nicht über einen öffentlichen Broker gesendet werden sollten.\nDie Verbindung zum Board über MQTT steht also. Morgen schauen wir uns genauer an, was wir damit machen können.\n","permalink":"https://iot.fkainka.de/day11-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen finden Sie wieder einen Satz Kabel, die wir für die nächsten Tage und die komplexer werdenden Aufbauten benötigen werden.\u003c/p\u003e\n\u003cp\u003eIn den letzten Tagen haben wir die meisten unserer Daten mittels UDP übertragen. Dieses Protokoll ist sehr praktisch, da es einerseits einen kleinen Overhead (Daten, die neben den eigentlichen Nutzdaten übermittelt werden) hat und andererseits Broadcast-fähig ist und somit gleich an mehrere Geräte gleichzeitig Daten senden kann. Heute wollen wir aber noch ein zweites Protokoll näher kennenlernen, das im Bereich IoT eine große Rolle spielt. Es geht um das Nachrichtenprotokoll MQTT (\u003cstrong\u003eMessage Queue\u003c/strong\u003e \u003cstrong\u003eTelemetry Transport\u003c/strong\u003e), das speziell für die Kommunikation von Maschine zu Maschine (M2M) entwickelt wurde. Der Grund dafür, dass dieses Protokoll so genial ist, liegt in der Kompaktheit und Einfachheit, mit der Daten wie Steuerdaten, Messdaten oder Texte zwischen Geräten ausgetauscht werden können. Im Vergleich zu HTTP ist der Overhead sehr klein. Deswegen können auch Embeded Devices, also Mikrocontroller wie unser NodeESP, die Daten gut verarbeiten.\u003c/p\u003e","title":"Tag 11: MQTT"},{"content":"Hinter dem heutigen Türchen finden Sie ein Batteriefach für drei A-Batterien (4,5 V), um das Board unabhängig von einer Steckdose betreiben zu können. Für einen sparsamen Batteriebetrieb gibt es den DeepSleep-Modus. Dieser erlaubt es dem Board, in einen Tiefschlafmodus zu wechseln und so gut wie gar keinen Strom zu verbrauchen. Nach einer gewissen Zeit weckt sich das Board selbst auf und erfüllt eine kleine Aufgabe, um kurz danach wieder schlafen zu gehen. Durch die langen Schlaf- und kurzen Wachzeiten spart dieser Modus viel Energie und kann das Board so über Monate über die Batterien versorgen. Der Aufbau von heute verwendet wieder den Lichtsensor und bekommt zusätzlich eine Drahtbrücke von Pin 23 nach GND.\nVersuchsaufbau: Die Drahtbrücke an Pin 23 beachten Stellen Sie zunächst das Programm des heutigen Tages ein. Wenn sich nun das Board resettet, blinkt die Status-LED zwar kurz grün, erlischt dann aber wieder. Nach ca. 20 Sekunden geht das Spiel von vorne los, der Deep-Sleep-Modus ist also aktiv.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der heutige Flow Der Flow des heutigen Tages besteht aus einem Gauge und einem Chart. Ein Chart dient dazu, mehrere Messwerte über eine Zeitperiode grafisch aufbereitet darzustellen. Heute wurden die Messwerte übrigens mit einem Range-Node umgedreht, sodass eine starke Helligkeit auch einen hohen Messwert auf dem Gauge und dem Chart liefert. Sie können nun also die Node-RED-Instanz auf einem Rechner oder Raspberry laufen lassen, während Sie das Board mit den Batterien irgendwo platzieren und dort die Helligkeit über einen ganzen Tag verteilt messen.\nDas Gauge und das Chart-Element auf der Dashboard-Seite Hinweis: Wenn das Blinken der Status-LED alle 20 Sekunden Sie stört, beispielsweise weil Sie die Lichtverteilung in Ihrem Schlafzimmer über Nacht messen wollen, können Sie diese auch einfach auf der Konfigurationsseite deaktivieren. Um den Deep-Sleep-Modus zu verlassen, müssen Sie lediglich die Drahtbrücke an Pin 23 wieder herausnehmen und das Board resetten oder einen Deep-Sleep-Zyklus abwarten.\n","permalink":"https://iot.fkainka.de/day10-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen finden Sie ein Batteriefach für drei A-Batterien (4,5 V), um das Board unabhängig von einer Steckdose betreiben zu können. Für einen sparsamen Batteriebetrieb gibt es den DeepSleep-Modus. Dieser erlaubt es dem Board, in einen Tiefschlafmodus zu wechseln und so gut wie gar keinen Strom zu verbrauchen. Nach einer gewissen Zeit weckt sich das Board selbst auf und erfüllt eine kleine Aufgabe, um kurz danach wieder schlafen zu gehen. Durch die langen Schlaf- und kurzen Wachzeiten spart dieser Modus viel Energie und kann das Board so über Monate über die Batterien versorgen. Der Aufbau von heute verwendet wieder den Lichtsensor und bekommt zusätzlich eine Drahtbrücke von Pin 23 nach GND.\u003c/p\u003e","title":"Tag 10: Deep Sleep"},{"content":"Hardware: Raspberry Pi 3B\nWie es schon die Überschrift vermuten läßt habe ich eine 16GB SD Karte mit einem 2018-11-13-raspbian-stretch-full.zip Image\ngeflasht.\nVersprochen war Node-Red, ja es ist richtig, dabei handelt es sich um den Server, dieser läuft dann in einer Shell.\nStoppen und Starten ist einfach, eine zweite Konsole öffnen und \u0026rsquo;node-red-stop\u0026rsquo; oder \u0026rsquo;node-red-start\u0026rsquo; eingeben und mit Enter bestätigen.\nUm mit dem Node-Red Editor zuarbeiten öffnete ich den Browser, Adresse: 127.0.0.1:1880\nSoweit ok..\nAber ich mußte festellen es fehlte ein wichtiges Packet, \u0026lsquo;Dashboard\u0026rsquo;.\nGut dachte ich mir, installierst du es halt nach.\nDer Paletten Manager (npm) aber fehlte. Also mußte dieser erst einmal nachinstalliert werden.\nmit \u0026lsquo;sudo npm install\u0026rsquo;.\nDanach mit den Manager das fehlende Dashbord Packet installiert.\nDie Flows importiert, fertig.\nDas Beispiel Tag 3 und 4 auf dem Rapberry mal testweise ausgeführt und auf meinem PC/Laptop Packet Sender und ich habe die Nachrichten empfangen.\n","permalink":"https://iot.fkainka.de/forum/topic/node-red-und-raspberry-pi/","summary":"\u003cp\u003eHardware: \u003cstrong\u003eRaspberry Pi 3B\u003c/strong\u003e\u003cbr\u003e\nWie es schon die Überschrift vermuten läßt habe ich eine 16GB SD Karte mit einem \u003cstrong\u003e2018-11-13-raspbian-stretch-full.zip\u003c/strong\u003e Image\u003cbr\u003e\ngeflasht.\u003c/p\u003e\n\u003cp\u003eVersprochen war Node-Red, ja es ist richtig, dabei handelt es sich um den Server, dieser läuft dann in einer Shell.\u003cbr\u003e\nStoppen und Starten ist einfach, eine zweite Konsole öffnen und \u0026rsquo;node-red-stop\u0026rsquo; oder \u0026rsquo;node-red-start\u0026rsquo; eingeben und mit Enter bestätigen.\u003c/p\u003e\n\u003cp\u003eUm mit dem Node-Red Editor zuarbeiten öffnete ich den Browser, Adresse: 127.0.0.1:1880\u003cbr\u003e\nSoweit ok..\u003c/p\u003e","title":"Node-Red und Raspberry Pi"},{"content":"Hallo @ all,\nnach dem ich die Sensibilität der Touch-Sensoren erhöht habe, kann ich mich leider nicht mehr mit der Hauptseite verbinden, um ihn dort zurückzusetzen. Ich nehme an es ist dadurch, da er jetzt dauerhaft eine Touch-Meldung sendet und er jetzt komplett ausgelastet ist.\nGibt es eine Möglichkeit in irgendwie anders zu resetieren?\nDanke!\nLG\nMario\n2 Antworten Marco81 – 09.12.2018\nDu musst die Firmware neu flashen, dabei gehen natürlich die WLAN-Einstellungen verloren.\nhttps://iot.fkainka.de/nodeesp-firmware-reinstallieren\nMfG,\nMarco\nJ.J. – 09.12.2018\nHi Mario,\nschau mal in den Thread zum zugehörigen Tag: Tag 6: Touch to Speach [sic!]\nIn der Regel sollte ein Config-Reset ausreichen:\n[\u0026hellip;] zu den Standardeinstellungen zurückkehren, indem Sie den Boot-Button über zehn Sekunden lang gedrückt halten. Dies ist in allen Programmen möglich, bei denen WPS in Klammern hinter dem Programmnamen steht. … (Restore Default Configuration). Als dritte Möglichkeit können Sie Pin 13 beim Boardstart auf LOW setzen. Vergessen Sie aber nicht, die Verbindung an Pin 13 nach dem Reset wieder zu trennen.\nBesagte dritte Möglichkeit hat bei mir definitiv funktioniert.\nGrüße, JJ\n","permalink":"https://iot.fkainka.de/forum/topic/nodeesp-storung-nach-tag-6-touch-to-speech/","summary":"\u003cp\u003eHallo @ all,\u003c/p\u003e\n\u003cp\u003enach dem ich die Sensibilität der Touch-Sensoren erhöht habe, kann ich mich leider nicht mehr mit der Hauptseite verbinden, um ihn dort zurückzusetzen. Ich nehme an es ist dadurch, da er jetzt dauerhaft eine Touch-Meldung sendet und er jetzt komplett ausgelastet ist.\u003cbr\u003e\nGibt es eine Möglichkeit in irgendwie anders zu resetieren?\u003cbr\u003e\nDanke!\u003c/p\u003e\n\u003cp\u003eLG\u003cbr\u003e\nMario\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eMarco81\u003c/strong\u003e – 09.12.2018\u003c/p\u003e\n\u003cp\u003eDu musst die Firmware neu flashen, dabei gehen natürlich die WLAN-Einstellungen verloren.\u003c/p\u003e","title":"NodeESP Störung nach Tag 6 (Touch to Speech)"},{"content":"Hinter dem heutigen Türchen finden Sie einen Fototransistor. Er wird verwendet, um die Umgebungshelligkeit zu messen. In dieser Schaltung liegt das Poti in Reihe zum Fototransistor. So kann man mit dem Poti die Sensibilität des Sensors verändern. Die Schaltung bewirkt, dass das Abdunkeln des Sensors den Messwert erhöht.\nVersuchsaufbau Dies können Sie im Gauge-Element auf dem Nutzerinterface zum heutigen Tag sehen. Dazu müssen Sie aber zunächst den Flow des heutigen Tages in Ihre Node-RED-Umgebung importieren und starten, natürlich nicht, ohne den gestrigen zu deaktivieren. Vergessen Sie auch nicht, das heutige Programm auf der Konfigurationsseite zu aktvieren und die IP des UDP-Sende-Nodes anzupassen.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Zusätzlich zur Anzeige der Messwerte kommt auch wieder die OnBoard-LED zum Einsatz. Diese soll, abhängig vom gemessenen Wert, die Farbe automatisch den Lichtverhältnissen anpassen. Wenn es absolut dunkel ist, soll die LED rot leuchten. Je heller es wird, desto mehr verändert sich die Farbe über Grün nach Blau. So können Sie Ihren Arbeitsplatz abends zum Beispiel mit einem entspannenden Rot beleuchten, während tagsüber ein kräftiges Blau leuchtet.\nDer heutige Flow Der Range-Node Node rechnet die gemessenen Werte von 0 bis 4095 auf einen Bereich von 240 bis 0 um. Damit wird die gewünschte LED-Farbe im sogenannten HSV-Format gesendet. HSV steht für Hue, Saturation und Value, also Farbton, Sättigung und (hier) Helligkeitswert. Es handelt sich um eine alternative Darstellung zum RGB-System. Im HSV-Format wird der Farbton durch einen Winkel von 0° bis 360° dargestellt. Rot entspricht 0°, Grün liegt bei 120° und Blau bei 240°. Deswegen wird an dieser Stelle der Messwert in einen Wert bis 240 umgerechnet, denn damit ist die ganze Farbpalette von Rot bis Blau abgedeckt. Im folgenden Template-Node wird das Kommando zusammengestellt, das anschließend an das Board gesendet wird. Bei einem mittleren Wert wäre das Kommando:\n{\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;set_rgb_hsv\u0026rdquo;,\u0026ldquo;value\u0026rdquo;:\u0026ldquo;hsv(120, 100%, 100%)\u0026rdquo;}\nDie Prozentzeichen nach der Sättigung und der Helligkeit können auch weggelassen werden. Das Board ändert nun die Farbe und sendet als Bestätigung die gleichen Werte mit dem Kommando get_rgb_hsv zurück. Dies wird ebenfalls von Node-RED empfangen und anhand eines Color-Picker-Elements auf der Interface-Webseite dargestellt. So können Sie immer verfolgen, welche Farbe das Board gerade anzeigt.\n","permalink":"https://iot.fkainka.de/day9-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen finden Sie einen Fototransistor. Er wird verwendet, um die Umgebungshelligkeit zu messen. In dieser Schaltung liegt das Poti in Reihe zum Fototransistor. So kann man mit dem Poti die Sensibilität des Sensors verändern. Die Schaltung bewirkt, dass das Abdunkeln des Sensors den Messwert erhöht.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day9_LDR_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2498\" src=\"/images/2018/11/Day9_LDR_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"441\" height=\"546\" data-id=\"2498\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDies können Sie im Gauge-Element auf dem Nutzerinterface zum heutigen Tag sehen. Dazu müssen Sie aber zunächst den Flow des heutigen Tages in Ihre Node-RED-Umgebung importieren und starten, natürlich nicht, ohne den gestrigen zu deaktivieren. Vergessen Sie auch nicht, das heutige Programm auf der Konfigurationsseite zu aktvieren und die IP des UDP-Sende-Nodes anzupassen.\u003c/p\u003e","title":"Tag 9: Ein Stimmungslicht"},{"content":"Versuchsaufbau Hinter dem achten Türchen des Adventskalenders befindet sich ein Potenziometer, das hier als Spannungsteiler verwendet wird. Sie können eine Spannung zwischen 0 V und 3,3 V einstellen, die vom Board gemessen und an Node-RED übertragen wird. Zusätzlich zu dem Treppenhauslicht von gestern können Sie so auch Messwerte übertragen.\nDer Flow des heutigen Tages Externer Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Den Flow von heute bekommen Sie wie gewohnt in dem Pastebin Frame. Vergessen Sie nicht, den gestrigen zu deaktivieren und eventuell die Sende-IP anzupassen. In dem heutigen Flow wird außerdem ein neuer Node für das Dashboard verwendet, nämlich ein Gauge (Messgerät), über das der gemessene Wert visuell dargestellt wird.\nDas Userinterface zum heutigen Versuch Wenn Sie das Programm des heutigen Tages aktivieren, werden Sie sehen, dass sich das Gauge-Element (Zeigerinstrument) auf der Dashboard-Seite etwa alle zwei Sekunden aktualisiert und die neuen Messwerte anzeigt. Wenn Sie nun an dem Rädchen des Potis drehen, verändern sich diese Werte. Dieser Messwert könnte für verschiedene Anwendungsfälle genutzt werden, beispielsweise um die Helligkeit der LED zu variieren oder die Leuchtdauer des Treppenlichts einzustellen, also typische Anwendungen in Ihrem Smarthome.\nDer Versuchsaufbau mit Pin-Schablone ","permalink":"https://iot.fkainka.de/day8-2018/","summary":"\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day8_Button_LED_ADC_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2490\" src=\"/images/2018/11/Day8_Button_LED_ADC_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"512\" height=\"633\" data-id=\"2490\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eHinter dem achten Türchen des Adventskalenders befindet sich ein Potenziometer, das hier als Spannungsteiler verwendet wird. Sie können eine Spannung zwischen 0 V und 3,3 V einstellen, die vom Board gemessen und an Node-RED übertragen wird. Zusätzlich zu dem Treppenhauslicht von gestern können Sie so auch Messwerte übertragen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/T8Flow.png\"\u003e\u003cimg class=\"size-large wp-image-2491\" src=\"/images/2018/11/T8Flow.png\" alt=\"Der Flow des heutigen Tages\" width=\"616\" height=\"154\" data-id=\"2491\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Flow des heutigen Tages\u003c/figcaption\u003e\u003c/figure\u003e\n\n\u003cdiv class=\"ext-embed\" data-src=\"https://pastebin.com/embed_iframe/FNtPZnht\" data-height=\"400px\" data-title=\"pastebin.com\"\u003e\n  \u003cdiv\u003e\u003cstrong\u003eExterner Inhalt von pastebin.com\u003c/strong\u003e\u003cbr\u003eBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen.\n  \u003ca href=\"https://fkainka.de/datenschutzerklaerung/#eingebettete-inhalte-anderer-anbieter\"\u003eDatenschutz\u003c/a\u003e\u003c/div\u003e\n  \u003cdiv class=\"ext-embed-actions\"\u003e\u003cbutton type=\"button\"\u003eInhalt laden\u003c/button\u003e\n  \u003ca href=\"https://pastebin.com/embed_iframe/FNtPZnht\" target=\"_blank\" rel=\"noopener noreferrer\"\u003edirekt öffnen ↗\u003c/a\u003e\u003c/div\u003e\n\u003c/div\u003e\n\u003cscript\u003e\ndocument.addEventListener(\"click\", function (e) {\n  var b = e.target.closest(\".ext-embed button\"); if (!b) return;\n  var box = b.closest(\".ext-embed\"), f = document.createElement(\"iframe\");\n  f.src = box.dataset.src; f.style.height = box.dataset.height; f.title = box.dataset.title;\n  f.setAttribute(\"allowfullscreen\", \"\"); f.loading = \"lazy\";\n  box.replaceChildren(f); box.classList.add(\"loaded\");\n});\n\u003c/script\u003e\n\n\n\u003cp\u003eDen Flow von heute bekommen Sie wie gewohnt in dem Pastebin Frame. Vergessen Sie nicht, den gestrigen zu deaktivieren und eventuell die Sende-IP anzupassen. In dem heutigen Flow wird außerdem ein neuer Node für das Dashboard verwendet, nämlich ein Gauge (Messgerät), über das der gemessene Wert visuell dargestellt wird.\u003c/p\u003e","title":"Tag 8: Ein Regler"},{"content":"hey zusammen,\nhatte mich mit dem 6.törchen beschäftigt\u0026hellip;\nalles soweit gut\u0026hellip;node-red gestartet und flow installiert\u0026hellip;für das Bord das entsprechende Programm des Tages geladen\u0026hellip;danach\u0026hellip;keine Aktion mehr mit dem board möglich\u0026hellip;auch die home page des board kann nicht mehr geladen werden\u0026hellip;ping auf eingestellt ip Adresse is ok\u0026hellip;nach 10 Sekunden ist Verbindung aber abgebrochen\u0026hellip;und Led geht von fünf über grün blinkend in rot dauerleuchtend über\nfrage: wie kann das Bord wieder in einen lauffähigen Status - werkseinstellungen ?! - gesetzt werden?!\n2 Antworten Eddie – 08.12.2018\nMoin moin,\nevtl. hilft Dir das hier weiter: https://iot.fkainka.de/nodeesp-firmware-reinstallieren\nAllerdings habe ich das auch, dass das Board manchmal nicht mehr reagiert und man es ein paar mal vom Strom trennen muss, damit man per Browser wieder darauf zugreifen kann.\nEddie\nnode-esp – 11.12.2018\ntja\u0026hellip;ein erneites aufspielen die firmware liefert keinen erfolg\u0026hellip;der fehler bleibt bestehen\u0026hellip;das node esp board ist nicht mehr zu verwenden\u0026hellip;\n","permalink":"https://iot.fkainka.de/forum/topic/nodeesp-in-stoerung/","summary":"\u003cp\u003ehey zusammen,\u003c/p\u003e\n\u003cp\u003ehatte mich mit dem 6.törchen beschäftigt\u0026hellip;\u003c/p\u003e\n\u003cp\u003ealles soweit gut\u0026hellip;node-red gestartet und flow installiert\u0026hellip;für das Bord das entsprechende Programm des Tages geladen\u0026hellip;danach\u0026hellip;keine Aktion mehr mit dem board möglich\u0026hellip;auch die home page des board kann nicht mehr geladen werden\u0026hellip;ping auf eingestellt ip Adresse is ok\u0026hellip;nach 10 Sekunden ist Verbindung aber abgebrochen\u0026hellip;und Led geht von fünf über grün blinkend in rot dauerleuchtend über\u003c/p\u003e\n\u003cp\u003efrage: wie kann das Bord wieder in einen lauffähigen Status - werkseinstellungen ?! - gesetzt werden?!\u003c/p\u003e","title":"NodeESP in Störung"},{"content":"Hinter dem heutigen Türchen befindet sich eine rote LED. Damit wollen wir nun ein einfaches Treppenhauslicht mit Webinterface realisieren. Dazu müssen Sie die folgende Schaltung aufbauen und das heutige Programm aktivieren.\nVersuchsaufbau (Kurzes Beinchen der LED ist oben) Den Node-RED-Flow zum Importieren finden Sie in dem unteren Pastebin Frame. Deaktivieren Sie nach dem Importieren den Flow von gestern, damit sich die UDP-Empfangs-Nodes nicht in die Quere kommen. Im Flow selbst finden Sie diesmal neben dem Empfangsnode einen Sende-Node. Diesen müssen Sie wahrscheinlich an Ihre Broadcast-IP anpassen. Wenn am UDP-Note eine Nachricht ankommt, wird sie wieder von einem JSON-String, also reinem Text, in ein JSON-Objekt konvertiert. Der Unterschied ist, dass man nun direkt auf einzelne Attribute zugreifen kann.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Der folgende Switch-Node ist vergleichbar mit einer IF-Abfrage. Es wird überprüft, ob das Kommando trigger gesendet wurde. Dieses Kommando wird durch Drücken des Buttons ausgelöst. Ein Trigger-Node übernimmt daraufhin die Arbeit. Wird der Trigger-Node aktiviert, sendet er den Befehl light_on für „Licht an“. Diese Nachricht, ebenfalls im JSON-Format, wird vom NodeESP-Board interpretiert, und entsprechend wird das Licht angeschaltet. Nach weiteren vier Sekunden sendet der Trigger-Node die Nachricht: light_off für „Licht aus“. Auch hierauf reagiert das Board entsprechend. Die Off-Nachricht kann verzögert werden, indem der Trigger-Node erneut ausgelöst wird. Dafür wurde in dem Modul eine entsprechende Option aktiviert. Zusätzlich kann der Trigger-Node auch über die Web-UI aktiviert werden. Also können Sie das Treppenlicht auch über das Smartphone aktivieren, ganz im Sinne von Smarthome.\nDer Flow des heutigen Tages Hinweis: In der Windows-Version von Node-RED funktionierte der UDP-Node zum Senden nicht mit der Einstellung broadcast message (in den Node-Properties unter send a). In der Node-RED-Version, die ich auf einem Raspberry getestet habe, funktionierte allerdings das Senden nur mit dieser Einstellung. Das bedeutet, Raspberry-Nutzer müssen an dieser Stelle wahrscheinlich den UDP-Node zum Senden anpassen.\n","permalink":"https://iot.fkainka.de/day7-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich eine rote LED. Damit wollen wir nun ein einfaches Treppenhauslicht mit Webinterface realisieren. Dazu müssen Sie die folgende Schaltung aufbauen und das heutige Programm aktivieren.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day7_Button_LED_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2483\" src=\"/images/2018/11/Day7_Button_LED_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"534\" height=\"661\" data-id=\"2483\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau (Kurzes Beinchen der LED ist oben)\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDen Node-RED-Flow zum Importieren finden Sie in dem unteren Pastebin Frame. Deaktivieren Sie nach dem Importieren den Flow von gestern, damit sich die UDP-Empfangs-Nodes nicht in die Quere kommen. Im Flow selbst finden Sie diesmal neben dem Empfangsnode einen Sende-Node. Diesen müssen Sie wahrscheinlich an Ihre Broadcast-IP anpassen. Wenn am UDP-Note eine Nachricht ankommt, wird sie wieder von einem JSON-String, also reinem Text, in ein JSON-Objekt konvertiert. Der Unterschied ist, dass man nun direkt auf einzelne Attribute zugreifen kann.\u003c/p\u003e","title":"Tag 7: Treppenhauslicht"},{"content":"Hinter dem sechsten Türchen des Adventskalenders finden Sie einen Widerstand mit 1 kOhm, der erst morgen zum Einsatz kommt. Heute wollen wir uns weiter mit Node-RED beschäftigen und die Touch-Funktion des Boards ausprobieren. Dazu müssen Sie wie gewohnt das Programm des heutigen Tages auswählen und außerdem die folgende Schaltung aufbauen. Die gelben Drähte sind die Verbindungsdrähte mit einem freien Ende und fungieren als Touch-Sensoren.\nVersuchsaufbau: Drei Drähte hängen an einem Ende in der Luft Nach dem Aufbau können Sie Node-RED wieder über das Terminal und den Befehl node-red starten. Öffnen Sie dann über die Adresse http://127.0.0.1:1880/ den Node-RED-Editor. Als Erstes werden wir heute ein paar Nodes nachinstallieren. Dazu klicken Sie am rechten oberen Rand auf die drei Striche. Sie finden dann den Punkt manage palette. Hier sind alle installierten Nodes aufgelistet. Wenn Sie nun das Install-Register auswählen, sehen Sie eine riesige Anzahl unterschiedlicher Module, die Sie installieren können. Für heute suchen wir nach dem Modul node-red-dashboard. Klicken Sie auf den Install-Button. Eine Nachricht erscheint, die Sie vor den teilweise schwierigen Installationen warnt. Klicken Sie einfach auf Ok, denn mit diesem Modul verhält es sich einfach. Nach kurzer Wartezeit erscheint eine Erfolgsmeldung, und Sie haben die neuen Nodes in Ihrer Node-Zeile.\nDie Dashboard Installation Im nächsten Schritt können Sie den Flow des heutigen Tages einrichten. Damit Sie nicht alles selbst machen müssen, gibt es die Möglichkeit, ganze Flows in Node-RED zu importieren. Klicken Sie dazu wieder auf die drei Striche und anschließend auf Import, gefolgt von Clipboard. In das erscheinende Textfeld können Sie die Flows kopieren. Den Flow des heutigen Tages finden Sie hier von Pastebin integriert. Der einfachste Weg zum Kopieren der Flows ist, auf den \u0026ldquo;Download Raw\u0026rdquo; Button zu klicken und die sich öffnende Seite mit Text komplett in die Zwischenablage zu kopieren um diese in das Node-Red Fenster wieder einzufügen.\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Nach dem Importieren sollte oben in der Leiste ein neues Register zu sehen sein. Zunächst müssen Sie aber den gestrigen Flow deaktivieren, weil er am UDP-Port lauschen würde. Klicken Sie doppelt auf den Tab des Flows, wechseln Sie dann im Flow-Menü den Status von Enabled auf Disabled und bestätigen Sie mit **Done.**Eventuell müssen Sie analog noch den Flow des heutigen Tages aktivieren. Dann können Sie die neuen Abläufe mit Deploy bestätigen.\nÖffnen Sie im Browser diese Seite:\nhttp://127.0.0.1:1880/ui\nDas einfache Dashboard Was Sie nun sehen, ist ein Userinterface (UI), oft auch Dashboard genannt. Dank der Installation des neuen Node-Moduls ist es Ihnen jetzt möglich, eine eigene Oberfläche zu erstellen, über die Sie Vorgänge steuern können. Die Oberfläche von heute haben Sie mit dem Flow des heutigen Tages mit importiert. Es handelt sich um eine Textbox, die die UDP-Nachrichten anzeigt. Es gibt aber noch einen kleinen Zusatz: Ich hoffe, Sie haben die Lautstärke Ihres PCs nicht zu hoch eingestellt, wenn Sie jetzt einen der frei hängenden Drähte am Board berühren. Das Board erkennt automatisch die Berührung und sendet eine UDP-Nachricht, die im Textfeld erscheint. Zusätzlich gibt es auf dem Dashboard einen Text-to-Speech-Node, der den Textwert im JSON-Objekt vorliest. Sie haben also erfolgreich eine erste Sprachausgabe realisiert – und das alles mit nur einem einzigen Node.\nHinweis: Falls eine Berührung keine Nachricht auslöst, passen Sie die Sensibilität der Touch-Erkennung auf der Konfigurationsseite an. Je höher der Wert, umso empfindlicher reagieren Touch-Buttons auf Berührungen.\n","permalink":"https://iot.fkainka.de/day6-2018/","summary":"\u003cp\u003eHinter dem sechsten Türchen des Adventskalenders finden Sie einen Widerstand mit 1 kOhm, der erst morgen zum Einsatz kommt. Heute wollen wir uns weiter mit Node-RED beschäftigen und die Touch-Funktion des Boards ausprobieren. Dazu müssen Sie wie gewohnt das Programm des heutigen Tages auswählen und außerdem die folgende Schaltung aufbauen. Die gelben Drähte sind die Verbindungsdrähte mit einem freien Ende und fungieren als Touch-Sensoren.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day6_Touch_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2472\" src=\"/images/2018/11/Day6_Touch_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"414\" height=\"548\" data-id=\"2472\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau: Drei Drähte hängen an einem Ende in der Luft\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eNach dem Aufbau können Sie Node-RED wieder über das Terminal und den Befehl \u003cstrong\u003enode-red\u003c/strong\u003e starten. Öffnen Sie dann über die Adresse \u003cstrong\u003ehttp://127.0.0.1:1880/\u003c/strong\u003e den Node-RED-Editor. Als Erstes werden wir heute ein paar Nodes nachinstallieren. Dazu klicken Sie am rechten oberen Rand auf die drei Striche. Sie finden dann den Punkt \u003cstrong\u003emanage palette.\u003c/strong\u003e Hier sind alle installierten Nodes aufgelistet. Wenn Sie nun das \u003cstrong\u003eInstall\u003c/strong\u003e-Register auswählen, sehen Sie eine riesige Anzahl unterschiedlicher Module, die Sie installieren können. Für heute suchen wir nach dem Modul \u003cstrong\u003enode-red-dashboard.\u003c/strong\u003e Klicken Sie auf den \u003cstrong\u003eInstall\u003c/strong\u003e-Button. Eine Nachricht erscheint, die Sie vor den teilweise schwierigen Installationen warnt. Klicken Sie einfach auf \u003cstrong\u003eOk\u003c/strong\u003e, denn mit diesem Modul verhält es sich einfach. Nach kurzer Wartezeit erscheint eine Erfolgsmeldung, und Sie haben die neuen Nodes in Ihrer Node-Zeile.\u003c/p\u003e","title":"Tag 6: Touch to Speach"},{"content":"Hi\nIch bin über die Firmware-Reset Anleitung zur folgender Arduino Boards Manager Seite gestossen: https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md\nHat jemand von Euch über diesen Weg eine eigene kleine Anwendung auf das NodeESP Board gekriegt? Wäre an einem Erfahrungsbericht interessiert ;-)\nCheers!\n1 Antwort Ray – 04.01.2019\nHappy New Year liebe NodeESPler,\nnachdem ich bisher keine Quellen oder andere Möglichkeiten gefunden hab, die FW zu bearbeiten, programmiere ich nun den NodeESP (quasi als ESP32) direkt mit der aktuellen Arduino IDE (V1.8.8; https://www.arduino.cc/en/Main/Software - ZIP runterladen und starten, Installation war nicht notwendig)\n-\u0026gt; Einstellungen \u0026gt; “Additional Board Manager URLs”: https://dl.espressif.com/dl/package_esp32_index.json\n-\u0026gt; Tools \u0026gt; Board \u0026gt; Boards Manager…: Search for ESP32 and press install button for the “ESP32 by Espressif Systems“ Board: NodeMCU-32S\n-\u0026gt; COM auswählen\nUSB-Treiber: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers\nJede Menge Tutorials und Beispiele gibt es hier: https://randomnerdtutorials.com/getting-started-with-esp32/\nauch ESP8266 Seiten können hilfreich sein, z.B. https://randomnerdtutorials.com/esp8266-and-node-red-with-mqtt/\nFazit:\nSW only: WLAN ist verbunden, ein kleiner Web-Server läuft, MQTT geht in beide Richtungen, die OnBoard-LEDs lassen sich steuern HW Ansteuerung: ein Test-Sensor (YL-69 Bodenfeuchtigkeit) sendet munter seine Daten Bin gespannt auf Eure Erfahrungen und Projekte!\n","permalink":"https://iot.fkainka.de/forum/topic/arduino-ide/","summary":"\u003cp\u003eHi\u003c/p\u003e\n\u003cp\u003eIch bin über die Firmware-Reset Anleitung zur folgender Arduino Boards Manager Seite gestossen: \u003ca href=\"https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards\"\u003ehttps://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards\u003c/a\u003e_manager.md\u003c/p\u003e\n\u003cp\u003eHat jemand von Euch über diesen Weg eine eigene kleine Anwendung auf das NodeESP Board gekriegt? Wäre an einem Erfahrungsbericht interessiert ;-)\u003c/p\u003e\n\u003cp\u003eCheers!\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eRay\u003c/strong\u003e – 04.01.2019\u003c/p\u003e\n\u003cp\u003eHappy New Year liebe NodeESPler,\u003c/p\u003e\n\u003cp\u003enachdem ich bisher keine Quellen oder andere Möglichkeiten gefunden hab, die FW zu bearbeiten, programmiere ich nun den NodeESP (quasi als ESP32) direkt mit der aktuellen Arduino IDE (V1.8.8; \u003ca href=\"https://www.arduino.cc/en/Main/Software\"\u003ehttps://www.arduino.cc/en/Main/Software\u003c/a\u003e - ZIP runterladen und starten, Installation war nicht notwendig)\u003cbr\u003e\n-\u0026gt; Einstellungen \u0026gt; “Additional Board Manager URLs”: \u003ca href=\"https://dl.espressif.com/dl/package\"\u003ehttps://dl.espressif.com/dl/package\u003c/a\u003e_esp32_index.json\u003cbr\u003e\n-\u0026gt; Tools \u0026gt; Board \u0026gt; Boards Manager…: Search for ESP32 and press install button for the “ESP32 by Espressif Systems“ Board: NodeMCU-32S\u003cbr\u003e\n-\u0026gt; COM auswählen\u003cbr\u003e\nUSB-Treiber: \u003ca href=\"https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers\"\u003ehttps://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers\u003c/a\u003e\u003c/p\u003e","title":"Arduino IDE"},{"content":"hallo,\nals Oldie mit Bastler Ambitionen habe ich mich richtig auf den Kalender gefreut, zumal er auch die Möglichkeit bietet in das Thema Micro Controller Programmierung rein zu schnuppern.\nLeider ist die Welt doch nicht so einfach aber man ist ja lernfähig.\nIch benutze ein MacBook und versuche damit mich an das Thema an zu nähern.\nTag 1 abgehakt\nTag 2 abgehakt\nTag 3 abgehakt\nTag 4 jetzt kommt es:\nNachricht vom nodeesp per Button meldet auch \u0026quot; cmd boot_pressed \u0026quot;\nErgo die Kommunikation funktioniert.\nBefehle vom Paket Sender ans board klappen nicht, es kommt keine Antwort.Kein ping , wifi status,wifi scan etc.\nTag 5 neuer Button funktioniert aber mit der Antwort hapert es.\nneues tool Node Red(unter Mac OS installiert ) aber bekomme es nicht am laufen.\nSo wer kann mir jetzt helfen\nbesten Dank im Voraus\n","permalink":"https://iot.fkainka.de/forum/topic/kommunikation-mit-dem-nodeessp-board/","summary":"\u003cp\u003ehallo,\u003cbr\u003e\nals Oldie mit Bastler Ambitionen habe ich mich richtig auf den Kalender gefreut, zumal er auch die Möglichkeit bietet in das Thema Micro Controller Programmierung rein zu schnuppern.\u003cbr\u003e\nLeider ist die Welt doch nicht so einfach aber man ist ja lernfähig.\u003cbr\u003e\nIch benutze ein MacBook und versuche damit mich an das Thema an zu nähern.\u003cbr\u003e\nTag 1 abgehakt\u003cbr\u003e\nTag 2 abgehakt\u003cbr\u003e\nTag 3 abgehakt\u003cbr\u003e\nTag 4 jetzt kommt es:\u003cbr\u003e\nNachricht vom nodeesp per Button meldet auch \u0026quot; cmd boot_pressed \u0026quot;\u003cbr\u003e\nErgo die Kommunikation funktioniert.\u003cbr\u003e\nBefehle vom Paket Sender ans board klappen nicht, es kommt keine Antwort.Kein ping , wifi status,wifi scan etc.\u003cbr\u003e\nTag 5 neuer Button funktioniert aber mit der Antwort hapert es.\u003cbr\u003e\nneues tool Node Red(unter Mac OS installiert ) aber bekomme es nicht am laufen.\u003cbr\u003e\nSo wer kann mir jetzt helfen\u003cbr\u003e\nbesten Dank im Voraus\u003c/p\u003e","title":"kommunikation mit dem nodeessp Board"},{"content":"Hallo Fabian,\nheute morgen war die Welt noch in Ordnung. im WiFi-Ananlyser WiFiman wurde das Board unter \u0026ldquo;List\u0026rdquo; als NodeESP angezeigt und unter \u0026ldquo;Discovery\u0026rdquo; wurde es als Espressive samt IP aufgeführt.\nDann wollte ich dem Board eine neue SSID zuweisen. Weiß der Teufel was ich dabei falsch gemacht habe. Die LED blinkte eine ganze Weile grün und leutete danach permanent rot.\nGemäß deiner Anleitung habe ich die Firmware mit der Datei ESP32_FW.bin neu installiert. Ich habe mich sogar daran gehalten mir ein Heißgetränk zu holen. :-)\nDanach leuchtet die LED nun permanent grün, das Board funkt und ist im WiFiman unter List zu finden; nicht aber unter Discovery.\nWeder vom Smartphone noch vom PC aus ist es unter http://192.168.4.1 zu finden.\nWelche Methoden gibt es sonst noch um auf das Board zuzugreifen?\n1 Antwort lintho1st – 06.12.2018\nES LEBT WIEDER!!!\nDie Ursache, sowohl für das Zerschießen, wie auch den Ärger nach dem erneuten flashen, lag wohl in der Ungeduld beim Bedienen des Browsers auf meinem Smartphone.\n","permalink":"https://iot.fkainka.de/forum/topic/zerschossen/","summary":"\u003cp\u003eHallo Fabian,\u003c/p\u003e\n\u003cp\u003eheute morgen war die Welt noch in Ordnung. im WiFi-Ananlyser WiFiman wurde das Board unter \u0026ldquo;List\u0026rdquo; als NodeESP angezeigt und unter \u0026ldquo;Discovery\u0026rdquo; wurde es als Espressive samt IP aufgeführt.\u003cbr\u003e\nDann wollte ich dem Board eine neue SSID zuweisen. Weiß der Teufel was ich dabei falsch gemacht habe. Die LED blinkte eine ganze Weile grün und leutete danach permanent rot.\u003cbr\u003e\nGemäß deiner Anleitung habe ich die Firmware mit der Datei ESP32_FW.bin neu installiert. Ich habe mich sogar daran gehalten mir ein Heißgetränk zu holen. :-)\u003cbr\u003e\nDanach leuchtet die LED nun permanent grün, das Board funkt und ist im WiFiman unter List zu finden; nicht aber unter Discovery.\u003cbr\u003e\nWeder vom Smartphone noch vom PC aus ist es unter http://192.168.4.1 zu finden.\u003cbr\u003e\nWelche Methoden gibt es sonst noch um auf das Board zuzugreifen?\u003c/p\u003e","title":"zerschossen?"},{"content":"Hinter dem fünften Türchen des Adventskalenders finden Sie einen Taster, der in dem heutigen Versuch anstelle des Boot-Buttons eingesetzt werden soll. Der Button wird so an Pin 18 und GND angeschlossen, dass er beim Drücken den Pin auf Masse, also LOW, zieht. Wenn Sie nun das Programm des Tages auswählen und den Button drücken, wird wieder eine Nachricht über UDP übermittelt.\nVersuchsaufbau Heute werden Sie das Programm Node-RED kennenlernen, mit dem Sie Ihre eigenen kleinen Programmabläufe erstellen und Vorgänge automatisieren können. Node-RED ist eine kostenlose Software, die es uns ermöglicht, verschiedene Geräte, Onlinedienste und APIs (Programmierschnittstellen) über eine einfache grafische Oberfläche zu verbinden. Die Verbindungen, Flows genannt, werden dabei einfach per Mausklick gezogen.\nNode-RED gibt es für Linux, Windows und macOS. Sinnvoll ist die Verwendung eines Raspberry Pi, da dieser ohne großen Energiebedarf immer aktiv sein kann, ganz im Sinne des Smarthome. Außerdem ist Node-RED dort unter Raspbian bereits vorinstalliert.\nIch stelle die Installation beispielhaft für Windows 10 vor. Die meisten dieser Befehle sind aber auf andere Systeme übertragbar.\nIm ersten Schritt muss Node.js installiert werden. Diese Software bekommen Sie von der Webseite https://nodejs.org/, auf der auch eine genaue Installationsanweisung zu finden ist. Installieren Sie die ca. 16 MByte große MSI-Datei per Doppelklick. Um sicherzugehen, dass alles korrekt installiert wurde, sollten Sie nun das Windows-Terminal, auch Kommandozeile oder Shell genannt (Windows-Taste + [R] und dann cmd eingeben), öffnen und\nnode \u0026ndash;version \u0026amp;\u0026amp; npm –version\neingeben. Das Ergebnis lautet z. B. v8.10.0 und 5.6.0, Sie könnten aber bereits eine neuere Version haben. In der Kommandozeile müssen Sie dann den Befehl zur Installation von Node-RED eingeben:\nnpm install -g \u0026ndash;unsafe-perm node-red\nDas kann eine Weile dauern. Anschließend starten Sie Node-RED mit diesem Kommandozeilenbefehl:\nnode-red\nDie Firewall meldet sich. Im Hintergrund startet Node-RED in der Konsole Sofort meldet sich die Firewall, die wissen möchte, wie mit der neuen Verbindung vorgegangen werden soll. Wichtig ist, dass Sie Private Netzwerke und Zugriff zulassen wählen. Nur dann kann Node-RED richtig arbeiten. Wichtig ist auch, dass Sie das Terminal jetzt nicht schließen, denn damit beenden Sie auch Node-RED wieder.\nNun haben Sie Node-RED installiert und gestartet, aber außer ein paar Zeilen im Terminal noch nicht viel Nützliches gesehen. Das liegt daran, dass die Bedienoberfläche der Software über den Browser geöffnet wird. Dazu öffnen Sie die Adresse http://127.0.0.1:1880/****. Dabei handelt es sich um die localhost-Adresse, mit der Sie Ihren Rechner adressieren. Die Zahl 1880 steht für den Port, über den Sie Node-RED erreichen. Wenn Sie von einem anderen Rechner aus auf Node-RED zugreifen möchten, müssen Sie natürlich die richtige IP des Rechners verwenden. Nun sehen Sie die Oberfläche von Node-RED mit der Flow-Fläche in der Mitte, den Nodes auf der linken und Informationen auf der rechten Seite.\nEinstellungen und eine empfangene Nachricht Auf der linken Seite finden Sie im Bereich Input einen Node mit der Bezeichnung udp. Ziehen Sie ihn in die freie Fläche in der Mitte. Etwas weiter unten unter dem Punkt output finden Sie debug. Ziehen Sie diesen Node ebenfalls auf die Fläche. Verbinden Sie die beiden Nodes durch Klicken und Ziehen mit der Maus. Anschließend klicken Sie doppelt auf den UDP-Node, um die Einstellungen zu öffnen. Geben Sie alles genau so ein, wie Sie es auf dem Bild oben sehen. Dann bestätigen Sie mit Done. Zum Start müssen Sie auf den Deploy-Button oben rechts in der Ecke klicken. Es erscheint kurz die Meldung Success****fully deployed. Der neue Flow ist jetzt aktiv. Als letzten Schritt wählen Sie am rechten Rand das Register debug aus und drücken dann auf den Button auf dem Steckboard. Im debug-Fenster erscheint eine Nachricht im bekannten JSON-Format: {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;btn1_pressed\u0026rdquo;}. Die Verbindung zu Node-RED steht also.\nHinweis: Das Abzählen der Board-Pins kann mühsam sein. Deswegen gibt es auf der Boardseite im Bereich Pinout eine Schablone, die Sie ausdrucken, ausschneiden und auf das Board legen können.\n","permalink":"https://iot.fkainka.de/day5-2018/","summary":"\u003cp\u003eHinter dem fünften Türchen des Adventskalenders finden Sie einen Taster, der in dem heutigen Versuch anstelle des Boot-Buttons eingesetzt werden soll. Der Button wird so an Pin 18 und GND angeschlossen, dass er beim Drücken den Pin auf Masse, also LOW, zieht. Wenn Sie nun das Programm des Tages auswählen und den Button drücken, wird wieder eine Nachricht über UDP übermittelt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/Day5_Button1_Steckplatine.png\"\u003e\u003cimg class=\" wp-image-2464\" src=\"/images/2018/11/Day5_Button1_Steckplatine.png\" alt=\"Versuchsaufbau\" width=\"464\" height=\"574\" data-id=\"2464\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eVersuchsaufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eHeute werden Sie das Programm \u003cstrong\u003eNode-RED\u003c/strong\u003e kennenlernen, mit dem Sie Ihre eigenen kleinen Programmabläufe erstellen und Vorgänge automatisieren können. Node-RED ist eine kostenlose Software, die es uns ermöglicht, verschiedene Geräte, Onlinedienste und APIs (Programmierschnittstellen) über eine einfache grafische Oberfläche zu verbinden. Die Verbindungen, Flows genannt, werden dabei einfach per Mausklick gezogen.\u003c/p\u003e","title":"Tag 5: Node-RED"},{"content":"Hallo,\ngibt es einen Schaltplan vom NODEESP?\nAls Elektroniker interessiert mich das und ist nötig für die spätere Verwendung mit Arduino.\n(Ports für die RGB-LED\u0026hellip;.)\n1 Antwort Marco81 – 09.12.2018\nDie Beschaltung sollte nicht wesentlich anders als die der anderen ESP-32-Boards sein, und da gibts ja Schaltpläne bzw. Belegungen im Netz. Die RGB-LED ist erkennbar an IO0, IO2 und IO4 angeschlossen.\n","permalink":"https://iot.fkainka.de/forum/topic/schaltplan-nodeesp-board/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\ngibt es einen Schaltplan vom NODEESP?\u003cbr\u003e\nAls Elektroniker interessiert mich das und ist nötig für die spätere Verwendung mit Arduino.\u003cbr\u003e\n(Ports für die RGB-LED\u0026hellip;.)\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eMarco81\u003c/strong\u003e – 09.12.2018\u003c/p\u003e\n\u003cp\u003eDie Beschaltung sollte nicht wesentlich anders als die der anderen ESP-32-Boards sein, und da gibts ja Schaltpläne bzw. Belegungen im Netz. Die RGB-LED ist erkennbar an IO0, IO2 und IO4 angeschlossen.\u003c/p\u003e","title":"Schaltplan NODEESP-Board ?"},{"content":"Hinter dem vierten Türchen des Adventskalenders finden Sie einen Satz Kabel, die für die kommenden Hardwareaufbauten nützlich sind. Im heutigen Projekt wollen wir uns aber anschauen, was das JSONFormat ist und wie es uns hilft, mit dem Board zu kommunizieren.\nZuerst aktivieren Sie wie gewohnt das Programm des heutigen Tages. Außerdem werden Sie das PacketSender-Programm mit den gleichen Einstellungen wie gestern benötigen. Heute erscheint erst dann eine Nachricht, wenn Sie kurz auf den Boot-Button auf dem Board gedrückt haben. Diese Nachricht sieht so aus:\n{\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;boot_pressed\u0026rdquo;}\nDie Nachricht im Packet-Sender-Programm Das liegt daran, dass diese Nachricht der JSON (JavaScript Object Notation) folgt. Dabei handelt es sich um ein schlankes Datenaustauschformat für Maschinen, das aber auch für Menschen sehr gut lesbar ist. Im Grunde besteht im JSON-Format alles aus Namen und Werten. Zuerst kommt der Name des Werts (auch Key genannt), hier cmd (kurz für Command, Kommando), und anschließend der Wert, hier boot_pressed. Beide sind durch einen Doppelpunkt voneinander getrennt und, da es sich hier um Text handelt, von Anführungszeichen umschlossen. Ein komplettes JSON-Objekt ist zusätzlich von geschweiften Klammern umgeben.\nDas Board kann nicht nur Nachrichten senden, sondern auch Nachrichten empfangen. Dazu müssen Sie im Packet-Sender-Programm ein paar Einstellungen vornehmen. Im oberen Bereich finden Sie ein Textfeld, das mit Address beschriftet ist. Hier sollten Sie wieder die Broadcast-Adresse eingeben, die Sie auch auf dem Board verwendet haben. Alternativ können Sie die Board-IP oder sogar nur den mDNS-Namen (einfach nodeesp) nutzen. In das Feld Port rechts daneben fügen Sie wieder den Port 55056 ein. Als letzte Einstellung wählen Sie im Drop-down-Menü weiter rechts UDP aus. Nun können Sie etwas weiter oben im Feld ASCII eine Nachricht eingeben und mit dem Send-Button übertragen. Senden Sie zunächst einen willkürlichen Text, etwa Hallo. Da das Packet-Sender-Programm unter dem gleichen Port auch lauscht und Sie die Broadcast-IP-Adresse verwenden, werden Sie einige der gesendeten Nachrichten auch selbst empfangen. Zusätzlich empfangen Sie vom Board die Nachricht {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;ack\u0026rdquo;}. ack ist die Kurzform von acknowledged (bestätigt). Damit bestätigt das Board also den Empfang einer Nachricht, auch wenn es wahrscheinlich mit der Nachricht selbst nichts anfangen konnte.\nSo senden Sie einen Text an das Board Wenn Sie nun aber einen vordefinierten Befehl im JSON-Format abschicken, sieht die Sache schon anders aus. Senden Sie zum Beispiel den Text {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;ping\u0026rdquo;}, kommt nach kurzer Zeit ein\n{\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;pong\u0026rdquo;} als Antwort vom Board zurück. Es gibt noch weitere Kommandos, die Sie ausprobieren können. Mit {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_wifi_status\u0026rdquo;} bekommen Sie beispielsweise den Verbindungsstatus des Boards zurück. Mit {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_wifi_scan\u0026rdquo;} werden alle WLAN-Netzwerke in Reichweite erfasst und in einer Liste übermittelt.\nEs gibt eine ganze Reihe von allgemeingültigen Kommandos, die Sie auf der Boardseite oder auf der Projektseite einsehen können. Aber Vorsicht: Ein paar Kommandos aus der Kategorie Settings können die Einstellungen des Boards so verändern, dass nichts mehr geht. Wenn das passiert, können Sie zu den Standardeinstellungen zurückkehren, indem Sie den Boot-Button über zehn Sekunden lang gedrückt halten. Dies ist in allen Programmen möglich, bei denen WPS in Klammern hinter dem Programmnamen steht. Die gleiche Funktion ist auch auf der Konfigurationsseite unter Advanced Settings zu finden (Restore Default Configuration). Als dritte Möglichkeit können Sie Pin 13 beim Boardstart auf LOW setzen. Vergessen Sie aber nicht, die Verbindung an Pin 13 nach dem Reset wieder zu trennen.\n","permalink":"https://iot.fkainka.de/day4-2018/","summary":"\u003cp\u003eHinter dem vierten Türchen des Adventskalenders finden Sie einen Satz Kabel, die für die kommenden Hardwareaufbauten nützlich sind. Im heutigen Projekt wollen wir uns aber anschauen, was das JSONFormat ist und wie es uns hilft, mit dem Board zu kommunizieren.\u003c/p\u003e\n\u003cp\u003eZuerst aktivieren Sie wie gewohnt das Programm des heutigen Tages. Außerdem werden Sie das PacketSender-Programm mit den gleichen Einstellungen wie gestern benötigen. Heute erscheint erst dann eine Nachricht, wenn Sie kurz auf den Boot-Button auf dem Board gedrückt haben. Diese Nachricht sieht so aus:\u003c/p\u003e","title":"Tag 4: UDP und JSON"},{"content":"Hallo zusammen.\nIch habe mein Board wie in der Beschreibung beschrieben mit Strom versorg. In der Anleitung steht, das es nach kurzer Zeit anfängt gelb zu leuchten. Das macht mein Board nicht. Da ich für mein WLAN keine WPS-Funktion habe, habe ich mit unterschiedlichen Geräten versucht auf das NodeESP WLAN zu verbinden. Dieses Netz erscheint und verschwindet wieder und wenn es da ist, ist es unmöglich eine Verbindung aufzubauen. Kann es sein, das mein Board defekt ist?\n1 Antwort larsh – 04.12.2018\nHallo,\nanhand deiner Beschreibung würde ich vermuten, das dein Board defekt ist. Selbst wenn die LED nicht leuchtet, müsste der Access Point stabil erreichbar sein.\nIch würde das Board reklamieren.\nGruß\nLars\n","permalink":"https://iot.fkainka.de/forum/topic/mein-board-funktioniert-ueberhaupt-nicht/","summary":"\u003cp\u003eHallo zusammen.\u003c/p\u003e\n\u003cp\u003eIch habe mein Board wie in der Beschreibung beschrieben mit Strom versorg. In der Anleitung steht, das es nach kurzer Zeit anfängt gelb zu leuchten. Das macht mein Board nicht. Da ich für mein WLAN keine WPS-Funktion habe, habe ich mit unterschiedlichen Geräten versucht auf das NodeESP WLAN zu verbinden. Dieses Netz erscheint und verschwindet wieder und wenn es da ist, ist es unmöglich eine Verbindung aufzubauen. Kann es sein, das mein Board defekt ist?\u003c/p\u003e","title":"Mein Board funktioniert überhaupt nicht!!!!!"},{"content":"Hallo zusammen,\nbei meinem Board hat sich leider am 2. Tag die Micro-USB Buchse zerlegt. Sie war von Anfang an etwas schwergängig, aber am 2. Tag hat sich das komplette Kunststoff-Inlay rausgedrückt und gleich die beiden Datenleitungen mitgenommen.\nHat noch jemand das Problem ? Ich habe das jetzt mal bei Conrad beanstandet.\nGruß\nLars\n","permalink":"https://iot.fkainka.de/forum/topic/micro-usb-buchse/","summary":"\u003cp\u003eHallo zusammen,\u003cbr\u003e\nbei meinem Board hat sich leider am 2. Tag die Micro-USB Buchse zerlegt. Sie war von Anfang an etwas schwergängig, aber am 2. Tag hat sich das komplette Kunststoff-Inlay rausgedrückt und gleich die beiden Datenleitungen mitgenommen.\u003c/p\u003e\n\u003cp\u003eHat noch jemand das Problem ? Ich habe das jetzt mal bei Conrad beanstandet.\u003c/p\u003e\n\u003cp\u003eGruß\u003cbr\u003e\nLars\u003c/p\u003e","title":"Micro-USB Buchse"},{"content":"Hinter dem heutigen Türchen befindet sich ein weiteres Steckboard. Es lässt sich mit dem gestrigen Steckboard zusammenstecken. Das NodeESP-Board kann dann auf beiden Steckboards gleichzeitig platziert werden. Allerdings hat sich herausgestellt, dass diese Konstellation nicht bei jedem funktioniert. Die einfachste Lösung ist, die Seitenteile der Steckboards abzubrechen. Dazu habe ich die Boards ineinander gesteckt und einfach solange gebogen, bis ein Seitenteil abgebrochen ist. Mit dem anderen Board bin ich genauso verfahren. Mit einer Zange funktioniert das aber genauso gut. Ohne Seitenteile lassen sich die Steckboards näher beieinander platzieren, und es gibt keine Probleme mit dem Raster. Das NodeESPBoard stecken Sie dann einfach auf beide Boards, wie auf dem Bild zu sehen. So bleibt genügend Platz für weitere Bauteile. Im heutigen Projekt werden wir sehen, wie Sie vom PC aus eine Verbindung zum Board aufbauen können, und zwar ohne den Webbrowser zu verwenden.\nDer NodeESP auf zwei Steckboards Wählen Sie auf der Konfigurationsseite das Programm des heutigen Tages aus. Das Board startet daraufhin neu. Sie sind mit den Einstellungen allerdings noch nicht ganz durch. Auf der Konfigurationsseite gibt es einen weiteren Bereich, UPD Settings. Dort finden Sie den Punkt IP (send). Unter Umständen ist diese IP bereits richtig, aber wahrscheinlich müssen Sie hier Ihre Broadcast-Adresse manuell eingeben. In den meisten Fällen brauchen Sie einfach Ihre lokale IP, die oben im Bereich Board Wifi Status steht, in das Feld zu kopieren und die letzte Zahl nach dem Punkt durch 255 zu ersetzen. Es gibt aber auch einige Heimnetze, die eine andere Struktur verwenden. Wenn es kompliziert wird, können Sie ein Onlinetool wie\nhttps://remotemonitoringsystems.ca/broadcast.php\neinsetzen oder im Kommentarbereich zum heutigen Programm Hilfe suchen. Nach dem Bestätigen mit Submit startet das Board wie gewohnt neu und beginnt bereits, Nachrichten zu senden. Doch nun benötigen wir noch ein Programm auf dem PC, mit dem wir die Nachrichten empfangen können. Dafür empfiehlt sich das Tool Packet Sender, das für alle gängigen Betriebssysteme von der Seite\nhttps://packetsender.com/download\nheruntergeladen werden kann. Je nach Vorliebe verwenden Sie die Version zum Installieren oder die Portable-Version, die Sie direkt starten können. Nach dem Start fragt Windows eventuell nach den Firewall-Einstellungen. Hier müssen Sie Heimnetz und Zugriff zulassen auswählen.\nUnten im Packet-Sender-Programm sollte nun UDP gefolgt von der Zahl 55056 zu sehen sein. Wenn diese Zahl nicht 55056 ist, müssen Sie sie unter File/Settings im Register Network bei UDP Server Port eingeben, denn derselbe Port ist auch auf der Konfigurationsseite unseres Boards eingestellt.\nDas Packet-Sender-Programm mit geöffneten Einstellungen Und tatsächlich, nach kurzer Zeit erscheint im unteren Fenster eine Nachricht, die sich alle fünf Sekunden wiederholt. Sie haben also bereits erfolgreich eine Nachricht von Ihrem Board empfangen.\n","permalink":"https://iot.fkainka.de/day3-2018/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein weiteres Steckboard. Es lässt sich mit dem gestrigen Steckboard zusammenstecken. Das NodeESP-Board kann dann auf beiden Steckboards gleichzeitig platziert werden. Allerdings hat sich herausgestellt, dass diese Konstellation nicht bei jedem funktioniert. Die einfachste Lösung ist, die Seitenteile der Steckboards abzubrechen. Dazu habe ich die Boards ineinander gesteckt und einfach solange gebogen, bis ein Seitenteil abgebrochen ist. Mit dem anderen Board bin ich genauso verfahren. Mit einer Zange funktioniert das aber genauso gut. Ohne Seitenteile lassen sich die Steckboards näher beieinander platzieren, und es gibt keine Probleme mit dem Raster. Das NodeESPBoard stecken Sie dann einfach auf beide Boards, wie auf dem Bild zu sehen. So bleibt genügend Platz für weitere Bauteile. Im heutigen Projekt werden wir sehen, wie Sie vom PC aus eine Verbindung zum Board aufbauen können, und zwar ohne den Webbrowser zu verwenden.\u003c/p\u003e","title":"Tag 3: UDP und Packet Sender"},{"content":"Moin moin,\nda bei mir die WLAN Konfiguration mittels WPS scheinbar nicht funktioniert, wollte ich das Board manuell ins WLAN integrieren.\nLeider gibt es bei meinem Board keinen Konfigurationspunkt \u0026ldquo;WiFi Station Settings\u0026rdquo;.\nBei mir wird nur \u0026ldquo;WiFi Status\u0026rdquo;, \u0026ldquo;Application Settings\u0026rdquo; und direkt danach \u0026ldquo;General Settings\u0026rdquo; angezeigt.\nGibt es da nen Trick?\nGruß\nEddie\n2 Antworten StephanH – 02.12.2018\nHi,\ndann probier es mal mit einem anderen Browser.\nBei mir sieht die Oberfläche unter Opera ganz anders aus als mit Firefox.\n\u0026hellip; war nur so eine Idee.\nMfG, StephanH\nEddie – 02.12.2018\nScheint jetzt zu funktionieren. Gleicher Browser, gleiches Tablet, nur ein paar Resets später.\nGruß\nEddie\n","permalink":"https://iot.fkainka.de/forum/topic/konfiguration-wifi-station-settings-fehlt/","summary":"\u003cp\u003eMoin moin,\u003c/p\u003e\n\u003cp\u003eda bei mir die WLAN Konfiguration mittels WPS scheinbar nicht funktioniert, wollte ich das Board manuell ins WLAN integrieren.\u003cbr\u003e\nLeider gibt es bei meinem Board keinen Konfigurationspunkt \u0026ldquo;WiFi Station Settings\u0026rdquo;.\u003cbr\u003e\nBei mir wird nur \u0026ldquo;WiFi Status\u0026rdquo;, \u0026ldquo;Application Settings\u0026rdquo; und direkt danach \u0026ldquo;General Settings\u0026rdquo; angezeigt.\u003cbr\u003e\nGibt es da nen Trick?\u003c/p\u003e\n\u003cp\u003eGruß\u003cbr\u003e\nEddie\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStephanH\u003c/strong\u003e – 02.12.2018\u003c/p\u003e\n\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003edann probier es mal mit einem anderen Browser.\u003cbr\u003e\nBei mir sieht die Oberfläche unter Opera ganz anders aus als mit Firefox.\u003cbr\u003e\n\u0026hellip; war nur so eine Idee.\u003c/p\u003e","title":"Konfiguration \"WiFi Station Settings\" fehlt"},{"content":"Hallo,\nvor etwa 3 Monaten habe ich mir ein neues DSL-Modem gekauft - ein Speedport Smart 3 von der Telekom.\nNormalerweise ist die Internetverbindung damit stabil.\nAber immer, wenn ich das NodeESP per WLAN verbinde, dann brechen sämtliche Verbindungen ab und das Modem startet komplett neu.\nSo ist die Internet- und WLAN - Verbindung während des Updates mehrmals zusammengebrochen.\nIch komme gar nicht dazu, die Application Page aufzurufen, ohne das das Modem wieder neu startet und alle Verbindungen trennt.\nHat jemand das gleiche Problem und eventuell einen Lösungsvorschlag?\nHier noch ein kleiner Auszug aus der Log-Datei des Speedport (von unten nach oben zu lesen):\n00.00.0000 00:00:00 (R007) DSL ist verfügbar (DSL-Synchronisierung besteht). DSL-Upstream: \u0026lt;1180\u0026gt;, DSL-Downstream: \u0026lt;14573\u0026gt;.\n00.00.0000 00:00:00 (R008) DSL-Synchronisation beginnt (Training).\n00.00.0000 00:00:00 (W006) WLAN für das \u0026lt;5.0\u0026gt; Ghz Frequenzband wurde auf dem Speedport aktiviert\n00.00.0000 00:00:00 (W006) WLAN für das \u0026lt;2.4\u0026gt; Ghz Frequenzband wurde auf dem Speedport aktiviert\n00.00.0000 00:00:00 (B101) Das Gerät ist neu eingeschaltet worden.\n00.00.0000 00:00:00 (T000) Die aktuelle Systemzeit ist nicht verfügbar\nMfG, StephanH\n","permalink":"https://iot.fkainka.de/forum/topic/dsl-modem-startet-staendig-neu/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003evor etwa 3 Monaten habe ich mir ein neues DSL-Modem gekauft - ein Speedport Smart 3 von der Telekom.\u003cbr\u003e\nNormalerweise ist die Internetverbindung damit stabil.\u003cbr\u003e\nAber immer, wenn ich das NodeESP per WLAN verbinde, dann brechen sämtliche Verbindungen ab und das Modem startet komplett neu.\u003cbr\u003e\nSo ist die Internet- und WLAN - Verbindung während des Updates mehrmals zusammengebrochen.\u003cbr\u003e\nIch komme gar nicht dazu, die Application Page aufzurufen, ohne das das Modem wieder neu startet und alle Verbindungen trennt.\u003cbr\u003e\nHat jemand das gleiche Problem und eventuell einen Lösungsvorschlag?\u003c/p\u003e","title":"DSL Modem startet ständig neu"},{"content":"Hinter dem Türchen des zweiten Tages finden Sie ein Steckboard für die kommenden Versuchsaufbauten. Ich empfehle aber, Ihren NodeESP noch nicht auf das Steckboard zu stecken. Stattdessen schauen wir uns heute an, wie Sie die vorinstallierten Programme auf dem Board starten können, und bringen das Board außerdem auf den neuesten Stand.\nVerbinden Sie Ihr Board zunächst wieder mit einer Stromquelle. Die WLAN-Daten, die Sie gestern eingegeben haben, sind weiterhin gespeichert, und somit sollte sich das Board automatisch mit Ihrem WLAN verbinden. Rufen Sie dann die Boardseite über die IP oder den mDNS-Namen (http://nodeesp. local/) auf. Als Erstes soll nach möglichen Software-Updates gesucht werden. Dazu öffnen Sie die Konfigurationsseite, klicken ganz unten auf den Punkt Advanced Settings und dort auf Check for Firmware Updates.\nDas Board ist auf dem neuesten Stand Wenn ein neues Update gefunden wurde, bekommen Sie auf der Konfigurationswebseite eine Meldung, die Sie bestätigen müssen. Danach können Sie sich erst mal einen Kaffee holen, denn der Updatevorgang kann eine ganze Weile dauern (bis zu 20 Minuten). Sobald das Board wieder grün leuchtet, können Sie weitermachen. Überprüfen Sie erneut, ob es Updates gibt. Im Normalfall meldet das Board nun, dass alles auf dem neuesten Stand ist. Sollte aber etwas grundsätzlich falsch gelaufen sein, finden Sie auf der Projektwebseite eine Anleitung dazu, wie Sie es reparieren können.\nDoch nun zu den vorinstallierten Programmen: Auf der Konfigurationsseite sehen Sie den Punkt Appli****cation Settings. Dort finden Sie alle Programme und eine Infobox, die Ihnen sagt, welches gerade aktiv ist. Wählen Sie zunächst in der oberen Box IoT Adventscalendar 2018 aus und schließlich in der unteren das Programm des heutigen Tages (beginnt mit IoT Calendar 2018 – Day 2). Bestätigen Sie anschließend mit Submit. Das Board startet jetzt mit dem ausgewählten Programm neu.\nDas Color-Picker-Element Nach Neustart und Neuverbinden können Sie nun zur Hauptseite des Boards wechseln. Dort finden Sie einen weiteren Link mit der Bezeichnung Applikation Page. Wenn Sie diesem Link folgen, erreichen Sie eine Webseite mit einem sogenannten Color-Picker-Element, mit dem Sie Farben auswählen können. Die von Ihnen ausgewählte Farbe wird an das Board übertragen und von der OnBoard-LED dargestellt. Sie haben also eine kleine, praktische, bunte Lampe – und das ganz ohne dass Sie etwas zusammenstecken mussten.\n","permalink":"https://iot.fkainka.de/day2-2018/","summary":"\u003cp\u003eHinter dem Türchen des zweiten Tages finden Sie ein Steckboard für die kommenden Versuchsaufbauten. Ich empfehle aber, Ihren NodeESP noch nicht auf das Steckboard zu stecken. Stattdessen schauen wir uns heute an, wie Sie die vorinstallierten Programme auf dem Board starten können, und bringen das Board außerdem auf den neuesten Stand.\u003c/p\u003e\n\u003cp\u003eVerbinden Sie Ihr Board zunächst wieder mit einer Stromquelle. Die WLAN-Daten, die Sie gestern eingegeben haben, sind weiterhin gespeichert, und somit sollte sich das Board automatisch mit Ihrem WLAN verbinden. Rufen Sie dann die Boardseite über die IP oder den mDNS-Namen (\u003cstrong\u003e\u003ca href=\"http://nodeesp.local/\"\u003ehttp://nodeesp.\u003c/a\u003e \u003ca href=\"http://nodeesp.local/\"\u003elocal/\u003c/a\u003e)\u003c/strong\u003e auf. Als Erstes soll nach möglichen Software-Updates gesucht werden. Dazu öffnen Sie die Konfigurationsseite, klicken ganz unten auf den Punkt \u003cstrong\u003eAdvanced Settings\u003c/strong\u003e und dort auf \u003cstrong\u003eCheck for Firmware Updates.\u003c/strong\u003e\u003c/p\u003e","title":"Tag 2: OnBoard-LED und Update"},{"content":"Es ist der erste Tag des Adventskalenderprojekts 2018 und somit Zeit, das erste Türchen zu öffnen. Hinter dem Türchen finden Sie das Mikrocontrollerboard dieses Kalenders. Heute soll es vor allem darum gehen, eine Verbindung zum Heimnetzwerk herzustellen und das Board etwas besser kennenzulernen.\nDas NodeESP-Board mit markierter WPS-Taste Der erste Schritt ist, das Board mit Strom zu versorgen. Sie können das Board einfach per MicroUSB-Kabel mit dem PC oder einem gängigen Smartphone-Ladegerät verbinden. Sie brauchen mindestens 300 mA, um das Board zu starten, ältere Laptops und USB-Hubs ohne externe Stromversorgung könnten problematisch sein. Die RGB-LED auf dem Board beginnt nach kurzer Zeit, gelb zu leuchten. Damit ist die Initialisierung abgeschlossen. Sie müssen nur noch Ihre WLAN-Daten eingeben. Dazu gibt es zwei Möglichkeiten:\nMöglichkeit 1: WPS Vielleicht kennen Sie die WPS-Funktion bereits von anderen Geräten. Durch Drücken eines Buttons an Ihrem Router und an dem neu zu verbindenden Gerät tauschen beide die WLAN-Daten selbstständig aus. Auch das NodeESP-Board hat diese Funktion. Drücken Sie den Boot-Button (der Button nahe am Batterieanschluss, im Bild markiert) für ein paar Sekunden, und die LED blinkt gelb. Drücken Sie dann die WPS-Taste auf Ihrem Router. Nach einer kurzen Wartezeit startet der NodeESP neu. War der Verbindungsaufbau erfolgreich, leuchtet die LED nach kurzem Blinken dauerhaft grün. Ist das nicht der Fall, können Sie den Vorgang wiederholen oder die zweite Möglichkeit ausprobieren.\nMöglichkeit 2: Konfiguration über die Webseite Die zweite Möglichkeit, eine Verbindung mit Ihrem Heimnetz aufzubauen, besteht darin, die vorprogrammierte Konfigurationswebseite zu benutzen. Dazu müssen Sie sich mit dem Hotspot des Boards verbinden. Es erzeugt nämlich in Ihrer Umgebung ein offenes WLAN-Netzwerk mit dem Namen NodeESP. Verbinden Sie sich nun mit einem PC oder Smartphone mit diesem Hotspot. Anschließend rufen Sie einen Browser auf und tippen die Adresse des Boards im Access-Point-Modus http://192.168.4.1 ein. Es baut sich nun die im Board integrierte Webseite auf.\nAuf dem kleinen Board läuft ein kompletter Webserver, und es gibt auch ein paar Seiten, die Sie besuchen können. Unter anderem finden Sie dort die Konfigurationsseite Board Configuration. Hier erhalten Sie unter anderem die Möglichkeit, Ihre WLAN-Daten einzugeben. Klicken Sie auf den Punkt WIFI Station Settings. Das Board scannt nach WLAN-Netzwerken in Reichweite. Nach kurzer Wartezeit können Sie Ihr Netzwerk in der Liste auswählen und in das untere Textfeld das Passwort eingeben.\nDie Konfigurationsseite des Boards Die Verbindung zum Heimnetzwerk steht jetzt also. Nun können Sie die Boardwebseite ebenfalls über das Heimnetzwerk aufrufen. Die IP des Boards erfahren Sie auch über die Konfigurationsseite des Boards. Eventuell müssen Sie sich dazu erneut mit dem NodeESP-Netzwerk verbinden. Im Bereich Board WiFi Status finden Sie die IP-Adresse, die Ihr Board von Ihrem Router zugewiesen bekommen hat. Verbinden Sie sich nun wieder mit Ihrem Heimnetzwerk und rufen Sie diese IP im Browser auf. Im abgebildeten Beispiel ist das http://192.168.178.114/.\nDie Konfigurationsseite des Boards Ein etwas praktischerer Weg führt über den Bonjour-Service von Apple. Dazu müssen Sie ein kleines Tool installieren, das Sie von der Webseite\nhttps://support.apple.com/de-de/bonjour\nherunterladen können.\nHinweis: Diese Schritte gelten nur für Windows-Anwender. Apple und Linux-Nutzer haben den Dienst bereits vorinstalliert. Es funktioniert nicht mit Android-Smartphones.\nNach der Installation tippen Sie im Browser einfach http://nodeesp.local/ ein, um zu der Webseite des Boards zu gelangen. Sich die IP-Adresse zu merken ist dann überflüssig. Der dahinterstehende Service nennt sich übrigens mDNS (multicast Domain Name System) und funktioniert, weil das Board ständig seine IP und den Domainnamen an das Netzwerk sendet. Der mDNS-Name kann übrigens auch auf der Konfigurationsseite angepasst werden. Damit wäre eine Verbindung zum Heimnetzwerk hergestellt. Sollten Sie auf Probleme gestoßen sein können Sie unter diesem Artikel im Kommentarbereich nach Hilfe suchen.\n","permalink":"https://iot.fkainka.de/day1-2018/","summary":"\u003cp\u003eEs ist der erste Tag des Adventskalenderprojekts 2018 und somit Zeit, das erste Türchen zu öffnen. Hinter dem Türchen finden Sie das Mikrocontrollerboard dieses Kalenders. Heute soll es vor allem darum gehen, eine Verbindung zum Heimnetzwerk herzustellen und das Board etwas besser kennenzulernen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2018/11/T1_NodeES_WPS.jpg\"\u003e\u003cimg class=\"size-large wp-image-2432\" src=\"/images/2018/11/T1_NodeES_WPS.jpg\" alt=\"Das NodeESP-Board mit markierter WPS-Taste.\" width=\"616\" height=\"251\" data-id=\"2432\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDas NodeESP-Board mit markierter WPS-Taste\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDer erste Schritt ist, das Board mit Strom zu versorgen. Sie können das Board einfach per MicroUSB-Kabel mit dem PC oder einem gängigen Smartphone-Ladegerät verbinden. Sie brauchen mindestens 300 mA, um das Board zu starten, ältere Laptops und USB-Hubs ohne externe Stromversorgung könnten problematisch sein. Die RGB-LED auf dem Board beginnt nach kurzer Zeit, gelb zu leuchten. Damit ist die Initialisierung abgeschlossen. Sie müssen nur noch Ihre WLAN-Daten eingeben. Dazu gibt es zwei Möglichkeiten:\u003c/p\u003e","title":"Tag 1: Das NodeESP-Board"},{"content":"Auf dieser Seite finden Sie alle Befehle der vorprogrammierten Firmware aufgelistet. Viele Befehle funktionieren nur in dem entsprechenden Unterprogramm. Befehle zu den Board Einstellungen lassen sich meistens nur über UDP oder die Webseite nutzen.\nButtons Sendet automatisch eine Nachricht mit allen Zuständen bei Änderung eines Button-Zustands. Sendet Button State beim Starten Buttons haben Pullup aktiviert Buttons werden gegen Masse geschaltet Buttons sind dann HIGH, wenn nicht gedrückt und LOW wenn gedrückt Default Pins im Beispiel: Pin 16 und Pin 18 Pin_value hat keine Bedeutung Befehl Beschreibung MQTT Topic Beispiel Anfrage (JSON) get_button_config Gibt verwendete Pins und Namen zurück | NodeESP/[PID]/button/config/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_button_config\u0026rdquo;} || get_button_state | Gibt den aktuellen Zustand der Buttons zurück | NodeESP/[PID]/button/state/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_button_state\u0026rdquo;} |\nTouch-Buttons Touch-Threshold-Wert gibt an, ab welchem pin_value-Wert ein Touch Ereignis ausgelöst wird (Wert muss unterschritten werden) -\u0026gt; pin_state wird TRUE Touch-Threshold-Wert kann auf der Config-Seite eingestellt werden Sendet automatisch eine Nachricht mit allen Touch-Button-States wenn sich pin_state ändert Default Pins im Beispiel: Pin 27 und Pin 33 Befehl Beschreibung MQTT Topic Beispiel Anfrage (JSON) get_touch_config Gibt verwendete Pins und Namen zurück | NodeESP/[PID]/touch/config/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_touch_config\u0026rdquo;} || get_touch_state | Gibt den aktuellen Zustand der Touch-Buttons zurück | NodeESP/[PID]/touch/state/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_touch_state\u0026rdquo;} |\nLEDS LEDs, oder allgemein digitale Pins, können über den Befehl set_led_state gesteuert werden Die Pins werden über den Pin-Namen angesprochen (pin_name) Es können mehrere Pins gleichzeitig geschaltet werden Zulässige Werte zum Schalten einer LED: \u0026ldquo;on\u0026rdquo;/\u0026ldquo;off\u0026rdquo; oder \u0026ldquo;ON\u0026rdquo;/\u0026ldquo;OFF\u0026rdquo; (String) true/false (Boolean) Default Pins im Beispiel: Pin 22 und Pin 15 Befehl Beschreibung MQTT Topic Beispiel Anfrage (JSON) get_led_config Gibt verwendete Pins und Namen zurück NodeESP/[PID]/led/config/get {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_led_config\u0026rdquo;} get_led_state Gibt den aktuellen Zustand der LEDs zurück NodeESP/[PID]/led/state/get {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_led_state\u0026rdquo;} set_led_state Setzt Zustand der LEDs | NodeESP/[PID]/led/state/set | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;set_led_state\u0026rdquo;, \u0026ldquo;LED1\u0026rdquo;:\u0026ldquo;on\u0026rdquo;} || {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;set_led_state\u0026rdquo;, \u0026ldquo;LED1\u0026rdquo;:\u0026ldquo;on\u0026rdquo;, \u0026ldquo;LED2\u0026rdquo;:true} |\nPWM Die Pins werden über den Pin-Namen angesprochen (pin_name) Es können mehrere Pins gleichzeitig geschaltet werden Als zulässiger PWM-Wert wird einfach eine Zahl von 0-255 (8-Bit) angegeben (wird gespeichert in pin_value) Die Pins können aber auch ganz aus/an geschaltete werden (Befehle wie bei LED) Der Zustand des PWM bleibt auch beim an/ausschalten erhalten (pin_state beeinflusst nicht pin_value) Default Pins im Beispiel: Pin 22 und Pin 15 (Genau wie LEDs) Die Timerfrequenz beträgt 5000 Hz und die Auflösung beträgt in den Meisten fällen 8-bit Befehl Beschreibung MQTT Topic Beispiel Anfrage (JSON) get_pwm_config Gibt verwendete Pins und Namen zurück | NodeESP/[PID]/pwm/config/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_pwm_config\u0026rdquo;} || get_pwm_state | Gibt den aktuellen Zustand der Pins zurück | NodeESP/[PID]/pwm/state/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_pwm_state\u0026rdquo;} |\n| set_pwm_state |\nSetzt PWM-Wert | NodeESP/[PID]/pwm/state/set | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;set_pwm_state\u0026rdquo;, \u0026ldquo;LED1\u0026rdquo;:255} || {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;set_pwm state\u0026rdquo;, \u0026ldquo;LED1\u0026rdquo;:”on\u0026quot;, \u0026ldquo;LED2\u0026rdquo;:true} |\nADC Befehl Beschreibung MQTT Topic Beispiel Anfrage (JSON) get_adc_config Gibt verwendete Pins und Namen zurück NodeESP/[PID]/adc/config/get {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_adc_config\u0026rdquo;} get_adc_state Gibt den aktuellen Zustand der Pins zurück NodeESP/[PID]/adc/state/get {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_adc_state \u0026ldquo;} get_hum_state Setzt PWM-Wert NodeESP/[PID]/hum/state/get {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_hum_state \u0026ldquo;} |\nSonstige Befehle (Dokumentation folgt) {\u0026ldquo;test\u0026rdquo;,test},\n{\u0026ldquo;testtopic\u0026rdquo;,testtopic},\n{\u0026ldquo;light_on\u0026rdquo;,light_on},\n{\u0026ldquo;light_off\u0026rdquo;,light_off},\n{\u0026ldquo;light_pwm\u0026rdquo;,light_pwm},\n{\u0026ldquo;get_button_change\u0026rdquo;,get_button_change},\n{\u0026ldquo;set_rgb_hex\u0026rdquo;,set_rgb_hex},\n{\u0026ldquo;get_rgb_hex\u0026rdquo;,get_rgb_hex},\n{\u0026ldquo;set_rgb_rgb\u0026rdquo;,set_rgb_rgb},\n{\u0026ldquo;get_rgb_rgb\u0026rdquo;,get_rgb_rgb},\n{\u0026ldquo;set_rgb_hsv\u0026rdquo;,set_rgb_hsv},\n{\u0026ldquo;get_rgb_hsv\u0026rdquo;,get_rgb_hsv},\n{\u0026ldquo;set_rgb_fade\u0026rdquo;,set_rgb_fade},\n{\u0026ldquo;get_rgb_config\u0026rdquo;,get_rgb_config},\n{\u0026ldquo;set_pixel_hex\u0026rdquo;,set_pixel_hex},\n{\u0026ldquo;get_pixel_hex\u0026rdquo;,get_pixel_hex},\n{\u0026ldquo;set_pixel_rgb\u0026rdquo;,set_pixel_rgb},\n{\u0026ldquo;get_pixel_rgb\u0026rdquo;,get_pixel_rgb},\n{\u0026ldquo;set_pixel_hsv\u0026rdquo;,set_pixel_hsv},\n{\u0026ldquo;get_pixel_hsv\u0026rdquo;,get_pixel_hsv},\n{\u0026ldquo;set_pixel_fade\u0026rdquo;,set_pixel_fade},\n{\u0026ldquo;set_pixel_bright\u0026rdquo;,set_pixel_bright},\n{\u0026ldquo;get_pixel_set\u0026rdquo;,get_pixel_set},\n{\u0026ldquo;set_pixel_set\u0026rdquo;,set_pixel_set},\n{\u0026ldquo;set_pixel_array\u0026rdquo;,set_pixel_array},\n{\u0026ldquo;set_array_fade\u0026rdquo;,set_pixel_fade},\n{\u0026ldquo;ir_send\u0026rdquo;,ir_send},\n{\u0026ldquo;play_speaker_notes\u0026rdquo;,play_speaker_notes},\n{\u0026ldquo;play_speaker_wav\u0026rdquo;,play_speaker_wav},\n{\u0026ldquo;set_alarm\u0026rdquo;,set_alarm},\n","permalink":"https://iot.fkainka.de/nodeesp-command-reference/","summary":"\u003cp\u003eAuf dieser Seite finden Sie alle Befehle der vorprogrammierten Firmware aufgelistet. Viele Befehle funktionieren nur in dem entsprechenden Unterprogramm. Befehle zu den Board Einstellungen lassen sich meistens nur über UDP oder die Webseite nutzen.\u003c/p\u003e\n\u003ch1 id=\"buttons\"\u003eButtons\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eSendet automatisch eine Nachricht mit allen Zuständen bei Änderung eines Button-Zustands.\u003c/li\u003e\n\u003cli\u003eSendet Button State beim Starten\u003c/li\u003e\n\u003cli\u003eButtons haben Pullup aktiviert\n\u003cul\u003e\n\u003cli\u003eButtons werden gegen Masse geschaltet\u003c/li\u003e\n\u003cli\u003eButtons sind dann HIGH, wenn nicht gedrückt und LOW wenn gedrückt\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDefault Pins im Beispiel: Pin 16 und Pin 18\u003c/li\u003e\n\u003cli\u003ePin_value hat keine Bedeutung\u003c/li\u003e\n\u003c/ul\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eBefehl\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eBeschreibung\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eMQTT Topic\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eBeispiel Anfrage (JSON)\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eget_button_config\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eGibt verwendete Pins und Namen zurück | NodeESP/[PID]/button/config/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_button_config\u0026rdquo;} || get_button_state | Gibt den aktuellen Zustand der Buttons zurück | NodeESP/[PID]/button/state/get | {\u0026ldquo;cmd\u0026rdquo;:\u0026ldquo;get_button_state\u0026rdquo;} |\u003c/p\u003e","title":"NodeESP Kommandoreferenz"},{"content":"Hallo,\nleider leuchtet bei meinem NodeESP Board die LED weder beim Booten noch sonst irgendwie\u0026hellip;\nDer Webserver startet und das Board lässt sich konfigurieren, aber keine LED :-(\nIrgendwelche Tipps?\nlg\nRalph\n2 Antworten fk – 24.11.2018\nHallo Ralph,\nes gibt auf der Config-Seite eine Option die LED auszuschalten. Falls du dies nicht zufällig aktiviert hast, könnte tatsächlich die LED kaputt sein. In dem Fall solltest du das Board am besten umtauschen.\nViele Grüße,\nFabian\nulfila – 27.11.2018\nHallo Fabian,\nConrad hat den Adventskalender ausgetauscht - es war tatsächlich die LED defekt.\nlg\nRalph\n","permalink":"https://iot.fkainka.de/forum/topic/onboard-led-auf-nodeesp-leuchtet-nicht/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nleider leuchtet bei meinem NodeESP Board die LED weder beim Booten noch sonst irgendwie\u0026hellip;\u003cbr\u003e\nDer Webserver startet und das Board lässt sich konfigurieren, aber keine LED :-(\u003c/p\u003e\n\u003cp\u003eIrgendwelche Tipps?\u003c/p\u003e\n\u003cp\u003elg\u003cbr\u003e\nRalph\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 24.11.2018\u003c/p\u003e\n\u003cp\u003eHallo Ralph,\u003c/p\u003e\n\u003cp\u003ees gibt auf der Config-Seite eine Option die LED auszuschalten. Falls du dies nicht zufällig aktiviert hast, könnte tatsächlich die LED kaputt sein. In dem Fall solltest du das Board am besten umtauschen.\u003c/p\u003e","title":"OnBoard LED auf NodeESP leuchtet nicht"},{"content":"Der NodeESP ist ein Experimentier- und Entwicklungsboard für den Bereich IoT und Hausautomatisierung. Die vorprogrammierte Firmware mit integrierter Webseite erlaubt es Ihnen, einfache Konfigurationen vorzunehmen und Programme und Anwendungen kinderleicht in einem Menü auszuwählen. So können Sie durch wenige Mausklicks das Board als smarten Schalter, buntes Licht oder Raumklimasensor konfigurieren und mit anderen Geräten in Ihrem Heimnetz verbinden. Für eigene individuelle Projekte lässt sich das Board außerdem über die Arduino IDE programmieren.\nSpezifikationen:\nESP32 (32-Bit-Mikrocontroller mit zwei Prozessorkernen) 4 MB Flash Speicher für Programme und Daten Schnelles WLAN (bis zu 150 Mbit/s) Bluetooth / Bluetooth LE (4.2) WPS Funktion zum einfachen Verbinden mit dem Heimnetz CH340G USB-to-Serial Chip Onboard RGB-LED für Statusanzeigen oder direkte Ansteuerung Onboard MicroSD-Kartenslot Steckerbuchse für portable Stromversorgung Steckboard kompatibel Technische Daten NodeESP Mikrocontroller ESP32 (D0WD) CPU Xtensa Dual-Core 32-bit LX6(240 MHz, bis zu 600 DMIPS) SRAM 520 kB Flash Speicher 4 MB WLAN 802.11 b/g/n Bluetooth v4.2 BR/EDR and BLE I/0 Pins 26 frei programmierbare GPIO Pins ADC 16 x ADC Pins (12-bit, SAR ADC) DAC 2 x DAC Pins (8-bit) PWM 16 x PWM Pins (Frei wählbar, bis zu 16-bit) Touch 10 x Touch Pins (Kapazitiv) · Kommunikation 4x SPI, 2x I²C, 3x UART, 2x I²SIR-Remote Controller, CAN-BUS 2.0,Ethernet MAC interface · Sonstiges Hall Effekt Sensor, Temperatur Sensor, Auszug aus dem Schaltplan Es kam oft die Frage auf, ob ich de Schaltplan veröffentlichen könnte. Ich habe den Schaltplan allerdings nicht selbst gezeichnet, weswegen gerade noch ungeklärt ist, ob es mir überhaupt erlaubt ist, den Schaltplan zu veröffentlichen. Als Kompromiss veröffentliche ich hier zunächst einen Teil des Schaltplans. Dieser Auszug zeigt unter anderen die Verschaltung der SD-Karte und der RGB-Led.\nSchaltplan Auszug ","permalink":"https://iot.fkainka.de/nodeesp-technical-specs/","summary":"\u003cp\u003eDer NodeESP ist ein Experimentier- und Entwicklungsboard für den Bereich IoT und Hausautomatisierung. Die vorprogrammierte Firmware mit integrierter Webseite erlaubt es Ihnen, einfache Konfigurationen vorzunehmen und Programme und Anwendungen kinderleicht in einem Menü auszuwählen. So können Sie durch wenige Mausklicks das Board als smarten Schalter, buntes Licht oder Raumklimasensor konfigurieren und mit anderen Geräten in Ihrem Heimnetz verbinden. Für eigene individuelle Projekte lässt sich das Board außerdem über die Arduino IDE programmieren.\u003c/p\u003e","title":"NodeESP Technische Daten"},{"content":"Das NodeESP wird mit einer Firmware ausgeliefert, die bereits einige Beispielprogramme beinhaltet. Diese Firmware lässt sich über die Update Funktion auf der Config-Seite updaten. Die Firmware kann aber auch mit eigenen Programmen überspielt werden.\nDoch egal ob man selbst ein paar eigene Programme auf das Board programmiert hat oder die Update Funktion mal nicht so funktioniert hat wie geplant, irgendwann kommt man eventuell an den Punkt, an dem man die Firmware neu installieren möchte. Diese Anleitung beschreibt die Schritte, die nötig sind, um die aktuelle Firmware manuell auf dem Board zu installieren.\nDie Firmware wird mittels MicroUSB auf den NodeESP übertragen. Damit dies richtig funktionieren kann, müssen Sie zunächst den aktuellen Treiber installieren. Diesen finden Sie auf der Seite https://iot.fkainka.de/driver . Falls Sie das Board selbst programmiert haben, ist dieser Treiber wahrscheinlich bereits installiert. Als nächstes müssen Sie das Board mit einem Micro-USB-Kabel mit Ihrem Rechner verbinden. Beachten Sie, dass Sie ein Kabel benötigen, dass auch Daten übertragen kann. Manche Kabel sind nur zum Laden von Geräten geeignet.\nAls nächstes benötigen Sie das Flash Tool von der EspressIf Webseite. EspressIf ist der Hersteller des verwendeten ESP32-Microcontrollers. Sie finden das Tool auf der Webseite https://www.espressif.com/en/support/download/other-tools . Hier befindet sich weiter unten auf der Webseite bei dem Punkt Flash Download Tools einen Link auf das Flash Download Tool (ESP8266 \u0026amp; ESP32). Laden Sie dieses Tool mit Klick auf das rechte Symbol herunter und entpacken Sie anschließend das Zip-Verzeichnis. In diesem Verzeichnis finden Sie die flash_download_tools EXE-Datei. Starten Sie das Programm durch Doppelklick. Es öffnet sich zunächst ein leeres Terminal und anschließend folgendes Fenster:\nDas Startfenster Klicken Sie in diesem Fenster auf die Option ESP32 Download Tool. Es öffnet sich erneut ein Fenster. Im nächsten Schritt müssen Sie die aktuelle Firmware herunterladen. Sie finden sie unter dem Link:\nhttp://ota.fkainka.de/ESP32_FW.bin\nLaden Sie die bin-Datei herunter und Speichern Sie die Datei unter einem bekannten Ort. Nun müssen Sie im ESP32 Download Tool diese Datei auswählen. Dazu klicken Sie im Reiter SPIDownload rechtes neben dem ersten Eingabefeld auf die drei Punkte und wählen in dem sich öffnenden Fenster die gerade heruntergeladene Datei aus. Aktivieren Sie anschließend im Kästchen links neben dem Feld das Häkchen. Tragen Sie dann rechts neben dem Dateifeld 0 ein.\nWeiter unten wählen Sie unter COM dem Com-Port Ihres NodeESP aus. Sie können den Port ausprobieren oder im Gerätemanager nachschauen. Sollte hier kein COM-Port zu sehen sein überprüfen Sie ob das Board korrekt angeschlossen, der Treiber installiert und das Kabel das korrekt ist.\nMachen Sie anschließend noch folgende Einstellungen (wie auf dem Bild zu sehen):\nCrystalFreq: 40M SPI Speed: 40 MHz SPI Mode: DIO Flash Size: 32Mbit Baud: 115200 Die Einstellungen des Uploads Klicken Sie nun auf Start. Es wird eine Weile dauern bis das Programm die gesamte Firmware auf das Board übertragen hat. Sie können den Fortschritt am unteren Balken verfolgen. Nach dem erfolgreichen Upload sehen Sie die Meldung FINSIH im grünen Fenstern. Sie haben nun das Board erfolgreich mit der aktuellen Firmware geflasht und können das Board nun per Resettaste neu starten. Ihren WLAN-Zugangsdaten sind nun übrigens überschrieben und müssen neu eingegeben werden, genau wie im Auslieferungszustand.\n","permalink":"https://iot.fkainka.de/nodeesp-firmware-reinstallieren/","summary":"\u003cp\u003eDas NodeESP wird mit einer Firmware ausgeliefert, die bereits einige Beispielprogramme beinhaltet. Diese Firmware lässt sich über die Update Funktion auf der Config-Seite updaten. Die Firmware kann aber auch mit eigenen Programmen überspielt werden.\u003c/p\u003e\n\u003cp\u003eDoch egal ob man selbst ein paar eigene Programme auf das Board programmiert hat oder die Update Funktion mal nicht so funktioniert hat wie geplant, irgendwann kommt man eventuell an den Punkt, an dem man die Firmware neu installieren möchte. Diese Anleitung beschreibt die Schritte, die nötig sind, um die aktuelle Firmware manuell auf dem Board zu installieren.\u003c/p\u003e","title":"NodeESP Firmware Reinstallieren"},{"content":"Wie in jedem Jahr finden Sie an dieser Stelle alle Programme (dieses Jahr wohl eher Flows) des IoT Adventskalenders 2018.\nIch verwende dieses Jahr Pastebin um alle Flows an einer Stelle zu speichern und leichter nachträglich bearbeiten zu können. Außerdem hat Wordpress dann keine Chance die Formatierung oder Sonderzeichen zu verändern. Der einfachste Weg zum Kopieren der Flows ist, auf den \u0026ldquo;Download Raw\u0026rdquo; Button zu klicken und die sich öffnende Seite komplett zu kopieren. Wenn Sie dann den Text in Node-Red einfügen (Menü-\u0026gt;Import-\u0026gt;Clipboard) haben Sie automatisch alle Flows in Tabs strukturiert hinzugefügt. Zusätzliche Nodes müssen eventuell noch nachinstalliert werden (z.B. das UI-Node)\nEs gibt derzeit noch einen Bug mit der MQTT-Id, den ich hoffentlich in den nächsten Tagen per Update beheben kann.\nSonstige Bugs oder Fragen können gerne als Kommentar auf dieser Seite gepostet werden.\nViel Spaß beim Basteln!\nExterner Inhalt von pastebin.com\nBeim Laden werden Daten wie Ihre IP-Adresse an pastebin.com übertragen. Datenschutz Inhalt laden direkt öffnen ↗ ","permalink":"https://iot.fkainka.de/tag-0-alle-flows-des-kalenders/","summary":"\u003cp\u003eWie in jedem Jahr finden Sie an dieser Stelle alle Programme (dieses Jahr wohl eher Flows) des IoT Adventskalenders 2018.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2018/11/AllFlows.png\"\u003e\u003cimg loading=\"lazy\" src=\"/images/2018/11/AllFlows.png\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIch verwende dieses Jahr Pastebin um alle Flows an einer Stelle zu speichern und leichter nachträglich bearbeiten zu können. Außerdem hat Wordpress dann keine Chance die Formatierung oder Sonderzeichen zu verändern. Der einfachste Weg zum Kopieren der Flows ist, auf den \u0026ldquo;Download Raw\u0026rdquo; Button zu klicken und die sich öffnende Seite komplett zu kopieren. Wenn Sie dann den Text in Node-Red einfügen (Menü-\u0026gt;Import-\u0026gt;Clipboard) haben Sie automatisch alle Flows in Tabs strukturiert hinzugefügt. Zusätzliche Nodes müssen eventuell noch nachinstalliert werden (z.B. das UI-Node)\u003c/p\u003e","title":"Tag 0: Alle Flows des Kalenders"},{"content":"Der IoT Adventskalender 2018 Tag 24: Tannenbaumbeleuchtung Tag 23: Alarmanlage Tag 22: Klimawächter Tag 21: Piano-Player Tag 20: Pflanzenwächter Das NodeESP Board Firmware Neuigkeiten und Bug Report NodeESP Kommandoreferenz Das NodeESP Board NodeESP Technische Daten NodeESP Firmware Reinstallieren Maker Kit für Smart Home Maker Kit für Smart Home ","permalink":"https://iot.fkainka.de/nodeesp/","summary":"\u003ch3 id=\"der-iot-adventskalender-2018\"\u003eDer IoT Adventskalender 2018\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/day24-2018/\"\u003e\n    \u003cimg src=\"/images/2018/11/T24UI_hu_b0665a49660ff01c.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 24: Tannenbaumbeleuchtung\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day23-2018/\"\u003e\n    \u003cimg src=\"/images/2018/11/Day23_Speaker_Tilt_Steckplatine_hu_440e45f823aba3a6.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 23: Alarmanlage\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day22-2018/\"\u003e\n    \u003cimg src=\"/images/2018/11/T22Flow_hu_19f7cd5e5d5129c0.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 22: Klimawächter\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/tag-21-piano-player/\"\u003e\n    \u003cimg src=\"/images/2018/11/Day21_Speaker_Steckplatine_hu_b74cd3076a3788bd.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 21: Piano-Player\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day20-2018/\"\u003e\n    \u003cimg src=\"/images/2018/11/T20UI_hu_8c470cb26183339f.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 20: Pflanzenwächter\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003ch3 id=\"das-nodeesp-board\"\u003eDas NodeESP Board\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/firmware-neuigkeiten-und-bug-report/\"\u003e\n    \u003cimg src=\"/images/2018/11/technischeDaten-1_hu_41f849b3971c2d7c.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eFirmware Neuigkeiten und Bug Report\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/nodeesp-command-reference/\"\u003e\n    \u003cimg src=\"/images/2018/11/T12_JSON_hu_bf32aba68f61c4a0.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eNodeESP Kommandoreferenz\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/das-nodeesp-board/\"\u003e\n    \u003cimg src=\"/images/2018/10/board1_hu_8dcf12dba4944b87.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDas NodeESP Board\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/nodeesp-technical-specs/\"\u003e\n    \u003cimg src=\"/images/2018/11/technischeDaten-1_hu_41f849b3971c2d7c.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eNodeESP Technische Daten\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/nodeesp-firmware-reinstallieren/\"\u003e\n    \u003cimg src=\"/images/2018/11/Tool2-1_hu_abfed3b9844e78fb.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eNodeESP Firmware Reinstallieren\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003ch3 id=\"maker-kit-für-smart-home\"\u003eMaker Kit für Smart Home\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/maker-kit-fuer-smart-home/\"\u003e\n    \u003cimg src=\"/images/2019/10/smarthome_hu_b58afba295a7d5bd.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eMaker Kit für Smart Home\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e","title":"Die NodeESP Themenseite"},{"content":"Alles rund ums Board Alles über NanoESP \u0026amp; Pretzel Board NanoESP Updaten Die neue NanoESP-Library mit MQTT, HTTP und Blynk-Support Pinout NanoESP \u0026amp; Pretzel Board Fritzing Bauteil - NanoESP \u0026amp; Pretzel Board Die IoT Lernpakete mit dem NanoESP Download Beispielprogramme Die IoT Lernpakete Diskusionen und Hilfe Treiber- NanoESP \u0026amp; Pretzelboard Der IoT Adventskalender 2016 Der Conrad Adventskalender IoT - 2016 Tag 24: Geschenkbox Tag 23: MQTT Climate Tag 22: MQTT Cheerlights Tag 21: Hausautomation Der IoT Adventskalender 2015 Der Conrad Adventskalender Internet of Things Tag 24: Feuermelder für den Weihnachtsbaum Tag 23: Cheerlights Tag 22: TalkBack Tag 21: Twitter Alarmanlage ","permalink":"https://iot.fkainka.de/nanoesp/","summary":"\u003ch3 id=\"alles-rund-ums-board\"\u003eAlles rund ums Board\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/board/\"\u003e\n    \u003cimg src=\"/images/2015/08/Boards2_hu_e9ef7fd5b427e39.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eAlles über NanoESP \u0026amp; Pretzel Board\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/nanoesp-updaten/\"\u003e\n    \u003cimg src=\"/images/2019/08/P0_fw1_hu_358b07446e5ec689.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eNanoESP Updaten\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/library/\"\u003e\n    \u003cimg src=\"/images/2015/09/download-151556_640_hu_c9d59490062b7b8d.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDie neue NanoESP-Library mit MQTT, HTTP und Blynk-Support\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/pinout-pretzel-board-nanoesp/\"\u003e\n    \u003cimg src=\"/images/2016/01/Pinout-Pretzel-Board_hu_c2a45be39575e29f.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003ePinout NanoESP \u0026amp; Pretzel Board\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/das-nanoesp-pretzelboard-fritzing-bauteil/\"\u003e\n    \u003cimg src=\"/images/2015/12/ScreenShot1_hu_33071afd30fe5c94.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eFritzing Bauteil - NanoESP \u0026amp; Pretzel Board\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003ch3 id=\"die-iot-lernpakete-mit-dem-nanoesp\"\u003eDie IoT Lernpakete mit dem NanoESP\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/download-beispielprogramme/\"\u003e\n    \u003cimg src=\"/images/2015/09/download-151556_640_hu_c9d59490062b7b8d.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDownload Beispielprogramme\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/das-lernpaket-iot/\"\u003e\n    \u003cimg src=\"/images/2015/09/LPete_hu_585b245c6064d11.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDie IoT Lernpakete\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/test/\"\u003e\n    \u003cimg src=\"/images/2015/09/forum-27450_640_hu_6775eaaba46cc47e.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDiskusionen und Hilfe\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/driver/\"\u003e\n    \u003cimg src=\"/images/2015/09/Driver1_hu_22b7d9866f4a575f.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTreiber- NanoESP \u0026amp; Pretzelboard\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003ch3 id=\"der-iot-adventskalender-2016\"\u003eDer IoT Adventskalender 2016\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/der-conrad-adventskalender-iot-2016/\"\u003e\n    \u003cimg src=\"/images/2016/10/bg-2016_hu_e0b06ff9897e68d8.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDer Conrad Adventskalender IoT - 2016\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day-24-gift-box/\"\u003e\n    \u003cimg src=\"/images/2016/09/Day24_Present2_Steckplatine_hu_196973a30f64d911.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 24: Geschenkbox\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day23-2016/\"\u003e\n    \u003cimg src=\"/images/2016/09/Day23_Climate_Steckplatine_hu_d3635ab90bad1a94.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 23: MQTT Climate\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day22-2016/\"\u003e\n    \u003cimg src=\"/images/2016/09/Day22_Steckplatine_hu_259b78390065678d.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 22: MQTT Cheerlights\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day21-2016/\"\u003e\n    \u003cimg src=\"/images/2016/09/Day21_Roomst_Steckplatine_hu_701a5bece548f00f.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 21: Hausautomation\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003ch3 id=\"der-iot-adventskalender-2015\"\u003eDer IoT Adventskalender 2015\u003c/h3\u003e\n\n\u003cdiv class=\"post-grid\"\u003e\u003ca class=\"post-grid-item\" href=\"/der-conrad-iot-adventskalender/\"\u003e\n    \u003cimg src=\"/images/2015/09/prev-e1443182559386_hu_1d6e25b060b4c271.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eDer Conrad Adventskalender Internet of Things\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day-24/\"\u003e\n    \u003cimg src=\"/images/2015/09/Day24-1_hu_1e23b74e899576de.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 24: Feuermelder für den Weihnachtsbaum\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day-23/\"\u003e\n    \u003cimg src=\"/images/2015/09/Day23-2_hu_d0fd70b45c3007f8.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 23: Cheerlights\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day-22/\"\u003e\n    \u003cimg src=\"/images/2015/09/Day22-1_hu_65cc386f053a314c.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 22: TalkBack\u003c/span\u003e\n\u003c/a\u003e\n\u003ca class=\"post-grid-item\" href=\"/day-21/\"\u003e\n    \u003cimg src=\"/images/2015/09/Day21-1_hu_7e8bb5f6530b0342.webp\" width=\"480\" height=\"300\" alt=\"\" loading=\"lazy\"\u003e\n  \u003cspan class=\"post-grid-title\"\u003eTag 21: Twitter Alarmanlage\u003c/span\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e","title":"Die NanoESP Themenseite"},{"content":"Anmerkungen von Fabian Kainka:\nIm Sommer dieses Jahres erreichte mich eine Mail von Dr. Christian Rempel, mit einer Frage zum NanoESP. Im Rahmen eines Jugend forscht-Projektes sollte ein Pflückroboter realisiert werden. Mehrere NanoESP-Boards wurden dafür vernetzt um untereinander und mit einem Laptop Sensordaten auszutauschen. Ganz nebenbei hat das Projekt auch an anderen Stellen Wellen geschlagen, wie hier auf der TEC-IT Homepage. Außerdem ist aus diesem aufregenden Projekt ein Artikel entstanden, der die Problematik sehr gut beschreibt und eine Lösung bietet, die für viele Nutzer sehr nützlich sein sollte. An dieser Stelle möchte ich deswegen den überaus informativen und gut dokumentierten Artikel (sogar in englischer Version) von Dr. Christian Rempel und Laurin Kettner vorstellen. Viel Spaß beim Lesen.\nDownload: Ernteroboter_Programme WiFi UDP Y-Netzwerk aus drei Pretzelboards und einem Laptop Für unseren Ernteroboter Sensor benötigten wir ein Netzwerk aus einem Server (Pretzelboard S), zwei Arduino Clients (Pretzelboards C1 und C2) und einen Laptop als dritten Client (Packet Sender (s. Fabian Kainkas Weihnachtskalender 2016) oder TWedge von der Firma TEC-IT https://www.tec-it.com/de/download/Default.aspx ), um ein kleines UDP WiFi Netzwerk aufzubauen. Wir bezeichnen das als Y-Konfiguration, wobei das Zentrum des Buchstabens durch S gegeben ist, die beiden schrägen Arme symbolisieren dessen Verbindungen zu C1 und C2 und der senkrechte die Verbindung zum Laptop:\nDer Aufbau Die Clients können prinzipiell nicht direkt miteinander kommunizieren. Dies kann nur über den Server erfolgen. Eine spezielle Messagestruktur für unsere Zwecke ermöglicht das dennoch. Es sind folgende IP Adressen festgelegt:\n192.168.4.1 Server S 192.168.4.2 Client Packet Sender oder TWedge: 192.168.4.3 Client C1 192.168.4.4 Client C2 Packet Sender ist ein Programm, das Fabian Kainka in seinen Weihnachtskalendern verwendet, und es erlaubt Nachrichten zu empfangen und zu senden. TWedge ist ein Programm der Firma TEC-IT, das ebenfalls Senden und empfangen ermöglicht, das aber im Zusammenhang mit einer Excel Tabelle die Visualisierung sehr erleichtert.\nFolgende Ids sind vergeben worden:\nId = 0 Client Packet Sender oder TWedge Id = 1 Client C1 Id = 2 Client C2 Id = 5 Server S Folgende Ports werden genutzt:\n90, 91 Client Packet Sender oder TWedge: 92, 93 Client C1 94, 95 Client C2 Die Sketches haben bei S_ die folgenden Bezeichnungen:\nUDPBidirectional-Server Pretzelboard S UDPBidirectional-Client1 Pretzelboard C1 UDPBidirectional-Client2 Pretzelboard C2 Download: Ernteroboter_Programme Die Sketches lehnen sich an Beispiele an, die von Fabian Kainka in den Weihnachtskalendern 2015 und 2016 gegeben wurden. Der Gebrauch der mit dem Jahr 2016 veröffentlichten Bibliothek erschien uns zu viel von den wirklichen Befehlen zu screenen und wurde im Sinne eines reverse engineering rückgängig gemacht.\nEin großer Nachteil des im Pretzelboard verwendeten ESP8266, zum Beispiel im Vergleich mit Bluetooth Modulen, erscheint uns, dass der Datenverkehr (messages) von den AT Befehlen, die überwiegend der Konfiguration des Moduls dienen, nicht getrennt ist. So werden auch AT Befehle zum Senden benutzt und bei empfangenen Meldungen muss man sich erst vergewissern, ob es sich um eine von außen empfangene Nachricht (message) handelt oder ob das ESP Modul selbst etwas zu sagen hatte (answer).\nMeldungen des ESP8266 können entweder messages oder answers sein!\nIn den originalen Vorlagen werden alle konfigurierenden AT Befehle im Setup des Sketches gegeben, unter Verwendung des Unterprogramms sendCom, in das sie in etwas verklausulierter Form eingehen und dieses auch noch die Antwort des ESP Moduls auswertet, ohne diese vollständig auszugeben.\nBem.: Im Unterprogram SendCom() wird der Ausdruck esp8266.findUntil(\u0026ldquo;OK\u0026rdquo;, \u0026ldquo;ERROR\u0026rdquo;) verwendet, der true ist, wenn vor \u0026ldquo;ERROR\u0026rdquo; \u0026ldquo;OK“ gefunden wurde, und false, wenn zuerst \u0026ldquo;ERROR\u0026rdquo; gefunden wurde oder wenn beide Strings gar nicht gefunden wurden.\nFür die Clients haben wir aus den Beispielen der Bibliothek die Dokumente\nNanoESP-1.1\\examples\\BASICS\\WiFi-Connect und …\\UDPals Vorlage verwendet.\nFür den Server diente hingegen Weihnachtskalender Tag 4 und die in diesem zur Verfügung gestellte Bibliothek als Grundlage, deren Verwendung im Sinne besseren Verständnisses wir aber rückgängig gemacht haben.\nDie Packet Sender Oberfläche sieht wie folgt aus:\nDas Packet Sender Programm Unter „File“ findet man die Settings, in die Folgendes einzutragen ist:\nPacket Sender Settings (1) Packet Sender Settings (2) Bei TWedge sind folgende Geräte zu definieren:\nTwedge Geräte Eigentlich handelt es sich bei TWedge um einen einzigen Client, aber das Senden und Empfangen ist getrennt und das Programm lauscht als Gerät 2 (UDP Client) und sendet als Gerät 3 (UDP Server). Empfangene Daten können in eine Exceltabelle eingetragen werden und Zellinhalte aus dieser können gesendet werden.\nDas Senden und Empfangen mit den quasioriginalen Sketches: Die fast unveränderten Sketches erlauben Sendebefehle, die folgenden Syntax haben und z.B. über den Seriellen Monitor des entsprechenden Netzteilnehmers eingegeben werden können, der im Übrigen auf Baud 19200 und CR und LF aktiv steht, oder sie können natürlich im Sketch generiert werden:\nAT+CIPSEND=,\u0026lt;messagelength+2\u0026gt;\nDie Id ist die o.a. Id des Empfängers. Darauf erscheint im Seriellen Monitor ein Prompt: „\u0026gt;“ und man kann die Nachricht (message) eingeben. Diese sollte dann in dem entsprechenden Empfänger als Meldung\n+IPD, ,:\nerscheinen, wobei Id hier die Id des Senders und die length die Länge der ist.\nTrennung der AT Befehle von der Übertragung von Nachrichten Man kann die wünschenswerte Trennung der AT Befehle von den Sende- und Empfangsvorgängen realisieren, indem man das Prinzip anwendet, dass AT Befehle nur vom Sketch gesendet werden und über den Seriellen Monitor bzw. von und nach außen reine Nachrichten (messages) ausgetauscht werden. Die message besteht aus eine Nettomessage Msg und einer Id, die für Senden und Empfangen sowie für Server und Clients eine unterschiedliche Bedeutung hat. Diese wird durch Doppelpunkt getrennt (den natürlich Msg nicht enthalten darf) an die Nettomessage angehangen:\nmessage = : Beispiel: 170pv:1\nSendet ein Client, so kann die Nachricht an einen anderen Client gerichtet sein. Dann heftet er an die Nettonachricht Msg das :Id an, wobei dann Id die final receiver Id (frId) bedeutet. Empfängt ein Client, so kann die Nachricht von einem anderen Client stammen, was er ebenfalls an message erkennt, denn diese hat dann zwar die gleiche Form Msg:Id, aber Id ist jetzt die original sender Id (osId). Id ist also die für die jeweilige Aktion interessante Id, so etwas wie die letztendliche Ziel- oder Absenderadresse, je nachdem, ob es sich um Senden oder Empfangen handelt.\nFür die notwendige Bearbeitung der messages sorgt der Server, der der Empfangsnachricht:\n+IPD, ,::\nbeide Ids entnehmen kann. Ist nicht er selbst der Adressat, sendet er die message weiter, in der Form:\nmessage = :\nweil für den final receiver nur der ursprüngliche Absender (osId) von Interesse ist.\nMan kann diese Zusammenhänge zusammenfassen, indem bei einer Nachricht (message) der, neben der Nettonachricht (Msg) angegebenen Id jeweils eine andere Bedeutung zukommt. Es ist also message = :, wobei Id die folgenden Bedeutungen an den Netzwerkorten (locations) hat:\nlocation sending receiving Server osId frId Client frId osId Message Struktur Ist keine Id angegeben oder die Id der location selbst, wie es über den entsprechenden Seriellen Monitor erfolgen kann, so wird die Message an Ort und Stelle ausgewertet. Meldungen, die via ESP, also von anderen locations kommen und eine Nachricht enthalten, haben die Form +IPD, ,:, wobei der String “+IPD,“ zur Unterscheidung von anderen Meldungen des ESP (answers) verwendet werden kann.\nDie vielleicht kompliziert erscheinende Anbindung der jeweils interessierenden Id (osID oder frId) an die Nettonachricht Msg zur vollständigen Nachricht (message), ermöglicht es, dass Nachrichten von jedem Netzteilnehmer an jeden anderen geschickt werden können sowie an sich selbst, indem im Falle der Clients der letztendliche Empfänger (frId) in der mesage angegeben wird. Beim Empfangen einer Nachricht (message), erkennt jeder Netzteilnehmer den ursprünglichen Absender (osId).\nWill zum Beispiel Client 1 and Client 2 eine Nettonachricht Msg = 123pv senden, sendet er:\n: = 123pv:2\nworauf nach Durchlauf über den Server bei Client 2 ankommt:\n: = 123pv:1.\nDie Programmstruktur Die der Konfiguration des ESP Moduls dienenden AT Befehle werden im Setup gegeben und sind tlwse. in Unterprogramme ausgelagert (ConfigESP, ConfigWifi, StartCon u.a.), wobei obige IPAdressen festgelegt werden und sich der Netzteilnehmer als Server oder Client (station) definiert.\nIn der Loop wird eine Hierarchie festgelegt, durch if else Anweisungen, die Meldungen, die über das ESP eingehen, priorisiert, als zweites nach dem Seriellen Monitor geschaut und erst, wenn bei beiden nichts los ist, seinen eigenen Berechnungen nachgeht.\nMeldungen über ESP Geht eine Meldung über ESP ein, kann es sich um den leidigen worst case, eine von diesem selbst generierte Antwort, handeln (self generated answer), wovon zunächst immer ausgegangen wird (Flag: ESPsga = true, ESPsga heißt: suppose ESP self generated answer). Erst wenn beim Lesen vom esp8266 die Sequenz “+IPD,“ erkannt wurde, wird dieses Flag auf false gesetzt (ESPsga = false), was wegen der Alternative bedeutet, dass es sich um eine message von außen handelt. Dann kann die eingegangene Nachricht geparsed (beim Einlesen entschlüsselt) werden und je nach Bedarf vom Server auch in der oben beschriebenen Form weitergesendet. Das Senden ist der einzige (implizite) AT Befehl, der in der Loop gesendet wird, entweder als weitergereichte oder weiterzureichende message oder aus den Rechnungen des jeweiligen Netzteilnehmers hervorgehend. Dafür dient ein weiteres Unterprogramm (WifiSend).\nBem.: Das Einlesen über ESP könnte man eleganter programmieren, etwa, wie beim Einlesen über den Seriellen Monitor verwendet (zB.: readStringUntil), was sich aber als so langsam erwies, dass wir dazu übergehen mussten, nur noch bei jedem Loopdurchlauf ein Character einzulesen, was dann so schnell ist, wie man es sich nur wünschen kann.\nMeldungen über den Seriellen Monitor Beim Einlesen über den jeweiligen Seriellen Monitor zeigte sich keine störende Verlangsamung, sodass dort elegantere Befehle Verwendung finden konnten. Über debug kann man steuern, welche Meldungen auf dem Terminal erscheinen sollen.\nBem.: Zwischen manchen aufeinanderfolgenden Lesebefehlen, die dann nicht funktionierten, hilft ein rettendes delay(1);.\nInbetriebnahme Die drei Pretzelboards sind an hoffentlich vorhandene drei USB Ports eines Laptops anzuschließen und die Arduino IDE ist dreimal zu öffnen, um unterschiedliche Ports nutzen zu können. In „Werkzeuge“ ist jeweils “Arduino Nano“ und als Prozessor “ATMega328P“ und der entsprechende Com Port auszuwählen. Wenn die Programme für Server und Clients entsprechend hochgeladen sind, sollten nach kurzer Zeit an den Clients beide blauen Dioden leuchten. Über die entsprechenden Seriellen Monitore, die wie oben beschrieben einzustellen sind, kann man die debug Informationen sehen.\nAuf dem Laptop erscheint das Netzwerk NanoESP:\nDas NanoESP Netzwerk Damit sollte man sich verbinden, worauf man dann allerdings kein Internet mehr hat. Die Firewall ist dann zu deaktivieren:\nFirewall deaktivieren Danach kann man von jedem Seriellen Monitor Nachrichten an jeden Netzwerkteilnehmer senden bzw. den Empfang angezeigt bekommen, indem man eingibt:\n: also zum Beispiel: Ein Brieflein von mir:0\n(diese geht dann an den Laptop und entweder Packet Sender oder TWedge).\nWir wünschen viel Freude mit den Pretzelboards, die manchmal zeitweilig den Geist aufgeben, und den Programmen.\nDr. Christian Rempel \u0026amp; Laurin Kettner\nZeuthen im August 2018\nRefer to AT commands: https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/\nDownload: Ernteroboter_Programme ","permalink":"https://iot.fkainka.de/wifi-udp-y-netzwerk-aus-drei-pretzelboards-und-einem-laptop/","summary":"\u003cp\u003e\u003cem\u003e\u003cstrong\u003eAnmerkungen von Fabian Kainka:\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eIm Sommer dieses Jahres erreichte mich eine Mail von  Dr. Christian Rempel, mit einer Frage zum NanoESP. Im Rahmen eines Jugend forscht-Projektes sollte ein Pflückroboter realisiert werden. Mehrere NanoESP-Boards wurden dafür vernetzt um untereinander und mit einem Laptop Sensordaten auszutauschen. Ganz nebenbei hat das Projekt auch an anderen Stellen Wellen geschlagen, wie \u003ca href=\"https://www.tec-it.com/de/start/news/Default.aspx#110219\"\u003ehier auf der TEC-IT Homepage\u003c/a\u003e. Außerdem ist aus diesem aufregenden Projekt ein Artikel entstanden, der die Problematik sehr gut beschreibt und eine Lösung bietet, die für viele Nutzer sehr nützlich sein sollte. An dieser Stelle möchte ich deswegen den überaus informativen und gut dokumentierten Artikel (sogar in englischer Version) von \u003cstrong\u003eDr. Christian Rempel\u003c/strong\u003e und \u003cstrong\u003eLaurin Kettner\u003c/strong\u003e vorstellen. Viel Spaß beim Lesen.\u003c/em\u003e\u003c/p\u003e","title":"WiFi UDP Y-Netzwerk aus drei Pretzelboards und einem Laptop"},{"content":"Hi,\nich versuche das Pretzelboard unter RISC OS als WLAN-Modem zu nutzen.\nDie Konfiguation habe ich soweit hinbekommen, daß ich unter RISC OS eine Verbindung mit meinem Router herstellen und verschiedene WEB-Seiten \u0026ldquo;anpingen kann\u0026rdquo;.\nWenn ich versuche aus dem Handbuch den TCI-Client zu nutzen, bekomme ich zwar eine Verbindung zum www.example.com aber alle weiteren im Buch aufgeführten Befehle funktionieren nicht. Gleiches gilt für die Verwendung unter WIN.\nMeine eigentliche Frage ist: Ist es möglich das Board via PPP zu nutzen und wenn ja, wie?\nGibt es eine andere Möglichkeit?\nVielen Dank.\nRaik\n","permalink":"https://iot.fkainka.de/forum/topic/nutzung-als-modem/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eich versuche das Pretzelboard unter RISC OS als WLAN-Modem zu nutzen.\u003cbr\u003e\nDie Konfiguation habe ich soweit hinbekommen, daß ich unter RISC OS eine Verbindung mit meinem Router herstellen und verschiedene WEB-Seiten \u0026ldquo;anpingen kann\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Miniterminal auf den Pi-Top\" loading=\"lazy\" src=\"http://riscos.openpandora.org/Diverses/Temp/Pretzel/pre_auto1.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eWenn ich versuche aus dem Handbuch den TCI-Client zu nutzen, bekomme ich zwar eine Verbindung zum \u003ca href=\"https://www.example.com\"\u003ewww.example.com\u003c/a\u003e aber alle weiteren im Buch aufgeführten Befehle funktionieren nicht. Gleiches gilt für die Verwendung unter WIN.\u003c/p\u003e","title":"Nutzung als Modem"},{"content":"Hallo zusammen,\nich wollte nun doch noch mal mein \u0026ldquo;Pretzelboard\u0026rdquo; ausprobieren, wenn ich es nun schon mal habe.\nAlso, ich will ein DHT-22 betreiben.\nHabs angeschlossen und alles läuft, auf dem Serial Monitor zeigt es Temperatur und Luftfeuchte an.\nAber leider schaffe ich es nicht die Daten in Blynk anzuzeigen - kann jemand helfen?\nVielen Dank\nSaasemer\n2 Antworten rsoldie – 24.01.2018\nIch probiers mal bei mir. Wenn\u0026rsquo;s klappt meld ich mich..lg\nrsoldie – 24.01.2018\nDie temperaturmessung funktioniert einwandfrei. Für die Luftfeuchtigkeit und helligkeit must du in blynk entsprechende objekte einfügen und die dann dementsprechend im sketch verarbeiten. Das hab ich jetzt auf die schnelle noch nicht geschafft. Vielleicht hat ja jemand anderes eine Lösung parat.\nFr.gr.\n","permalink":"https://iot.fkainka.de/forum/topic/nanoesp-und-dht-22-und-blynk/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich wollte nun doch noch mal mein \u0026ldquo;Pretzelboard\u0026rdquo; ausprobieren, wenn ich es nun schon mal habe.\u003cbr\u003e\nAlso, ich will ein DHT-22 betreiben.\u003cbr\u003e\nHabs angeschlossen und alles läuft, auf dem Serial Monitor zeigt es Temperatur und Luftfeuchte an.\u003cbr\u003e\nAber leider schaffe ich es nicht die Daten in Blynk anzuzeigen - kann jemand helfen?\u003c/p\u003e\n\u003cp\u003eVielen Dank\u003cbr\u003e\nSaasemer\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ersoldie\u003c/strong\u003e – 24.01.2018\u003c/p\u003e\n\u003cp\u003eIch probiers mal bei mir. Wenn\u0026rsquo;s klappt meld ich mich..lg\u003c/p\u003e","title":"NanoESP und DHT 22 und Blynk"},{"content":"Hallo Ardurino - Gemeinde, von wem ist der neue Conrad IoT Adventskalender 2017? Autor?\nHier sind ja keine Anzeichen dazu. Wo wird es wohl das neue Forum geben?\nUnd lange \u0026ldquo;Nichts\u0026rdquo; gehört von Fabian Kainka ???\nViele Grüße Jonathan\n22 Antworten klaus – 17.11.2017\nWenn ich mir den Kalender so ansehe, würde ich tippen, dass es wieder von Fabian Kainka ist. Sieht jedenfalls genauso aus aus. Nur mit nem neueren Board (wo mich interessieren würde, was das für eines ist).\nRico – 18.11.2017\nIch würde mir auch wünschen das der 2017er IoT Kalender wieder von Fabian erstellt wurde. Die beiden letzten Jahre habe ich sehr viel gelernt. Wenn dem so ist, macht er es aber diesmal sehr spannend mit den voarb Infos hier.\nZum neuen Board\u0026hellip;\nEs ist von der Größe her gleich dem \u0026ldquo;alten\u0026rdquo; nur in blau. Ein Standard Nano mit einem HC-05 Bluetooth Modul. Chipsatz ist ein CSR BC417 drauf. Damit steht fest das wir nur BT 2.0 EDR bekommen.\nEin Modul mit HM-10 mit BT 4.0 BLE wäre mir jedoch lieber gewesen. Damit könnten mehr Smartdevices wie Bulbs oder Thermometer o.ä. später gesteuert werden. Die VDO 3.3V sind auf der Unterseite jeweils einer für Nano und BT Modul. Ebenfalls \u0026ldquo;Franzis\u0026rdquo; als Aufdruck.\nAlso könnten da vom Franzis Verlag noch ein paar Lernpakete erscheinen. Spätestens dann wissen wir wer der Autor war ;)\nB.T.W.: Kennt einer eine Quelle dieser LEDs mit eingebautem Vorwiderstand die nun in diesem Jahr drin sind? Evtl. auch Daten.\nDas Gehäuse ist etwas flacher als üblich und sie sollen 220 Ohm integriert haben. Es gibt die in allen Farben incl. RGB mit 4 Pin. Vielleicht tue ich mich mit Suchbegriffen schwer, haben die spezielle Bezeichnungen?\nJonathan – 18.11.2017\nIch hatte doch mal bei Conrad nach dem diesjährigen Autor gefragt: Antwort Fabian Kainka ist es nicht. (Punkt)\n2. Frage zum Forum: Antwort: Wir haben beim Hersteller (vermutlich Franzis) nachgefragt; Gibt es nicht. (Punkt)\nNunja, ich denke nur ganz ohne Forum geht es nicht, wie die letzten beiden Jahre zeigten. Aber vielleicht tut sich noch was in den nächsten Tagen.\nSchönes WE Jonathan\nLars – 03.12.2017\nHallo,\ngib es nun schon ein Forum zum neuen Adventskalender?\nBei mir funktioniert Tag3 die rote LED nicht.\nLars\nFidixx – 05.12.2017\nHallo,\nIch hab leider das selbe Problem mit Tag 3 \u0026hellip;\nHat schon jemand ein Forum gefunden?\nAuf der ConradSeite sieht man nur negative Einträge zum Kalender.\nBaba Fidixx\nHC05 – 09.12.2017\nHallo,\nbei Tag 3 stimmt - wie auch bei anderen Tagen! - die Abbildung nicht mit dem Source-Code überein. In der Anleitung (Bild + Code) ist Pin 2 definiert. Im Source-Code (Download) steht Pin 10.\nAlso in der Tag03.ino die Zeile 12 ändern\nvon: const int ledPin = 10;\nnach: const int ledPin = 2;\nAuch bei Tag 4 steht im Code Pin 2 und 3 u. in der Anleitung (Code) 10 u. 12 (das fritzing ist dagegen korrekt).\nTag 8: im fritzing ist Pin 2 als +-Pol für den Piezo, im Source-Code Pin 3 deklariert.\nD.h.: wenn etwas nicht funktioniert, immer zuerst die Pins im Code prüfen!\nDann klappts.\nHC\nrobi – 10.12.2017\nHallo,\nDer Tag 10 kann unter bestimmten Umständen euren Computer und oder euren Mikroprozessor killen!!\nWenn das Potentiometer am Anschlag zum GND steht, gibt es einen Kurzschluss..\nBITTE NICHT TESTEN!\nEigentlich ein Wahnsinn, dieser Adventkalender.. Sehr schlampig und schlecht gemacht.. eigentlich ein Fall für Gewährleistung, da nicht alle Versuche wie beschrieben funktionieren und fahrlässige Gefahr besteht!!\nHC05 – 10.12.2017\nHallo,\nguter Hinweis von robi! Da wurde ein Cent-Artikel (10K Widerstand) gespart, der das ganze absichern würde. Und dann steht\u0026rsquo;s auch noch im Text: \u0026ldquo;Da der Widerstand sehr hoch ist, besteht \u0026hellip; auch keine Kurzschlussgefahr\u0026rdquo;. Nur, wenn der Poti auf 0 steht ist da kein Widerstand mehr, der \u0026ldquo;sehr hoch\u0026rdquo; ist! Oje, der Kalender ist wirklich schlampig u. absolut nichts für Anfänger. Offenbar wusste da die linke (Anleitung) nicht, was die rechte (Source-Code u. Bauteile) tut. Es sollte sich schnell jemand vom Franzis-Verlag hinsetzen, die Beispiele der nächsten Tage testen u. dann ggfs. eine Errata-Seite veröffentlichen. Jetzt wird auch klar, warum es dieses Mal kein offizielles Forum gibt: die Kommentare wären vernichtend. Wirklich schade, da die Bauteile bis jetzt ganz ordentlich sind (auch wenn der Poti etwas zu groß fürs Breadboard + Bluething ist).\nrobi – 10.12.2017\nHallo HC05,\nDanke für deinen Input :)\nHoffe, es hat keine Schäden gegeben hat..\nLg\nrobi – 11.12.2017\nHallo,\nhabe den Adventkalender heute zurückgegeben.. war kein Problem und ich ärgere mich nicht mehr herum..\nLg\nklaus – 11.12.2017\nIch will zwar niemanden schlecht reden, aber ich bin bei Franzis inzwischen insgesamt vorsichtig. Habe schon einige Experimentierkästen gekauft und war immer enttäuscht. Zwar nicht solche Fehler, wie jetzt hier im Adventskalender, aber ich fand immer, dass für das viele Geld viel zu wenig geboten wurde. Mir gefallen die Kosmos-Experimentierkästen wesentlich besser und sind immer gut durchdacht.\nwinterlinge – 12.12.2017\nDie Qualität des Adventskalenders 2017 finde ich auch unterirdisch. Aber das Bluething Board an sich finde ich ganz interessant und hat mich auch direkt zum Experimentieren angesprochen. Mein Grund den Adventskalender zu kaufen war ein rein materieller. Die 49,95 Euro für das Bluething Board waren mir schlicht zu teuer. Als der Adverntskalender letzten Freitag von C***** dann für 34,95 Euro versandkosten frei angeboten wurde, war das für mich ok. Zusätzlich kamen ja auch noch ein paar Bauteile mit.\nDaher mein Rat: kauft euch den günstigen Adventskalender im Ausverkauf und macht selber was draus.\nFrohe Weihnachten\nBernhard\nklaus – 20.12.2017\nHab mir das Board jetzt auch mal geholt um mal damit rum zu spielen. Vielleicht liegt meine Frage nun nur daran, dass ich mich noch nicht allzu sehr damit beschäftigt habe:\nIch kenne das ja vom WLAN-Board so, dass es Befehle gab, mit denen man Daten über WLAN zu einem anderen Rechner senden konnte. Hier stelle ich nun fest, wenn eine Bluetooth-Verbindung besteht, werden alle Daten 1:1 über Bluetooth versendet. Das Modul nimmt keine AT-Befehle mehr an. Wie kann man aber nun trotz bestehender Verbindung noch Befehle senden? Z.B. gibt es ja Befehle, mit denen man dan aktuellen Verbindungsstatus abfragen, oder eine Verbindung trennen kann. Nur wenn das Board gar keine Befehle mehr annimmt, geht das ja gar nicht. Vielleicht hat hier schon mal jemand etwas mehr rum experimentiert.\nrsoldie – 13.01.2018\nNun endlich komme ich auch dazu etwas zu schreiben. Die von conrad angebotenen kalender sind allesamt von franzis. Ich hatte mich anfangs auch etwas geärgert, aber das ging relativ schnell vorbei, da zumindest Support und kulanz bei franzis sehr ok ist. Die abbildungen stimmen nicht immer zu 100% aber nach schaltbild hat bei mir immer alles funktioniert.\nZum teil habe ich auf fabians videos auf yt von 2016 zurück gegriffen.\nFür mein verständnis wurde zuwenig werbung für das forum hier gemacht und allgemein war hier so wenig Resonanz, das man bis auf wenige Ausnahmen davon ausgehen konnte, es sei alles in Ordnung.\nIch freue mich auf die nächsten experimente .\nMfG rs\nklaus – 13.01.2018\nDass keine Werbung für dieses Forum hier gemacht wurde, dürfte an einem ganz einfachen Grund liegen: Das hier ist nicht das Forum für den Adventskalender 2017. Diese Seite hier ist Fabian Kainka. Der Kalender stammt aber dieses Jahr gar nicht von ihm.\nVon daher würde ich nicht aus der Tatsache, dass hier kaum Resonanz ist scließen, dass alles in Ordnung war. Aus den Erfahrungen in den letzten beiden Jahren, sind die Nutzer des Kalenders eher \u0026ldquo;elektronische Laien\u0026rdquo;. Gerade unter diesem Gesichtspunkt sind solche Fehler wie der Kurzschluss sehr fatal. Auch dass es keinen Hinweis gibt, dass das Board nicht mit Apple (ipad) läuft, würde ich keinesfalls als \u0026ldquo;alles in Ordnung\u0026rdquo; deuten. Wer das Board gekauft hat und nur ein ipad besitzt, wird sich die Zähne daran ausgebissen haben. Und aus den Erfahrungen der letzten beiden Jahren würde ich darauf tippen, dass der Großteil der Nutzer damit vor einem unlösbaren Problem stand.\nWäre mal interessant wie gefragt der Support von Franzis und Conrad war\u0026hellip;\nJonathan – 13.01.2018\nHi Klaus, genau so sehe ich das auch. Wir konnten/können froh sein, hier auf der Seite von Fabian Kainka ein paar Gedanken abzulegen. Denn ein offizielles Forum gab es ja 2017 unter Conrad\u0026rsquo;s Regie nicht. 7 Bewertungen heute bei Conrad davon 4 mit 1 Stern. In F\u0026amp;A (20/25) ist eine Ausführung von Bastelklaus -Licht und Schatten- recht hilfreich. Von Franzis Support weiß ich nichts. Ob wohl Fabian gefragt wurde, ob er den Kalender 2017 übernehmen will? ;-)\nYogibaer – 11.02.2018\nWer sich mit dem Conrad IoT-Kalender 2017 herumärgert:\nTag 19 läuft überhaupt nicht:\nEs fehlen glatt 2 Zeilen Programmcode im Sketch:\nFunktion setup(): hier fehlt die Anweisung pinMode(piezo,OUTPUT);\nFehlt die Anweisung, kann kein Ton den gewünschten Ausgang finden! Funktion loop(): hier fehlt die Anweisung Text=\u0026quot;\u0026quot;; am Ende.\nDadurch wird die zweite und folgende Eingabe am Handy immer hinten drangehängt und die Schaltung führt immer nur das erste Kommando aus.\nHier fehlte ganz klar die QA.\nWer sich nicht ganz sicher ist, was ich meine\u0026hellip; dieser Programmcode wurde bereits an den vorhergehenden Tagen schon mal verwendet: ein Vergleich hilft. Vielleicht hilft es jemandem.\nSchöne Grüße\nJonathan – 25.04.2018\nHallo Klaus, sorry dass ich hier das Forum benutze aber mir schien es jetzt der einzige Weg dich zu erreichen. Ich hatte im Hinterkopf dass du Elektroniker bist. Jetzt habe ich gerade ein Problem mit einer ELKO Bezeichnung. Soeben ist in einem alten, ewig nicht benutzten Tonbandgerät (Grundig/Unitra ZK120T/TK120T) ein Elko in Netzteil Nähe \u0026ldquo;durchgegangen\u0026rdquo;. Beschriftung ist\nKED 100uF / 70-665\nW1-390/70L-17\nin polnisch: Minus am Gehäuse (axial)\nMeine Frage: was bedeutet -665 ? Oder was wäre ein Ersatz spannungsseitig?\nKannst du mir helfen?\nVG Jonathan\nrsoldie – 25.04.2018\nfalls die antwort etwas länger dauert, einen der es betimmt weis ist der macher von \u0026ldquo;bitbastelei\u0026rdquo; oder \u0026ldquo;CC2\u0026rdquo; auf yt. die haben auch eigene webdingens und antworten meist am selben tag.\nmfg r.\nklaus – 26.04.2018\nKann ich leider auch nicht sagen. Öfters wird noch eine Temperatur angegeben, das kann es aber auch nicht sein. Ich denke, die Zahl dürfte unwichtig sein.\nJonathan – 27.04.2018\nDanke an rsoldie und Klaus. Ich denke doch das ich mit 70 Volt auf der Bezeichnung und somit Ersatz 100V richtig liege?\nVG Jonathan\nklaus – 27.04.2018\nIch würde auch mal auf 70V in der Bezeichnung tippen. Ob die hohe Spannung nötig ist, kann ich ohne Kenntnis des Geräts natürlich nicht sagen, aber ich vermute mal dass es auch weniger sein dürfen. Kann mir nicht vorstellen dass die für ein Tonbandgerät ne so hohe Spannung verwenden. Aber wie gesagt, müsste man in ne Schaltung schauen.\n","permalink":"https://iot.fkainka.de/forum/topic/adventskalender-2017/","summary":"\u003cp\u003eHallo Ardurino - Gemeinde, von wem ist der neue Conrad IoT Adventskalender 2017? Autor?\u003cbr\u003e\nHier sind ja keine Anzeichen dazu. Wo wird es wohl das neue Forum geben?\u003cbr\u003e\nUnd lange \u0026ldquo;Nichts\u0026rdquo; gehört von Fabian Kainka ???\u003c/p\u003e\n\u003cp\u003eViele Grüße Jonathan\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"22-antworten\"\u003e22 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 17.11.2017\u003c/p\u003e\n\u003cp\u003eWenn ich mir den Kalender so ansehe, würde ich tippen, dass es wieder von Fabian Kainka ist. Sieht jedenfalls genauso aus aus. Nur mit nem neueren Board (wo mich interessieren würde, was das für eines ist).\u003c/p\u003e","title":"Adventskalender 2017"},{"content":"Hallo zusammen,\ngibt es irgendjemanden, der bereits geprüft hat ob der NanoESP \u0026ldquo;anfällig\u0026rdquo; gegen den KRACK Bug ist. Ich nehme an, da der ESP2866 mit seiner Firmware angreifbar war ist es auch der NanoESP. Hat jemand eine Idee, wie das gefixt werden kann?\n* https://www.heise.de/security/artikel/KRACK-so-funktioniert-der-Angriff-auf-WPA2-3865019.html\n* https://github.com/esp8266/Arduino/issues/3725\n1 Antwort klaus – 04.11.2017\nAlles was es an Updates für den ESP8266 gibt, kannst Du auch in den NanoESP spielen. Der NanoESP ist einfach ein Arduino Nano mit angeflanschtem ESP8266. Es gibt hier auch Anleitungen, wie Du Firmwares einspielst. Oder die Stiftleiste einlöten. Das ist die direkte Schnittstelle zum ESP-Modul.\nIch hatte bisher noch nix von einem KRACK-Update gesehen, war jetzt aber auch ne Woche im Krankenhaus. Muss ich mir aber auch mal ansehen, weil ich da auch sehr interessiert dran bin. Hab auch noch ESP-Module einzeln.\n","permalink":"https://iot.fkainka.de/forum/topic/wifi-krack-bug/","summary":"\u003cp\u003eHallo zusammen,\u003cbr\u003e\ngibt es irgendjemanden, der bereits geprüft hat ob der NanoESP \u0026ldquo;anfällig\u0026rdquo; gegen den KRACK Bug ist. Ich nehme an, da der ESP2866 mit seiner Firmware angreifbar war ist es auch der NanoESP. Hat jemand eine Idee, wie das gefixt werden kann?\u003c/p\u003e\n\u003cp\u003e* \u003ca href=\"https://www.heise.de/security/artikel/KRACK-so-funktioniert-der-Angriff-auf-WPA2-3865019.html\"\u003ehttps://www.heise.de/security/artikel/KRACK-so-funktioniert-der-Angriff-auf-WPA2-3865019.html\u003c/a\u003e\u003cbr\u003e\n* \u003ca href=\"https://github.com/esp8266/Arduino/issues/3725\"\u003ehttps://github.com/esp8266/Arduino/issues/3725\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 04.11.2017\u003c/p\u003e\n\u003cp\u003eAlles was es an Updates für den ESP8266 gibt, kannst Du auch in den NanoESP spielen. Der NanoESP ist einfach ein Arduino Nano mit angeflanschtem ESP8266. Es gibt hier auch Anleitungen, wie Du Firmwares einspielst. Oder die Stiftleiste einlöten. Das ist die direkte Schnittstelle zum ESP-Modul.\u003c/p\u003e","title":"WiFi KRACK Bug"},{"content":"Hallo zusammen,\nich möchte gern von der Seite openweathermap.com meine Wetterdaten abziehen und später in einem Display darstellen.\nNun ergibt sich folgende Problematik. Ich habe mir die Libs von Hrn. Kainka zu nutze gemacht (Danke schon mal dafür), um die Daten von der Website abzuzeiehen. Dies klappt soweit:\nSerielle Ausgabe:\nWLAN Connected\nAT+CIFSR\n+CIFSR:STAIP,\u0026ldquo;192.168.XXX.XXX\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:XX:XX:XX\u0026rdquo;\nOK\nInternet Connection OK\nPing: 305ms\nCONNECTED TO SERVER\nREQUEST SEND\n{\u0026ldquo;coord\u0026rdquo;:{\u0026ldquo;lon\u0026rdquo;:9.72,\u0026ldquo;lat\u0026rdquo;:53.7},\u0026ldquo;weather\u0026rdquo;:[{\u0026ldquo;id\u0026rdquo;:802,\u0026ldquo;main\u0026rdquo;:\u0026ldquo;Clouds\u0026rdquo;,\u0026ldquo;description\u0026rdquo;:\u0026ldquo;scattered clouds\u0026rdquo;,\u0026ldquo;icon\u0026rdquo;:\u0026ldquo;03d\u0026rdquo;}],\u0026ldquo;base\u0026rdquo;:\u0026ldquo;stations\u0026rdquo;,\u0026ldquo;main\u0026rdquo;:{\u0026ldquo;temp\u0026rdquo;:12,\u0026ldquo;pressure\u0026rdquo;:1019,\u0026ldquo;humidity\u0026rdquo;:81,\u0026ldquo;temp_min\u0026rdquo;:12,\u0026ldquo;temp_max\u0026rdquo;:12},\u0026ldquo;visibility\u0026rdquo;:10000,\u0026ldquo;wind\u0026rdquo;:{\u0026ldquo;speed\u0026rdquo;:7.2,\u0026ldquo;deg\u0026rdquo;:320},\u0026ldquo;clouds\u0026rdquo;:{\u0026ldquo;all\u0026rdquo;:40},\u0026ldquo;dt\u0026rdquo;:1509097800,\u0026ldquo;sys\u0026rdquo;:{\u0026ldquo;type\u0026rdquo;:1,\u0026ldquo;id\u0026rdquo;:4883,\u0026ldquo;message\u0026rdquo;:0.1779,\u0026ldquo;country\u0026rdquo;:\u0026ldquo;DE\u0026rdquo;,\u0026ldquo;sunrise\u0026rdquo;:1509084727,\u0026ldquo;sunset\u0026rdquo;:1509119812},\u0026ldquo;id\u0026rdquo;:2911298,\u0026ldquo;name\u0026rdquo;:\u0026ldquo;Hamburg\u0026rdquo;,\u0026ldquo;cod\u0026rdquo;:200}CONVERTING DATA\nDISCONNECTED FROM SERVER\nNun will ja den String ja nicht hoch und runter aus einanderschnibbeln. Sondern schön über die JSON-Lib auslesen.\nSchheinbar verträgt sich http-Request bzw. die WiFi-Verbindung nicht so gut mit dem JSON-Parser.\nUm zu prüfen, ob die Daten richtig sind und um die Buffergröße usw. zu ermitteln habe ich folgendes genutzt:\nJSON-Assistent\nDie Seite gibt einem auch schön den Code wieder, welchen wir zum auslesen der einzelnen Felder benötigen.\nSobald ich diesen aber nutze, bzw. ab dem Moment (JsonObject\u0026amp; root = jsonBuffer.parseObject(json);) kann das System die Daten nicht mehr aus dem Internetziehen und selbst wenn ich dem Parser die Daten vorgebe, schlägt es fehl.\nNach dem ich google ein wneig beschäftigt habe, bin ich auch auf folgendes gestoßen:\nwhy-arduinojson-is-slow aber weitergekommen bin ich damit leider auch nicht, da ich kein Profi in Sachen Programmierung bin.\nKönnt ihr einmal drüber schauen und mit ggf. Verbesserungsvorschläge geben oder sagen woran es liegt? DANKE :)\n(Zeile 118 ist der Parser)\n#include // #include //NanoESP_HTTP http = NanoESP_HTTP(nanoesp); //http.sendRequest(1, \u0026#34;GET\u0026#34;, servername + page); #include #include #define DEBUG true #define LED_WLAN 13 #define SSID \u0026#34;SSID meines WLAN\u0026#34; #define PASSWORD \u0026#34;xxxxxx\u0026#34; #define servername \u0026#34;api.openweathermap.org\u0026#34; #define APIKEY \u0026#34;Mein API-KEY\u0026#34; #define CityID \u0026#34;2911298\u0026#34; NanoESP nanoesp = NanoESP(); //----------------- die NanoESP-Konfiguration vornehmen void setup() { Serial.begin(19200); nanoesp.init(); if (!nanoesp.configWifi(STATION, SSID, PASSWORD)) { debug(F(\u0026#34;Error: WLAN not Connected\\n\u0026#34;)); } else { debug(F(\u0026#34;WLAN Connected\\n\u0026#34;)); digitalWrite(LED_WLAN, HIGH); } //Print IP in Terminal debug(nanoesp.getIp()); //Time for Ping int vTime = nanoesp.ping(servername); if (vTime \u0026gt; 0 ) { debug(\u0026#34;Internet Connection OK\\nPing: \u0026#34; + String(vTime) + \u0026#34;ms\u0026#34;); } else { debug(F(\u0026#34;Error: Internet Connection\u0026#34;)); } } //----------------- unsere Dauerschleife void loop() { connectServer(); convertData(readData()); disconnectServer(); delay(300000); } //----------------- Verbinden mit dem openwaethermap-Server und Request senden void connectServer() { String page = \u0026#34;/data/2.5/weather?id=\u0026#34; + String(CityID) + \u0026#34;\u0026amp;units=metric\u0026amp;APPID=\u0026#34; + String(APIKEY); String getRequest = \u0026#34;GET \u0026#34; + page + \u0026#34; HTTP/1.1\\r\\n\u0026#34; + \u0026#34;Host:\u0026#34; + servername + \u0026#34;\\r\\n\\r\\n\u0026#34;; //\u0026#34;Connection: close\\r\\n\\r\\n\u0026#34; ; //\u0026#34;Connection: keep-alive\\r\\n\\r\\n\u0026#34; ; if (nanoesp.newConnection(1, \u0026#34;TCP\u0026#34;, servername, 80)) { debug(\u0026#34;CONNECTED TO SERVER\u0026#34;); if (nanoesp.sendData(1, getRequest)) { debug(\u0026#34;REQUEST SEND\u0026#34;); } else { debug(\u0026#34;BAD REQUEST RESPONSE\u0026#34;); } } else { debug(\u0026#34;COULD NOT CONNECT TO SERVER\u0026#34;); } } //----------------- Verbindung mit dem openwaethermap-Server aufheben void disconnectServer() { if (nanoesp.closeConnection(1)) { debug(\u0026#34;DISCONNECTED FROM SERVER\u0026#34;); } else { debug(\u0026#34;\\r\\nCOULD NOT DISCONNECT FROM SERVER\u0026#34;); } } //----------------- die angeforderten Daten aus dem NanoESP lesen String readData() { String data; char endOfHeaders[] = \u0026#34;\\r\\n\\r\\n\u0026#34;; while (!nanoesp.available()) {}; //warten auf NanoESP while (nanoesp.available()) { if (nanoesp.find(endOfHeaders)) //damit wir nur die JSON-Daten auslesen { data = nanoesp.readString(); Serial.print(data); } else { debug(\u0026#34;COULD NOT READ DATA\u0026#34;); } } return data; } //----------------- die Daten aus dem JSON-Format konvertieren void convertData(String data) { //{\u0026#34;coord\u0026#34;:{\u0026#34;lon\u0026#34;:9.72,\u0026#34;lat\u0026#34;:53.7},\u0026#34;weather\u0026#34;:[{\u0026#34;id\u0026#34;:803,\u0026#34;main\u0026#34;:\u0026#34;Clouds\u0026#34;,\u0026#34;description\u0026#34;:\u0026#34;broken clouds\u0026#34;,\u0026#34;icon\u0026#34;:\u0026#34;04d\u0026#34;}],\u0026#34;base\u0026#34;:\u0026#34;stations\u0026#34;,\u0026#34;main\u0026#34;:{\u0026#34;temp\u0026#34;:13.37,\u0026#34;pressure\u0026#34;:1019,\u0026#34;humidity\u0026#34;:76,\u0026#34;temp_min\u0026#34;:13,\u0026#34;temp_max\u0026#34;:14},\u0026#34;visibility\u0026#34;:10000,\u0026#34;wind\u0026#34;:{\u0026#34;speed\u0026#34;:4.6,\u0026#34;deg\u0026#34;:280},\u0026#34;clouds\u0026#34;:{\u0026#34;all\u0026#34;:75},\u0026#34;dt\u0026#34;:1509029400,\u0026#34;sys\u0026#34;:{\u0026#34;type\u0026#34;:1,\u0026#34;id\u0026#34;:4883,\u0026#34;message\u0026#34;:0.003,\u0026#34;country\u0026#34;:\u0026#34;DE\u0026#34;,\u0026#34;sunrise\u0026#34;:1508998236,\u0026#34;sunset\u0026#34;:1509033510},\u0026#34;id\u0026#34;:2911298,\u0026#34;name\u0026#34;:\u0026#34;Hamburg\u0026#34;,\u0026#34;cod\u0026#34;:200} debug(\u0026#34;CONVERTING DATA\u0026#34;); const char* json = data.c_str(); //Serial.println(json); const size_t bufferSize = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1) + 2 * JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(12) + 390; DynamicJsonBuffer jsonBuffer(bufferSize); //const char* json = \u0026#34;{\\\u0026#34;coord\\\u0026#34;:{\\\u0026#34;lon\\\u0026#34;:9.72,\\\u0026#34;lat\\\u0026#34;:53.7},\\\u0026#34;weather\\\u0026#34;:[{\\\u0026#34;id\\\u0026#34;:803,\\\u0026#34;main\\\u0026#34;:\\\u0026#34;Clouds\\\u0026#34;,\\\u0026#34;description\\\u0026#34;:\\\u0026#34;broken clouds\\\u0026#34;,\\\u0026#34;icon\\\u0026#34;:\\\u0026#34;04d\\\u0026#34;}],\\\u0026#34;base\\\u0026#34;:\\\u0026#34;stations\\\u0026#34;,\\\u0026#34;main\\\u0026#34;:{\\\u0026#34;temp\\\u0026#34;:13.37,\\\u0026#34;pressure\\\u0026#34;:1019,\\\u0026#34;humidity\\\u0026#34;:76,\\\u0026#34;temp_min\\\u0026#34;:13,\\\u0026#34;temp_max\\\u0026#34;:14},\\\u0026#34;visibility\\\u0026#34;:10000,\\\u0026#34;wind\\\u0026#34;:{\\\u0026#34;speed\\\u0026#34;:4.6,\\\u0026#34;deg\\\u0026#34;:280},\\\u0026#34;clouds\\\u0026#34;:{\\\u0026#34;all\\\u0026#34;:75},\\\u0026#34;dt\\\u0026#34;:1509029400,\\\u0026#34;sys\\\u0026#34;:{\\\u0026#34;type\\\u0026#34;:1,\\\u0026#34;id\\\u0026#34;:4883,\\\u0026#34;message\\\u0026#34;:0.003,\\\u0026#34;country\\\u0026#34;:\\\u0026#34;DE\\\u0026#34;,\\\u0026#34;sunrise\\\u0026#34;:1508998236,\\\u0026#34;sunset\\\u0026#34;:1509033510},\\\u0026#34;id\\\u0026#34;:2911298,\\\u0026#34;name\\\u0026#34;:\\\u0026#34;Hamburg\\\u0026#34;,\\\u0026#34;cod\\\u0026#34;:200}\u0026#34;; JsonObject\u0026amp; root = jsonBuffer.parseObject(json); // // const char* name = root[\u0026#34;name\u0026#34;]; // \u0026#34;London\u0026#34; // // if (!root.success()) { // Serial.println(\u0026#34;parseObject() failed\u0026#34;); // } // Serial.println(name); } //----------------- entsprechend der globalen Vorgabe debuggen wir oder nicht void debug(String Msg) { if (DEBUG) { Serial.println(Msg); } } 1 Antwort Philipp – 27.10.2017\nIch habe am readData() und convertData() noch ein wenig geschraubt, aber trotzdem schlägt das parsing fehl :/\nDie richtigen Daten kommen schon beim JSON-Datenelement an, aber warum es diese nicht versteht gute Frage.\nIch habe in einem abgespecktem Programm auch ein wenig experimentiert und es kamen tolle Dinge beim parsing rum.\nAlleine ein else-Zweig beim if (!root.success()) { Serial.println(\u0026ldquo;parseObject() failed\u0026rdquo;); } führte dazu, dass es nicht mehr ging. :/\n//----------------- die angeforderten Daten aus dem NanoESP lesen String readData() { String data; char endOfHeaders[] = \u0026#34;\\r\\n\\r\\n\u0026#34;; while (!nanoesp.available()) {}; //warten auf NanoESP while (nanoesp.available()) { if (nanoesp.find(endOfHeaders)) //damit wir nur die JSON-Daten auslesen { data = nanoesp.readString(); //Serial.print(data); return data; } else { debug(\u0026#34;COULD NOT READ DATA\u0026#34;); return \u0026#34;FAILED\u0026#34;; } } //----------------- die Daten aus dem JSON-Format konvertieren void convertData(String data) { debug(\u0026#34;\\r\\nCONVERTING DATA\u0026#34;); const char* json = data.c_str(); Serial.println(json); debug(\u0026#34;CONVERTED TO JSON\u0026#34;); const size_t bufferSize = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1) + 2 * JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(12) + 400; DynamicJsonBuffer jsonBuffer(bufferSize); //StaticJsonBuffer jsonBuffer; JsonObject\u0026amp; root = jsonBuffer.parseObject(json); String location = root[\u0026#34;name\u0026#34;]; float temperature = root[\u0026#34;main\u0026#34;][\u0026#34;temp\u0026#34;]; if (!root.success()) { Serial.println(\u0026#34;parseObject() failed\u0026#34;); } Serial.println(\u0026#34;In \u0026#34; + location + \u0026#34; sind es aktuell \u0026#34; + temperature + \u0026#34;°C.\u0026#34;); } ","permalink":"https://iot.fkainka.de/forum/topic/openweathermap-daten-lesen-und-parsen-der-json-daten/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich möchte gern von der Seite openweathermap.com meine Wetterdaten abziehen und später in einem Display darstellen.\u003cbr\u003e\nNun ergibt sich folgende Problematik. Ich habe mir die Libs von Hrn. Kainka zu nutze gemacht (Danke schon mal dafür), um die Daten von der Website abzuzeiehen. Dies klappt soweit:\u003c/p\u003e\n\u003cp\u003eSerielle Ausgabe:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eWLAN Connected\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eAT+CIFSR\u003c/p\u003e\n\u003cp\u003e+CIFSR:STAIP,\u0026ldquo;192.168.XXX.XXX\u0026rdquo;\u003cbr\u003e\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:XX:XX:XX\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eOK\u003c/p\u003e\n\u003cp\u003eInternet Connection OK\u003cbr\u003e\nPing: 305ms\u003cbr\u003e\nCONNECTED TO SERVER\u003cbr\u003e\nREQUEST SEND\u003cbr\u003e\n{\u0026ldquo;coord\u0026rdquo;:{\u0026ldquo;lon\u0026rdquo;:9.72,\u0026ldquo;lat\u0026rdquo;:53.7},\u0026ldquo;weather\u0026rdquo;:[{\u0026ldquo;id\u0026rdquo;:802,\u0026ldquo;main\u0026rdquo;:\u0026ldquo;Clouds\u0026rdquo;,\u0026ldquo;description\u0026rdquo;:\u0026ldquo;scattered clouds\u0026rdquo;,\u0026ldquo;icon\u0026rdquo;:\u0026ldquo;03d\u0026rdquo;}],\u0026ldquo;base\u0026rdquo;:\u0026ldquo;stations\u0026rdquo;,\u0026ldquo;main\u0026rdquo;:{\u0026ldquo;temp\u0026rdquo;:12,\u0026ldquo;pressure\u0026rdquo;:1019,\u0026ldquo;humidity\u0026rdquo;:81,\u0026ldquo;temp_min\u0026rdquo;:12,\u0026ldquo;temp_max\u0026rdquo;:12},\u0026ldquo;visibility\u0026rdquo;:10000,\u0026ldquo;wind\u0026rdquo;:{\u0026ldquo;speed\u0026rdquo;:7.2,\u0026ldquo;deg\u0026rdquo;:320},\u0026ldquo;clouds\u0026rdquo;:{\u0026ldquo;all\u0026rdquo;:40},\u0026ldquo;dt\u0026rdquo;:1509097800,\u0026ldquo;sys\u0026rdquo;:{\u0026ldquo;type\u0026rdquo;:1,\u0026ldquo;id\u0026rdquo;:4883,\u0026ldquo;message\u0026rdquo;:0.1779,\u0026ldquo;country\u0026rdquo;:\u0026ldquo;DE\u0026rdquo;,\u0026ldquo;sunrise\u0026rdquo;:1509084727,\u0026ldquo;sunset\u0026rdquo;:1509119812},\u0026ldquo;id\u0026rdquo;:2911298,\u0026ldquo;name\u0026rdquo;:\u0026ldquo;Hamburg\u0026rdquo;,\u0026ldquo;cod\u0026rdquo;:200}CONVERTING DATA\u003cbr\u003e\nDISCONNECTED FROM SERVER\u003c/p\u003e","title":"openweathermap - Daten lesen und parsen der JSON-Daten"},{"content":"Hallo,\nmein NanoESP misst die Temperatur. Diese Temperatur soll er nun per WLAN in einer Datei auf ein Storage ablegen.\nIm WLAN ist der NanoESP. aber wie bekomme ich ihn dazu eine Datei auf dem Storage abzulegen?\nDanke für Hilfe\n6 Antworten klaus – 12.10.2017\nOha, ich glaube da hast Du Dir was vorgenommen.\nIn jedem Fall muss der NanoESP die gleiche \u0026ldquo;Sprache\u0026rdquo; sprechen, wie die NAS, sprich ein Kommunikationsprotokoll. Das könnte Samba, FTP, Apple oder NFS sein (es gibt auch noch mehr). Ich weiß nicht, ob es dafür Bibliotheken gibt. Könnte aber sein, dass Du damit den Speicher des Mikrocontrollers füllst. Du müsstes die komplette Kommunikation (Authentifizierung, Befehle an die NAS, Datenübertragung) nachprogrammieren. Hinzu kommt, dass heutige Systeme oft gar keine unverschlüsselte Verbindung mehr annehmen. Die verschlüssselte Kommunikation wird mehr und mehr zum Standard. Der NanoESP kann allerdings keine Verschlüsselung. Dafür wäre ein extra Cryptochip nötig, da der Algorithmus für den Controller zu umfangreich ist.\nDefinitiv einfacher wäre es, wenn Du einen \u0026ldquo;Dienst\u0026rdquo; schreibst, der die Daten entgegen nimmt. Das könnte im einfachsten Fall ein PHP-Script sein was auf einem Webserver läuft. Je nachdem welche NAS Du hast, bietet diese einen Webserver an.\nDaniel – 13.10.2017\nDanke für die Antwort Klaus. Mein Storage(Synology) hat ein PHP Paket installiert und läuft (wofür auch immer).\nwie müsste ich jetzt weitermachen?\nklaus – 13.10.2017\nDann würde ich ein PHP-Script schreiben. Ich bin allerdings kein Synology-Experte. Deswegen kann ich Dir nicht sagen, wo Du den Speicherort im Dateisystem findest, damit Du dann auch per Freigabe an die Datei dran kommst.\nIch würde die Messwerte per URL (\u0026hellip;.?parameter=wert) übertragen und per PHP-Script in die Datei schreiben lassen.\nklaus – 13.10.2017\nP.S.\nIch weiß nicht was Du damit vor hast. Aber wenn Du ne Synology hast, kannst Du darauf ja auch ne Datenbank installieren und die Messwerte stattdessen in die Datenbank schreiben. Vielleicht ist das für Deinen Zweck ja zweckmäßiger.\nDaniel – 13.10.2017\nDas klingt auch gut. Dann könnte ich mir in einer Webseite sogar den Verlauf anzeigen lassen.\nIch möchte eigendlich nur wissen welche Temperatur er gerade gemessen hat und dazu nicht in den Keller gehen, Laptop anschließen und Seriellen Monitor auslesen. Mit der Datenbanklösung müsste ich ja sogar ein Diagramm darstellen können.\nNur wie? Bin kein Programmierer und hangel mich so durch.\nklaus – 13.10.2017\nDa kann ich jetzt leider nur sagen - üben. Ohne Programmierung wirst Du sowas nicht hin bekommen. PHP ist vom Prinzip keine schwere Sprache. Hinzu kommt dann allerdings zur Anzeige noch HTML für die Darstellung. Dir wird also leider nix anderes übrig bleiben, als Dich etwas in C (für den NanoESP), SQL (Datenbankabfrage), PHP und HTML einzuarbeiten. Als Datenbank würde ich Dir eine MySQL/MariaDB empfehlen. Da findest Du im Internet auch massig Anleitungen.\nDu kannst das recht gut auf dem PC mit Xampp üben. Das ist ein Komplettpaket aus für Deinen Fall Webserver, PHP, MySQL-Datenbank. Ist etwas bequemer zum üben, als auf der Synology zu arbeiten und bereits fertig konfiguriert (sogar portabel einsetzbar).\nAls Oberfläche, um die Datenbank zu administrieren und zu schauen, ob Deine Scripte das machen was sie sollen, kann ich PHPmyAdmin empfehlen. Ist bei Xampp auch bereits integriert.\n","permalink":"https://iot.fkainka.de/forum/topic/nano-esp-soll-eine-datei-auf-einem-laufwerk-ablegen/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nmein NanoESP misst die Temperatur. Diese Temperatur soll er nun per WLAN in einer Datei auf ein Storage ablegen.\u003cbr\u003e\nIm WLAN ist der NanoESP. aber wie bekomme ich ihn dazu eine Datei auf dem Storage abzulegen?\u003cbr\u003e\nDanke für Hilfe\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"6-antworten\"\u003e6 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 12.10.2017\u003c/p\u003e\n\u003cp\u003eOha, ich glaube da hast Du Dir was vorgenommen.\u003c/p\u003e\n\u003cp\u003eIn jedem Fall muss der NanoESP die gleiche \u0026ldquo;Sprache\u0026rdquo; sprechen, wie die NAS, sprich ein Kommunikationsprotokoll. Das könnte Samba, FTP, Apple oder NFS sein (es gibt auch noch mehr). Ich weiß nicht, ob es dafür Bibliotheken gibt. Könnte aber sein, dass Du damit den Speicher des Mikrocontrollers füllst. Du müsstes die komplette Kommunikation (Authentifizierung, Befehle an die NAS, Datenübertragung) nachprogrammieren. Hinzu kommt, dass heutige Systeme oft gar keine unverschlüsselte Verbindung mehr annehmen. Die verschlüssselte Kommunikation wird mehr und mehr zum Standard. Der NanoESP kann allerdings keine Verschlüsselung. Dafür wäre ein extra Cryptochip nötig, da der Algorithmus für den Controller zu umfangreich ist.\u003cbr\u003e\nDefinitiv einfacher wäre es, wenn Du einen \u0026ldquo;Dienst\u0026rdquo; schreibst, der die Daten entgegen nimmt. Das könnte im einfachsten Fall ein PHP-Script sein was auf einem Webserver läuft. Je nachdem welche NAS Du hast, bietet diese einen Webserver an.\u003c/p\u003e","title":"Nano ESP soll eine Datei auf einem Laufwerk ablegen"},{"content":"Netzwerk-Pager:\nBei Eingabe, ES GIBT ESSEN!!!\nwird nur der obere und unter linke Display-Teil beschrieben.\nwo könnte der Fehler liegen ?\nLG jodebrezel\n","permalink":"https://iot.fkainka.de/forum/topic/lcd-diplay-2/","summary":"\u003cp\u003eNetzwerk-Pager:\u003cbr\u003e\nBei Eingabe, ES GIBT ESSEN!!!\u003cbr\u003e\nwird nur der obere und unter linke Display-Teil beschrieben.\u003cbr\u003e\nwo könnte der Fehler liegen ?\u003cbr\u003e\nLG jodebrezel\u003c/p\u003e","title":"LCD-Diplay"},{"content":"Netzwerk-Pager:\nBei Eingabe, ES GIBT ESSEN!!!\nwird nur der obere und linke Display-Teil beschrieben.\nwo könnte der Fehler liegen ?\nLG jodebrezel\n","permalink":"https://iot.fkainka.de/forum/topic/lcd-diplay/","summary":"\u003cp\u003eNetzwerk-Pager:\u003cbr\u003e\nBei Eingabe, ES GIBT ESSEN!!!\u003cbr\u003e\nwird nur der obere und linke Display-Teil beschrieben.\u003cbr\u003e\nwo könnte der Fehler liegen ?\u003cbr\u003e\nLG jodebrezel\u003c/p\u003e","title":"LCD-Diplay"},{"content":"Hallo zusmmen,\nmein Pretzel Board ist im WLAN und Ping fleißig vor sich her, doch eigentlich möchte ich Informationen auf meiner Website darstellen.\nWo gehts hier eigentlich zum Internet?\nAlso ich möchte ein HTTP Get absetzen, alla\nwww.mustermann.de/login.php?user=NanoESP\u0026pass=fkainka\u0026login=1\noder so in der Art.\nDas Ergebnis ist dann ein\n\u0026lt;html\u0026gt;\u0026lt;head\u0026gt;\u0026lt;title\u0026gt;Login\u0026lt;/title\u0026gt;\u0026lt;/head\u0026gt;\u0026lt;body\u0026gt;Login sucessfull\u0026lt;/head\u0026gt; Gruß\nchristian\n","permalink":"https://iot.fkainka.de/forum/topic/wie-website-aufrufen-und-inhalt-parsen/","summary":"\u003cp\u003eHallo zusmmen,\u003c/p\u003e\n\u003cp\u003emein Pretzel Board ist im WLAN und Ping fleißig vor sich her, doch eigentlich möchte ich Informationen auf meiner Website darstellen.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eWo gehts hier eigentlich zum Internet?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAlso ich möchte ein HTTP Get absetzen, alla\u003cbr\u003e\n\u003ca href=\"https://www.mustermann.de/login.php?user=NanoESP\u0026amp;pass=fkainka\u0026amp;login=1\"\u003ewww.mustermann.de/login.php?user=NanoESP\u0026pass=fkainka\u0026login=1\u003c/a\u003e\u003cbr\u003e\noder so in der Art.\u003c/p\u003e\n\u003cp\u003eDas Ergebnis ist dann ein\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-html\" data-lang=\"html\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ehead\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003eLogin\u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003etitle\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ehead\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u0026lt;\u003c/span\u003e\u003cspan class=\"nt\"\u003ebody\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003eLogin sucessfull\u003cspan class=\"p\"\u003e\u0026lt;/\u003c/span\u003e\u003cspan class=\"nt\"\u003ehead\u003c/span\u003e\u003cspan class=\"p\"\u003e\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eGruß\u003cbr\u003e\nchristian\u003c/p\u003e","title":"wie Website aufrufen und Inhalt parsen"},{"content":"Hallo ins Forum,\nmein NanoESP-Projekt, bestehend aus einer \u0026ldquo;klassischen\u0026rdquo; Arduino-Steuerung und einer zugehörigen kleineren Webseite, platzt aus allen Speichernähten. Andererseits hat der integrierte ESP8266 genug freies SRAM und Flash-Speicher und auch einen leistungsfähigen Prozessor. Deshalb will ich die Webseite in den ESP8266 verlagern. Die Steuerung soll im Nano verbleiben, schon wegen der Anzahl an IOs, die das Projekt benötigt. Eine Handvoll Variable (int, float, char[]) sind zwischen Nano und ESP8266 auszutauschen.\nGanz allgemein halte ich die angedachte Struktur für vorteilhaft für viele Projekte. Denn diese Aufgabenverteilung bringt ein deterministischeres Verhalten der Steuerung, während parallel dazu vom anderen Prozessor asynchron und transparent die Internetanbindung bearbeitet wird.\nNun ergeben sich für mich Fragen, die ich vortragen möchte, bevor ich den ESP8266 des NanoESPs selbst zu programmieren beginne und dabei vielleicht zerschieße.\nEin AT+GMR liefert AT version:0.22.0.0(Mar 20 2015 10:04:26)\nSDK version:1.0.0\ncompile time:Mar 20 2015 11:00:32\nWie kann ich eines Tages diesen Zustand wieder herstellen? Kann man das Image auslesen und sichern? Kann man irgendwo genau dieses Original-Binary runterladen? Oder genügt es, ein BareMinimum-Sketch aus der Arduino-IDE zu flashen? Ein USBASP AVR-Programmer mit 5V \u0026lt;-\u0026gt; 3,3V-Umsetzung ist vorhanden.\n2a) Man müsste noch die AT-Befehle um die Möglichkeit erweitern, bidirektional Variablenwerte zwischen Nano und ESP8266 auszutauschen. Sind die Quelltexte des ESP8266 irgendwo erhältlich?\nOder\n2b) Ich habe etwas von \u0026ldquo;custom-specific AT commands\u0026rdquo; gehört, aber nicht verstanden. Hat jemand damit schon mal gearbeitet?\nIch bin gespannt auf eure Beiträge und bedanke mich vorab dafür!\n","permalink":"https://iot.fkainka.de/forum/topic/auslagern-der-webseite-in-den-esp8266-des-nanoesp/","summary":"\u003cp\u003eHallo ins Forum,\u003c/p\u003e\n\u003cp\u003emein NanoESP-Projekt, bestehend aus einer \u0026ldquo;klassischen\u0026rdquo; Arduino-Steuerung und einer zugehörigen kleineren Webseite, platzt aus allen Speichernähten. Andererseits hat der integrierte ESP8266 genug freies SRAM und Flash-Speicher und auch einen leistungsfähigen Prozessor. Deshalb will ich die Webseite in den ESP8266 verlagern. Die Steuerung soll im Nano verbleiben, schon wegen der Anzahl an IOs, die das Projekt benötigt. Eine Handvoll Variable (int, float, char[]) sind zwischen Nano und ESP8266 auszutauschen.\u003c/p\u003e","title":"Auslagern der Webseite in den ESP8266 des NanoESP"},{"content":"Hallo,\nSorry für mein schlechtes Deutsch. (Ich spreche Französisch und ich verwende eine automatische Übersetzung.)\nIch habe ein Projekt zu entwickeln, und ich habe nicht viel Zeit: Kommunikation zwischen zwei Pretzelboard, bidirektional mit 4 Schaltkanäle in einer Richtung und 4 Kanäle in die andere Richtung.\nKönnte mir jemand mit dem Code helfen ?\n(Ich gewährt etwas zu bezahlen …)\nVielen Dank für Ihre Hilfe !\nStefan\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/kommunikation-zwischen-zwei-pretzelboard-bidirektional-2/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eSorry für mein schlechtes Deutsch. (Ich spreche Französisch und ich verwende eine automatische Übersetzung.)\u003c/p\u003e\n\u003cp\u003eIch habe ein Projekt zu entwickeln, und ich habe nicht viel Zeit: Kommunikation zwischen zwei Pretzelboard, bidirektional mit 4 Schaltkanäle in einer Richtung und 4 Kanäle in die andere Richtung.\u003c/p\u003e\n\u003cp\u003eKönnte mir jemand mit dem Code helfen ?\u003cbr\u003e\n(Ich gewährt etwas zu bezahlen …)\u003c/p\u003e\n\u003cp\u003eVielen Dank für Ihre Hilfe !\u003cbr\u003e\nStefan\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Dessin1.png\" loading=\"lazy\" src=\"/images/2017/04/Dessin1.png\"\u003e\u003c/p\u003e","title":"Kommunikation zwischen zwei Pretzelboard (bidirektional)"},{"content":"\u0026hellip;.wollte mit der Übung von Tag 3 beginnen ,\ndoch leider beim compiliren erscheint die\nFehlermeldung: #include \u0026lt;NanoESP.h\u0026gt; nichtvorhanden,\nobwohl die Haederdatei im ausgewähltem Programm (exampel-Basics-AccesPoint) angegeben ist.\nwie kann ich diesen Fehler beheben\u0026hellip;?\n1 Antwort saasemer – 05.04.2017\nHallo jodebrezel,\nversuche mal die NanoESP.h in den Pfad \u0026hellip;/Arduino/libraries zu kopieren\nGruß vom Saasemer\n","permalink":"https://iot.fkainka.de/forum/topic/day-3-der-nanoesp-im-accespint-modus/","summary":"\u003cp\u003e\u0026hellip;.wollte mit der Übung von Tag 3 beginnen ,\u003cbr\u003e\ndoch leider beim compiliren erscheint die\u003cbr\u003e\nFehlermeldung: #include \u0026lt;NanoESP.h\u0026gt; nichtvorhanden,\u003cbr\u003e\nobwohl die Haederdatei im ausgewähltem Programm (exampel-Basics-AccesPoint) angegeben ist.\u003cbr\u003e\nwie kann ich diesen Fehler beheben\u0026hellip;?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003esaasemer\u003c/strong\u003e – 05.04.2017\u003c/p\u003e\n\u003cp\u003eHallo jodebrezel,\u003c/p\u003e\n\u003cp\u003eversuche mal die NanoESP.h in den Pfad \u0026hellip;/Arduino/libraries zu kopieren\u003c/p\u003e\n\u003cp\u003eGruß vom Saasemer\u003c/p\u003e","title":"Day 3 Der NanoESP im AccesPint-Modus"},{"content":"Ich habe einen Raspberry Pi mit Mosquitto am laufen.\nMit der connect(\u0026hellip;); Methode der NanoESP_MQTT Library kann ich mich aber nicht per ip-adresse mit diesem Broker verbinden, es kommt immer Fehlercode 5 (ich verwende den Methodenkopf mit Username und Password)\nIch hoffe, dass man mir hier helfen kann\u0026hellip;\n","permalink":"https://iot.fkainka.de/forum/topic/nanoesp_mqtt-mit-mosquitto-server/","summary":"\u003cp\u003eIch habe einen Raspberry Pi mit Mosquitto am laufen.\u003cbr\u003e\nMit der connect(\u0026hellip;); Methode der NanoESP_MQTT Library kann ich mich aber nicht per ip-adresse mit diesem Broker verbinden, es kommt immer Fehlercode 5 (ich verwende den Methodenkopf mit Username und Password)\u003c/p\u003e\n\u003cp\u003eIch hoffe, dass man mir hier helfen kann\u0026hellip;\u003c/p\u003e","title":"NanoESP_MQTT mit Mosquitto Server"},{"content":"Hallo!\nIch würde gerne meinen Server aufwecken.\nIch habe mehrere Umsetzungen mit dem Ethernet-Board gefunden, weiß jedoch nicht, wie ich das genau auf das NanoESP übertragen kann.\nKlappt es, das MagicPacket mit AT+CIPSEND zu senden, wenn ich den NanoESP über WLAN mit meinem Router verbinde, an dem der Server mit einem Kabel hängt?\nEs wäre schön, wenn Ihr mir hier helfen könntet.\nDanke!\n","permalink":"https://iot.fkainka.de/forum/topic/wake-on-lan-mit-dem-nanoesp/","summary":"\u003cp\u003eHallo!\u003c/p\u003e\n\u003cp\u003eIch würde gerne meinen Server aufwecken.\u003cbr\u003e\nIch habe mehrere Umsetzungen mit dem Ethernet-Board gefunden, weiß jedoch nicht, wie ich das genau auf das NanoESP übertragen kann.\u003cbr\u003e\nKlappt es, das MagicPacket mit AT+CIPSEND zu senden, wenn ich den NanoESP über WLAN mit meinem Router verbinde, an dem der Server mit einem Kabel hängt?\u003c/p\u003e\n\u003cp\u003eEs wäre schön, wenn Ihr mir hier helfen könntet.\u003cbr\u003e\nDanke!\u003c/p\u003e","title":"Wake on Lan mit dem NanoESP"},{"content":"Hallo ,\nIch habe folgendes Problem, wenn ich dem Programm meine WLAN und Passwort reinschreibe, kommt die Fehlermeldung Error WLAN und Passwort.\nDie anderen versuche funktionieren.\nWeis hier jemand woran das liegt?\nDanke\n","permalink":"https://iot.fkainka.de/forum/topic/helligkeit-messen-und-senden-an-thinkspeak/","summary":"\u003cp\u003eHallo ,\u003c/p\u003e\n\u003cp\u003eIch habe folgendes Problem, wenn ich dem Programm meine WLAN und Passwort reinschreibe, kommt die Fehlermeldung Error WLAN und Passwort.\u003cbr\u003e\nDie anderen versuche funktionieren.\u003cbr\u003e\nWeis hier jemand woran das liegt?\u003c/p\u003e\n\u003cp\u003eDanke\u003c/p\u003e","title":"Helligkeit messen und senden an Thinkspeak"},{"content":"Hat schon einmal jemand erfolgreich die Nanoesp MQTT Library mit einem anderen Broker speziell dem von Thingspeak benutzt?\nWenn ich mir die Thingspeak API anschaue sollte ich doch eigentlich mit dem Befehl\n(mqtt.connect(0, \u0026quot;mqtt.thingspeak.com\u0026quot;, 1883, mqttId)\neine Verbindung zum Broker bekommen können, was mache ich da falsch?\nIch erhalte nur den Fehler \u0026ldquo;error connecting\u0026rdquo;\nZum weiteren Verständnis:\nWenn der Fehler behoben ist müsste ich im nächsten Schritt doch dann meine Nachricht newMsg = {\u0026quot;channels/\u0026lt;em\u0026gt;\u0026lt;ChannelID\u0026gt;\u0026lt;/em\u0026gt;/publish/fields/field1/\u0026lt;em\u0026gt;\u0026lt;ApiKey\u0026gt;\u0026lt;/em\u0026gt;\u0026quot;, \u0026quot;0\u0026quot;, 0, true}; mit\nmqtt.publish(0, \u0026amp;newMsg) schicken können?\n3 Antworten jpb – 09.02.2017\ninzwischen bin ich ein Stück weiter gekommen und erreiche ein erfolgreiches connect hierfür ist es bei Thingspeak notwendig dass das CleanSession flag auf 1 und lastWill flag auf 0 steht.\ndies erreiche ich im meinem Programm durch:\nmqtt_msg lastWill = {\u0026#34;\u0026#34;, \u0026#34;\u0026#34;, 0, true}; if (mqtt.connect(0,\u0026#34;mqtt.thingspeak.com\u0026#34;, 1883 , mqttId, true, 120, \u0026amp;lastWill, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;)) { Serial.println(F(\u0026#34;Connected to Broker\u0026#34;)); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); setupOk = false; }; Jetzt bleibt noch das Publish zu lösen hier funktioniert es noch nicht wie gedacht und ich bin für Ratschläge dankbar.\nYunaria – 19.02.2017\nHallo jpb,\nmöglicherweise konnten Sie das Problem schon lösen. Falls nicht -\nhier die wesentlichen Zeilen aus einem funktionierendem Programm, die für Sie interessant sein könnten.\nLastwill usw. behandle ich im Moment (noch) nicht.\nMir ging es einmal rein darum, an ThingSpeak per MQQT Werte zu senden.\nmqtt_msg newPing; void setup() { newPing = {\u0026#34;channels/210619/publish/fields/field8/\u0026#34; + ThingSpeakKEY, \u0026#34;0\u0026#34;}; if (mqtt.connect(0, \u0026#34;mqtt.thingspeak.com\u0026#34;, 1883, ThingSpeakKEY)) { Serial.println(\u0026#34;Mit ThingSpeak MQTT verbunden\u0026#34;); digitalWrite(MQTTLED, HIGH); } else { Serial.println(\u0026#34;Verbinden mit ThingSpeak MQTT gescheitert\u0026#34;); digitalWrite(MQTTLED, LOW); } } void loop() { sendValues(); delay(15000); } void sendValues() { newPing.value = String(holePing()); mqtt.publish(0, \u0026amp;newPing); } int holePing() { int pingZeit = nanoesp.ping(\u0026#34;www.google.at\u0026#34;); return pingZeit; } Abgeleitet ist dies von http://iot.fkainka.de/day23-2016\nLG Yunaria\nYunaria – 20.02.2017\nNochmal ich\u0026hellip;\nDas gleichzeitige Übertragen mehrerer Sensordaten / mehrerer Felder funktioniert auch auf diese Art.\nDen unschönen Code bitte ich zu entschuldigen.\nDie relevanten Zeilen:\nmqtt_msg newData; void setup() { newData = {\u0026#34;channels/210619/publish/\u0026#34; + ThingSpeakKEY, \u0026#34;0\u0026#34;}; if (mqtt.connect(0, \u0026#34;mqtt.thingspeak.com\u0026#34;, 1883, ThingSpeakKEY)) { Serial.println(\u0026#34;Mit ThingSpeak MQTT verbunden\u0026#34;); } else { Serial.println(\u0026#34;Verbinden mit ThingSpeak MQTT gescheitert\u0026#34;); } } void loop() { sendValues(); delay(15000); } void sendValues() { newData.value = String(\u0026#34;field1=\u0026#34; + String(getDHT11Temp()) + \u0026#34;\u0026amp;field2=\u0026#34; + String(getDHT11Hum()) + \u0026#34;\u0026amp;field3=\u0026#34; + String(getDS18B20()) + \u0026#34;\u0026amp;field4=\u0026#34; + String(getLDR()) + \u0026#34;\u0026amp;field5=\u0026#34; + String(getPing())); mqtt.publish(0, \u0026amp;newData); delay(500); } //--------------------------------Sensoren---------------------------------------------------- float getDHT11Temp() { float DHTtemp = dht.readTemperature(); return DHTtemp; } int getDHT11Hum() { float DHThum = dht.readHumidity(); return DHThum; } double getDS18B20() { sensors.requestTemperatures(); double SensorDS = sensors.getTempCByIndex(0); return SensorDS; } int getPing() { int pingZeit=0; do { pingZeit = nanoesp.ping(\u0026#34;www.google.at\u0026#34;); } while (pingZeit\u0026lt;=0); return pingZeit; } double getLDR() { double LDRinput = analogRead(LDR); LDRinput = LDRinput/10; return LDRinput; } LG Yunaria\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/mqtt-library-und-thingspeak-api/","summary":"\u003cp\u003eHat schon einmal jemand erfolgreich die Nanoesp MQTT Library mit einem anderen Broker speziell dem von Thingspeak benutzt?\u003c/p\u003e\n\u003cp\u003eWenn ich mir die \u003ca href=\"https://de.mathworks.com/help/thingspeak/mqtt-api.html\"\u003eThingspeak API\u003c/a\u003e anschaue sollte ich doch eigentlich mit dem Befehl\u003cbr\u003e\n\u003ccode\u003e(mqtt.connect(0, \u0026quot;mqtt.thingspeak.com\u0026quot;, 1883, mqttId)\u003c/code\u003e\u003cbr\u003e\neine Verbindung zum Broker bekommen können, was mache ich da falsch?\u003cbr\u003e\nIch erhalte nur den Fehler \u0026ldquo;error connecting\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eZum weiteren Verständnis:\u003cbr\u003e\nWenn der Fehler behoben ist müsste ich im nächsten Schritt doch dann meine Nachricht \u003ccode\u003enewMsg = {\u0026quot;channels/\u0026lt;em\u0026gt;\u0026lt;ChannelID\u0026gt;\u0026lt;/em\u0026gt;/publish/fields/field1/\u0026lt;em\u0026gt;\u0026lt;ApiKey\u0026gt;\u0026lt;/em\u0026gt;\u0026quot;, \u0026quot;0\u0026quot;, 0, true};\u003c/code\u003e mit\u003cbr\u003e\n\u003ccode\u003emqtt.publish(0, \u0026amp;newMsg)\u003c/code\u003e schicken können?\u003c/p\u003e","title":"MQTT Library und Thingspeak API"},{"content":"Hallo, wir haben es endlich geschafft, uns an die Bastelei mit dem erst Anfang Januar gekauften Kalender zu machen. Bis Tag 5 sind wir ohne Probleme gekommen – dann haben wir gemerkt, dass das NanoESP offensichtlich unser Internet/unsere Kabelbox teilweise lahmlegt, wenn es sich über unseren Router mit dem Internet verbindet. Wir sind auf dem Dorf und unsere Internetgeschwindigkeit ist nicht berauschend, zwischen 2 und 4 Mbps. Unser Kabelfernsehen läuft ebenfalls über den Router. Es schien so, als würde die Kabelbox bei jedem Verbinden des NanoESP mit dem Internet stoppen (das Fernsehbild friert ein), nach einer Weile startet sie dann wieder, aber seitdem stoppt sie immer mal wieder. Bin etwas ratlos, und traue mich jetzt erstmal nicht, das NanoESP für weitere Tests nochmal anzuschließen, da der Mann vom Internetanbieter (dem ich allerdings nichts von unseren „Experimenten“ verraten habe) meinte, da wäre etwas dekonfiguriert und er müsse uns jemanden vorbeischicken da unser Router sonst bald den Geist aufgeben könnte…\n","permalink":"https://iot.fkainka.de/forum/topic/pretzelboard-schluckt-internet/","summary":"\u003cp\u003eHallo, wir haben es endlich geschafft, uns an die Bastelei mit dem erst Anfang Januar gekauften Kalender zu machen. Bis Tag 5 sind wir ohne Probleme gekommen – dann haben wir gemerkt, dass das NanoESP offensichtlich unser Internet/unsere Kabelbox teilweise lahmlegt, wenn es sich über unseren Router mit dem Internet verbindet. Wir sind auf dem Dorf und unsere Internetgeschwindigkeit ist nicht berauschend, zwischen 2 und 4 Mbps. Unser Kabelfernsehen läuft ebenfalls über den Router. Es schien so, als würde die Kabelbox bei jedem Verbinden des NanoESP mit dem Internet stoppen (das Fernsehbild friert ein), nach einer Weile startet sie dann wieder, aber seitdem stoppt sie immer mal wieder. Bin etwas ratlos, und traue mich jetzt erstmal nicht, das NanoESP für weitere Tests nochmal anzuschließen, da der Mann vom Internetanbieter (dem ich allerdings nichts von unseren „Experimenten“ verraten habe) meinte, da wäre etwas dekonfiguriert und er müsse uns jemanden vorbeischicken da unser Router sonst bald den Geist aufgeben könnte…\u003c/p\u003e","title":"Pretzelboard schluckt Internet?"},{"content":"Hallo,\nkann mir wer sagen, warum ich am LCD-Display keine Stromversorgung bzw. Anzeige habe (Defekt oder etwas falsch angeschlossen)? Danke für Auskunft.\nGruß\nPeter\nAnhänge:\n1 Antwort Antonireykern – 04.04.2017\nHallo IoT!\nDein Problem ist, dass bei dem Display VSS und VDD an 5V liegen.\nAußerdem ist es besser, ein Potentiometer an 5v, Gnd und V0 zu stecken, als einen Widerstand.\nIch habe noch ein Bild beigelegt.\nWenn es dann immernoch nicht funktioniert, poste deinen Code bitte hier.\nlg Antonireykern\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/lcd-display/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nkann mir wer sagen, warum ich am LCD-Display keine Stromversorgung bzw. Anzeige habe (Defekt oder etwas falsch angeschlossen)? Danke für Auskunft.\u003c/p\u003e\n\u003cp\u003eGruß\u003cbr\u003e\nPeter\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"K1600_20170125_132649.jpg\" loading=\"lazy\" src=\"/images/2017/01/K1600_20170125_132649.jpg\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAntonireykern\u003c/strong\u003e – 04.04.2017\u003c/p\u003e\n\u003cp\u003eHallo IoT!\u003c/p\u003e\n\u003cp\u003eDein Problem ist, dass bei dem Display VSS \u003cstrong\u003eund\u003c/strong\u003e VDD an 5V liegen.\u003cbr\u003e\nAußerdem ist es besser, ein Potentiometer an 5v, Gnd und V0 zu stecken, als einen Widerstand.\u003c/p\u003e\n\u003cp\u003eIch habe noch ein Bild beigelegt.\u003c/p\u003e\n\u003cp\u003eWenn es dann immernoch nicht funktioniert, poste deinen Code bitte hier.\u003c/p\u003e","title":"LCD-Display"},{"content":"India-Results.org\nwill provide All Board Results of all States in India like\nMizoram 12th Results\nTSOSS Results\nMPOSS 10th Results\n","permalink":"https://iot.fkainka.de/forum/topic/all-india-results/","summary":"\u003cp\u003e\u003ca href=\"http://india-result.org/\"\u003eIndia-Results.org\u003c/a\u003e\u003cbr\u003e\nwill provide All Board Results of all States in India like\u003cbr\u003e\n\u003ca href=\"http://india-result.org/results/mizoram-12th-class-results-2017-mbse-hsslc-result\"\u003eMizoram 12th Results\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://india-result.org/\"\u003eTSOSS Results\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://india-result.org/\"\u003eMPOSS 10th Results\u003c/a\u003e\u003c/p\u003e","title":"All India Results"},{"content":"Hallo zusammen,\nwürde gern die Sensordaten an meinen PC senden.\nMir fehlt noch ein bisschen als Anfänger der Überblick was mit dem ESP möglich ist.\nAuf dem PC läuft ein Webserver welche die Sensordaten einfach per GET oder POST entgegenehmen soll.\njedoch ist in den Kalender-Beispielen immer nur die Umgekehrte Variante enthalten.\nAlso der Browser ruft den ESP als Webserver auf.\nIch will jedoch im ca. 5 Minuten rythmus (im loop-Funktion) die Sonsor-Werte an den PC übertragen.\nalso quasi folgende URL aufrufen \u0026ldquo;http://192.168.1.40/sensor1.php?wert=123\u0026rdquo;\n#include \u0026lt;NanoESP.h\u0026gt;\n#include \u0026lt;NanoESP_HTTP.h\u0026gt;\n#include \u0026lt;SoftwareSerial.h\u0026gt;\n#define SSID \u0026ldquo;abc123\u0026rdquo;\n#define PASSWORD \u0026ldquo;xxxxxx\u0026rdquo;\nNanoESP nanoesp = NanoESP();\nNanoESP_HTTP http = NanoESP_HTTP(nanoesp);\nvoid setup() {\nSerial.begin(19200);\nnanoesp.init();\nnanoesp.configWifiMode(STATION);\nif (nanoesp.wifiConnected()) {\nSerial.println(\u0026ldquo;WLAN verbunden\u0026rdquo;);\nSerial.println(nanoesp.getIp());\n} else {\nSerial.println(\u0026ldquo;WLAN nicht verbunden\u0026rdquo;);\n}\n}\nvoid loop() {\nint wert;\nhttp.sendRequest(1, \u0026ldquo;GET\u0026rdquo;, \u0026ldquo;http://192.168.1.40/sensor1.php?wert=\u0026rdquo; + String(wert));\ndelay(5000);\n}\nKönnte ihr mir kurz ein Hinweis geben. Google gibt mir immer nur Seiten wie man den nanoESP im Browser erreicht.\nDie URL soll aber vom ESP aufgerufen werden und so der Wert übertragen werden.\nGruß Christian\n3 Antworten klaus – 15.01.2017\nHast Du es denn mal ausprobiert? Ich kenne jetzt die aktuelle Bibliothek nicht. Früher musste man mal die PINs für den Softwareserial mit schicken. Mag aber sein, dass das inzwischen fest eingebaut ist, da ja eh fest verdrahtet. Ansonsten sieht es doch schon gut aus.\nchristian06 – 16.01.2017\nJa, den Code habe ich aufgespielt auf den Nano, jedoch wird auf dem PC wird nix geloggt über einen Aufruf der URL.\nVom anderen PC und Handy ist dies kein Problem.\nIst den die Funktion \u0026ldquo;sendRequest\u0026rdquo; die richtige?\nmkcoge – 03.07.2019\nBis vor einer Woche hatte ich ebenfalls nach einer Lösung des Problems gesucht und nichts gefunden. Nach einigem hin und her probieren und schierer verzweifelter Aufgabe habe ich nun eine funktionierende Lösung und die ist einfach: \u0026ldquo;http://\u0026rdquo; darf nicht mitgegeben werden. Es muss direkt die Ziel-Adresse angegeben werden, also http.sendRequest(1,\u0026quot;GET\u0026quot;,\u0026quot;192.168.1.1/ziel.php\u0026quot;); anstelle von http.sendRequest(1,\u0026quot;GET\u0026quot;,\u0026quot;http://192.168.1.1/ziel.php\u0026quot;); Dies war aber eigentlich noch der einfachere Teil. In meinem Fall möchte ich gleich mehrere Variablen mit der URL mitsenden. Der Aufbau http.sendRequest(1, \u0026quot;GET\u0026quot;, \u0026quot;http://192.168.1.1/ziel.php?wert=\u0026quot; + String(wert)); hat für mich somit nicht ausgereicht, da ich Werte aus Variablen \u0026ldquo;Temperatur, Humidity und einer Raum-Bezeichnung\u0026rdquo; mitgeben wolle. Ich habe das ganze nun so gelöst, dass ich mehrere Abschnitte der URL in einzelne Variablen aufgeteilt und schlussendlich wieder in eine Variable zusammengesetzt habe. Klingt ziemlich unelegant und lässt sich sicher besser lösen aber fürs erste Funktioniert alles wie es soll, aussehen tut das ganze so:\n// Nano ESP Library and Initialize #include // NanoESP Library #include // Library for NanoESP http-connection NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); // DHT11 Sensor // Include and initialize #include \u0026#34;DHT.h\u0026#34; DHT dht; // Onboard LED #define LED 13 // WLAN settings #define SSID \u0026#34;MySSID\u0026#34; // set SSID #define WLANPW \u0026#34;MyWLANPW\u0026#34; // set WLAN password // environment settings String debug = \u0026#34;off\u0026#34;; // debug [on] or [off] String senddata = \u0026#34;on\u0026#34;; // sendind data [on] or [off] String wlan = \u0026#34;on\u0026#34;; // WLAN [on] or [off] long var_delay = 30000; // define loop run-time String var_room; // define variable for room // function: flashing onboard LED 15 times and then constant void onboardLED() { for (int i = 0; i \u0026lt; 15; i++) { digitalWrite(LED, HIGH); // LED on delay(200); // wait 0.2 seconds digitalWrite(LED, LOW); // LED off delay(200); // wait 0.2 seconds digitalWrite(LED, HIGH); // LED on } } void setup() { Serial.begin(19200); //initialize Serial console and console speed Serial.println(\u0026#34;booting...\u0026#34;); Serial.println(\u0026#34;initialisiere nanoesp\u0026#34;); nanoesp.init(); // initialize NanoESP if(wlan == \u0026#34;on\u0026#34;) { Serial.println(\u0026#34;initialisiere WLAN\u0026#34;); if (!nanoesp.configWifi(STATION, SSID, WLANPW)) { Serial.println(\u0026#34;Error: WLAN not connected\u0026#34;); Serial.println(\u0026#34;restarting...\u0026#34;); delay(5000); // wait 5 seconds asm volatile (\u0026#34; jmp 0\u0026#34;); // restart NanoESP if WLAN could not connect } else { Serial.println(\u0026#34;WLAN connected\u0026#34;); onboardLED(); // flasing and activate Onboard LED if WLAN connection is established Serial.println(\u0026#34;\u0026#34;); Serial.println(\u0026#34;Connection info: \u0026#34;); Serial.println(nanoesp.getIp()); // show connection information (IP-Address and MAC-Address) } } else { Serial.println(\u0026#34;WLAN deactivated\u0026#34;); } if(senddata == \u0026#34;on\u0026#34;) { Serial.println(\u0026#34;sending Data on\\n\u0026#34;); } else { Serial.println(\u0026#34;sending data deactivated\u0026#34;); Serial.println(\u0026#34;\\n\u0026#34;); } // initialize DHT11 Serial.println(\u0026#34;initialisiere DHT11\u0026#34;); dht.setup(2); // data pin 2 delay(5000); //wait 5 seconds Serial.print(\u0026#34;Status DHT11 Sensor: \u0026#34;); Serial.println(dht.getStatusString()); Serial.println(\u0026#34;\\n\u0026#34;); } void loop() { if (senddata == \u0026#34;on\u0026#34;) { var_room = \u0026#34;Estrich\u0026#34;; // define Sensor Name in variable float var_temperature = dht.getTemperature() -1; // DHT11 temperature with calibration -1 float var_humidity = dht.getHumidity() -18; // DHT11 humidity with calibration -18 if (debug == \u0026#34;on\u0026#34;) { Serial.println(\u0026#34;############## DHT11 Debug ##############\u0026#34;); Serial.println(var_room); Serial.println(var_temperature); Serial.println(var_humidity); } String url_val1 = \u0026#34;192.168.1.1/test-area/test-area.php?room=\u0026#34;; // URL part 1 (target and room) String url_val2 = \u0026#34;\u0026amp;temperature=\u0026#34;; // URL part 2 (temperature) String url_val3 = \u0026#34;\u0026amp;humidity=\u0026#34;; // URL part 3 (humidity) String url = url_val1 + var_room + url_val2 + var_temperature + url_val3 + var_humidity; // URL complete with part 1-3 and room and DHT-variable Serial.println(url); // print complete string in console http.sendRequest(1,\u0026#34;GET\u0026#34;,url); // send complete URL delay(var_delay); // wait in variable defined time for next loop run } } Falls hier doch noch wer aktiv ist und gleich Verbesserungen angeben kann, die sind sehr Willkommen ;)\ngrüsse mkcoge\nPS. hoffe es wurde kein doppelpost, das Forum hier ist irgendwie\u0026hellip;, altbacken :/\n","permalink":"https://iot.fkainka.de/forum/topic/startschwierigkeiten-http-client/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003ewürde gern die Sensordaten an meinen PC senden.\u003cbr\u003e\nMir fehlt noch ein bisschen als Anfänger der Überblick was mit dem ESP möglich ist.\u003c/p\u003e\n\u003cp\u003eAuf dem PC läuft ein Webserver welche die Sensordaten einfach per GET oder POST entgegenehmen soll.\u003cbr\u003e\njedoch ist in den Kalender-Beispielen immer nur die Umgekehrte Variante enthalten.\u003cbr\u003e\nAlso der Browser ruft den ESP als Webserver auf.\u003cbr\u003e\nIch will jedoch im ca. 5 Minuten rythmus (im loop-Funktion) die Sonsor-Werte an den PC übertragen.\u003cbr\u003e\nalso quasi folgende URL aufrufen \u0026ldquo;http://192.168.1.40/sensor1.php?wert=123\u0026rdquo;\u003c/p\u003e","title":"Startschwierigkeiten - HTTP-Client"},{"content":"Bin momentan absolut gefrustet. Ich habe mir das Conrad-Components Profi-Lernpaket Internet of Things gegönnt.\nDie Dateien runtergeladen und einiges läuft ja auch. Allerdings sind viele Programme absolut nicht nachvollziehbar, weil z.B. dauernd ein LCD-Display mitprogrammiert wird, das aber gar nicht im Lieferumfang ist.\nJetzt versuche ich seit Tagen das Programm Day9_TCPAutoTime. Es gibt aber immer die Fehlermeldung weil vermutlich die Time-Library nicht gefunden wird. Steht aber in dem Verzeichnis, wie die anderen ja auch.\nMein Problem ist, dass es durch die beiden Adventskalender 2015 und 2015 schon mal unterschiedliche Programme und Libraries gibt. Hinzu kommt das Conrad-Lernpaket und eines von Franzis (vom dem wohl meine Programmdateien ursprünglich stammen - denn da ist ein LCD dabei).\nMir fehlt also irgendwie eine klare Linie an der ich mich als Anfänger entlang hangeln kann. Sind die Libraries zu jeder Version verwendbar, wo sind die Unterschiede in den Programmen usw.\nUrsprünglich wollte ich den Adventskalender 2016 besorgen. Auf der Conrad-Web-Seite stand, dass der aber bereits ausverkauft sei (im Laden hier in der Nähe und auch online). In der ersten Januarwoche war ich dort im Laden und was glaubt ihr was da Stand: mindestens 20 Kästen der Adventskalender und das auch noch im Preis reduziert !!! -\u0026gt; FRUST hoch drei\nGruß\nder Saasemer\n1 Antwort Reiny – 21.01.2017\nDa muss ich Dir leider nur Recht geben. Ein Wirrwar von Versionen mit heißen Patch-Händchen zusammengeworfen, dazu nahezu Null-Doku, clever verkauft und nun friß Vogel oder strib. Man sieht ja an den Antworten in diesem Forum, viel Hilfe kommt da nicht. Schade, das Board und auch die neuen nanoesp Bibliotheken haben sicher viel Mühe und Fleiß erfordert und sind voller toller Ideen. Leider ist das Ergebnis nicht so ganz zufriedenstellend. Ich finde einfach nicht das Forum oder die Hilfeseite, die uns da raus hilft.\nSobald ich was habe, gebe ich Bescheid.\nGruß Reiny\n","permalink":"https://iot.fkainka.de/forum/topic/bin-zur-zeit-absolut-unzufrieden-kritik/","summary":"\u003cp\u003eBin momentan absolut gefrustet. Ich habe mir das Conrad-Components Profi-Lernpaket Internet of Things gegönnt.\u003cbr\u003e\nDie Dateien runtergeladen und einiges läuft ja auch. Allerdings sind viele Programme absolut nicht nachvollziehbar, weil z.B. dauernd ein LCD-Display mitprogrammiert wird, das aber gar nicht im Lieferumfang ist.\u003cbr\u003e\nJetzt versuche ich seit Tagen das Programm Day9_TCPAutoTime. Es gibt aber immer die Fehlermeldung weil vermutlich die Time-Library nicht gefunden wird. Steht aber in dem Verzeichnis, wie die anderen ja auch.\u003cbr\u003e\nMein Problem ist, dass es durch die beiden Adventskalender 2015 und 2015 schon mal unterschiedliche Programme und Libraries gibt. Hinzu kommt das Conrad-Lernpaket und eines von Franzis (vom dem wohl meine Programmdateien ursprünglich stammen - denn da ist ein LCD dabei).\u003cbr\u003e\nMir fehlt also irgendwie eine klare Linie an der ich mich als Anfänger entlang hangeln kann. Sind die Libraries zu jeder Version verwendbar, wo sind die Unterschiede in den Programmen usw.\u003cbr\u003e\nUrsprünglich wollte ich den Adventskalender 2016 besorgen. Auf der Conrad-Web-Seite stand, dass der aber bereits ausverkauft sei (im Laden hier in der Nähe und auch online). In der ersten Januarwoche war ich dort im Laden und was glaubt ihr was da Stand: mindestens 20 Kästen der Adventskalender und das auch noch im Preis reduziert !!! -\u0026gt; FRUST hoch drei\u003c/p\u003e","title":"Bin zur Zeit absolut unzufrieden - Kritik"},{"content":"Hallo,\nich kann mit meinem Board keine Verbindung zu meinem A1 WLAN Router aufbauen. Habe das Board standardmäßig lt. Handbuch konfiguriert.\nIch habe eine WPA2-Verschlüsselung. Kann hier jemand weiterhelfen? Danke.\nAT+CWLAP\n+CWLAP:(4,\u0026ldquo;A1-fd1ef0\u0026rdquo;,-57,\u0026ldquo;xx:xx:xx:xx:xx:xx\u0026rdquo;,6)\nOK\nAT+CWJAP=\u0026ldquo;MyNanoESP\u0026rdquo;,\u0026ldquo;xxxxxx\u0026rdquo;\n+CWJAP:3\nFAIL Peter\n10 Antworten klaus – 14.01.2017\nHallo Peter,\nalso zum einen benutzt Du veraltete Befehle (wobei ich jetzt nicht genau weiß, welche Firmware auf den aktuellen Boards ist). Die neuere Doku findest Du z.B. hier: https://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf\nDas ist aber derzeit noch kein Problem, da die alten Befehle noch unterstützt werden.\nMeine Vermutung ist eher, dass Du den falschen Modus eingestellt hast. Schau mal mit AT+CWMODE=?, welcher Modus eingestellt ist. Es sollte 1 oder 3 sein.\nDie nächste Sache könnten vielleicht falsche Anführungszeichen durch Copy\u0026amp;Paste sein. Falls Du es kopiert hast, gib es mal komplett per Hand ein. Ich gehe ja mal davon aus, dass Du die SSID und das Passwort durch Deines ersetzt hast. Nun kenne ich ja Dein Passwort nicht. Eine dritte Möglichkeit könnten eventuell problematische Zeichen im Passwort sein.\nSo, ich hoffe mal, dass eine meiner Vermutungen die Ursache treffen.\nIoT – 14.01.2017\nHallo Klaus,\nhabe das Ganze nochmals durchgecheckt. Leider ohne Erfolg.\n* CWMode=1\n* Anführungszeichen manuell eingegeben\n* Passwort - wie ein Protokoll (kann aber auch den Netzwerknamen und Passwort nicht mehr umändern?)\nAT+CWSAP?\n+CWSAP:\u0026ldquo;MyNanoESP\u0026rdquo;,\u0026ldquo;MyPassword\u0026rdquo;,5,3\nOK\nAT+CWMODE=1\nOK\nAT+CWLAP\n+CWLAP:(4,\u0026ldquo;A1-fd1ef0\u0026rdquo;,-57,\u0026ldquo;xx:xx:xx:xx:xx:xx\u0026rdquo;,6)\nOK\nAT+CWJAP=\u0026ldquo;MyNanoESP\u0026rdquo;,\u0026ldquo;xxxxxx\u0026rdquo;\n+CWJAP:3\nFAIL klaus – 14.01.2017\nIch meinte nicht nur die Anführungszeichen von Hand eingeben, sondern wirklich die komplette Zeile. Kann ja sien, dass da noch irgendwelche unsichtbaren Zeichen drin sind.\nAber nochmal die Frage:\nHast Du wirklich\nAT+CWJAP=“MyNanoESP“,“xxxxxx“\neingegeben?\nklaus – 14.01.2017\nIch habe gerade eine neuere Version der Doku gefunden: http://www.electrodragon.com/w/images/f/ff/4a-esp8266_at_instruction_set_en_%281%29.pdf. Hier sind die Error-Codes aufgelistet. Dein Error3 bedeutet also, dass Deine SSID nicht stimmt. Meine Vermutung mit der letzten Frage scheint sich also zu bestätigen.\nIoT – 14.01.2017\nJa -hab die komplette Zeile nochmals eingegeben.\nAuch Netzwerknamen und Passwort genauso eingeben.\nklaus – 14.01.2017\nUnd genau da dürfte das Problem liegen. Du hast die SSID und das Passwort Deines ESP-Boards eingegeben. Das ist daber dafür wenn Du mit dem Board einen AP simulierst. Da Du aber nun im Station-Mode bist, ist der AP abgeschaltet. Außerdem würde das ja auch nix bringen, wenn Du Dich mit Dir selbst verbindest.\nDu musst die SSID und das Passwort Deines WLAN eingeben, also\nAT+CWJAP=\u0026quot;A1-fd1ef0\u0026quot;,\u0026quot;xxxxx\u0026quot;\nStatt des xxx natürlich Dein Passwort.\nIoT – 14.01.2017\nJa danke. Du hast natürlich recht.\nklaus – 14.01.2017\nKlappt es jetzt?\nIoT – 15.01.2017\nJa - habe jetzt Zugang zum WLAN-Router.\nklaus – 15.01.2017\nSuper dass ich helfen konnte. Manchmal ist die Lösung so nahe, dass man gar nicht darauf kommt.\n","permalink":"https://iot.fkainka.de/forum/topic/wpa2-verschluesselung/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nich kann mit meinem Board keine Verbindung zu meinem A1 WLAN Router aufbauen. Habe das Board standardmäßig lt. Handbuch konfiguriert.\u003cbr\u003e\nIch habe eine WPA2-Verschlüsselung. Kann hier jemand weiterhelfen? Danke.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eAT+CWLAP\u003c/p\u003e\n\u003cp\u003e+CWLAP:(4,\u0026ldquo;A1-fd1ef0\u0026rdquo;,-57,\u0026ldquo;xx:xx:xx:xx:xx:xx\u0026rdquo;,6)\u003c/p\u003e\n\u003cp\u003eOK\u003cbr\u003e\nAT+CWJAP=\u0026ldquo;MyNanoESP\u0026rdquo;,\u0026ldquo;xxxxxx\u0026rdquo;\u003c/p\u003e\n\u003ch2 id=\"fail\"\u003e+CWJAP:3\u003cbr\u003e\nFAIL\u003c/h2\u003e\n\u003cp\u003ePeter\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"10-antworten\"\u003e10 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 14.01.2017\u003c/p\u003e\n\u003cp\u003eHallo Peter,\u003c/p\u003e\n\u003cp\u003ealso zum einen benutzt Du veraltete Befehle (wobei ich jetzt nicht genau weiß, welche Firmware auf den aktuellen Boards ist). Die neuere Doku findest Du z.B. hier: \u003ca href=\"https://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf\"\u003ehttps://cdn.sparkfun.com/assets/learn_tutorials/4/0/3/4A-ESP8266__AT_Instruction_Set__EN_v0.30.pdf\u003c/a\u003e\u003cbr\u003e\nDas ist aber derzeit noch kein Problem, da die alten Befehle noch unterstützt werden.\u003c/p\u003e","title":"WPA2-Verschlüsselung"},{"content":"Hallo,\nich habe das Conrad Profi-Lernpaket (also nicht genau den Adventskalender, aber anscheinend identisch).\nIch wollte die Uhrzeit entsprechend Tag 9 erstellen, bekomme aber viele Fehlermeldungen, u.a.:\nDay9_TCPAutoTime:37: error: \u0026lsquo;hour\u0026rsquo; was not declared in this scope\nif (hour() \u0026lt;= 9) shour = \u0026ldquo;0\u0026rdquo; + String(hour()); else shour = String(hour()); // adjust for 0-9\nexit status 1\n\u0026lsquo;hour\u0026rsquo; was not declared in this scope\nKann mir Jemand weiterhelfen?\nDanke\nder Saasemer\n2 Antworten fk – 23.01.2017\nHi,\nich konnte den Fehler nach einem Update der Arduino Version reproduzieren.\nDas Problem ließ sich lösen, indem ich im Quelltext in Zeile 18 den #inlcude Befehl in #include geändert habe.\nViele Grüße,\nFK\nsaasemer – 25.01.2017\nSo, jetzt habe ich die Lösung\nzunächst muss es heißen: TimeLib.h (Danke Herr Kainka)\nund außerdem gibt es mittlerweile ein update der Library\n","permalink":"https://iot.fkainka.de/forum/topic/internetuhr/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe das Conrad Profi-Lernpaket (also nicht genau den Adventskalender, aber anscheinend identisch).\u003cbr\u003e\nIch wollte die Uhrzeit entsprechend Tag 9 erstellen, bekomme aber viele Fehlermeldungen, u.a.:\u003c/p\u003e\n\u003cp\u003eDay9_TCPAutoTime:37: error: \u0026lsquo;hour\u0026rsquo; was not declared in this scope\u003cbr\u003e\nif (hour() \u0026lt;= 9) shour = \u0026ldquo;0\u0026rdquo; + String(hour()); else shour = String(hour()); // adjust for 0-9\u003c/p\u003e\n\u003cp\u003eexit status 1\u003cbr\u003e\n\u0026lsquo;hour\u0026rsquo; was not declared in this scope\u003c/p\u003e\n\u003cp\u003eKann mir Jemand weiterhelfen?\u003c/p\u003e\n\u003cp\u003eDanke\u003cbr\u003e\nder Saasemer\u003c/p\u003e","title":"Internetuhr"},{"content":"Hallo,\ndieses schludrige Teil treibt mich in den Wahnsinn. Nachdem Stunden und Tage vertan waren, um das Programm und die Hardware so umzubiegen, dass es erst einmal (einmal wörtlich) läuft, ist keine Stabilität reinzubekommen. Mal läuft es nur unter der 192.168.4.1, mal auch unter meiner WLAN Adresse, mal gar nicht (z.B. nach Hardware-Reset). Mitunter werden auf der Webseite auch nur die Wertekolonnen z.B. event: temp data: 21.40 angezeigt. Mal ist aus ganz AUS oder irgendwie aus dem Takt. Durch zusätzlich Ausgaben kann ich im COM-Port sehen, was er so treibt. Sieht aus wie Murks:\nFinish WLAN Connect\nTCP Server Activ\nAT+CIFSR\n+CIFSR:APIP,\u0026ldquo;192.168.4.1\u0026rdquo;\n+CIFSR:APMAC,\u0026ldquo;xxx\u0026rdquo;\n+CIFSR:STAIP,\u0026ldquo;192.168.2.164\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;xxx\u0026rdquo;\nOK\nNew Request from id :0, method: GET, ressource: / parameter:\nNew Request from id :0, method: GET, ressource: / parameter:\nNew Request from id :0, method: GET, ressource: / parameter:\nNew Request from id :0, method: GET, ressource: /eventclimate parameter:\n0 Stream ID\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren \u0026lt;\u0026ndash; ab hier lebt die Webseite unter \u0026hellip;4.1\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nTestpunkt: Werte aktualisieren\nErr: AT+CIPSEND=0,23\nErr: AT+CIPSEND=0,26\nErr: AT+CIPSEND=0,27\nTestpunkt: Werte aktualisieren\nErr: AT+CIPSEND=0,23\nErr: AT+CIPSEND=0,26\nErr: AT+CIPSEND=0,27\nTestpunkt: Werte aktualisieren\nErr: AT+CIPSEND=0,23\nErr: AT+CIPSEND=0,26\nErr: AT+CIPSEND=0,27\nTestpunkt: Fehlerabbruch\nErr: AT+CIPCLOSE=0\nDas war\u0026rsquo;s dann. Ab hier kann man nur noch versuchen, durch Laden anderer Programme das Ding abzubrechen, denn in diesem Zustand hört er weder auf RESET noch INIT oder Strom-AUS.\nWeiß wer Rat?\nGruß\n","permalink":"https://iot.fkainka.de/forum/topic/tag-18-nanoesp-climate-fehlfunktionen-ohne-ende-mal-keine-werte-mal-absturz/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003edieses schludrige Teil treibt mich in den Wahnsinn. Nachdem Stunden und Tage vertan waren, um das Programm und die Hardware so umzubiegen, dass es erst einmal (einmal wörtlich) läuft, ist keine Stabilität reinzubekommen. Mal läuft es nur unter der 192.168.4.1, mal auch unter meiner WLAN Adresse, mal gar nicht (z.B. nach Hardware-Reset). Mitunter werden auf der Webseite auch nur die Wertekolonnen z.B. event: temp data: 21.40 angezeigt. Mal ist aus ganz AUS oder irgendwie aus dem Takt. Durch zusätzlich Ausgaben kann ich im COM-Port sehen, was er so treibt. Sieht aus wie Murks:\u003c/p\u003e","title":"Tag 18 NanoESP Climate - Fehlfunktionen ohne Ende? Mal keine Werte, mal Absturz."},{"content":"Ich habe mir das Buch Franzis Maker Kit Internet of Things gekauft. Habe nach der Vorgabe versuchtm, die Sourcen runterzuladen. Da komme ich derzeit nicht klar. Ich finde noch nicht einmal einen Button, Link, den ich drücken könnte, um die Sourcen zu erhalten. Was mache ich falsch?\nMFG Christian\n1 Antwort klaus – 11.01.2017\nHallo Christian,\nich kann Dir keinen direkten Link schicken und ich weiß auch nicht, was genau in dem Buch steht. Aber Franzis stellt heutzutage Downloads für Bücher auf der Internetseite http://buch.cd zur Verfügung. Dort gibst Du die letzten beiden Teile der ISBN ein (den letzten langen und kurzen Teil, incl. des Bindestrich). Diesen Download gibt es auch für das Makerkit. Dann kommst Du zu den Downloads. Du musst Dir dort ein Benutzerkonto erzeugen, wenn Du noch keines hast.\nGrüße,\nKlaus\n","permalink":"https://iot.fkainka.de/forum/topic/sourcen/","summary":"\u003cp\u003eIch habe mir das Buch Franzis Maker Kit Internet of Things gekauft. Habe nach der Vorgabe versuchtm, die Sourcen runterzuladen. Da komme ich derzeit nicht klar. Ich finde noch nicht einmal einen Button, Link, den ich drücken könnte, um die Sourcen zu erhalten. Was mache ich falsch?\u003c/p\u003e\n\u003cp\u003eMFG Christian\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 11.01.2017\u003c/p\u003e\n\u003cp\u003eHallo Christian,\u003c/p\u003e\n\u003cp\u003eich kann Dir keinen direkten Link schicken und ich weiß auch nicht, was genau in dem Buch steht. Aber Franzis stellt heutzutage Downloads für Bücher auf der Internetseite \u003ca href=\"http://buch.cd\"\u003ehttp://buch.cd\u003c/a\u003e zur Verfügung. Dort gibst Du die letzten beiden Teile der ISBN ein (den letzten langen und kurzen Teil, incl. des Bindestrich). Diesen Download gibt es auch für das Makerkit. Dann kommst Du zu den Downloads. Du musst Dir dort ein Benutzerkonto erzeugen, wenn Du noch keines hast.\u003c/p\u003e","title":"Sourcen"},{"content":"Hallo,\ndurch einen scheinbar noch nicht veröffentlichten Kommentar vom 2.12.2016 bin ich zufällig darauf gestoßen, dass es zwei Arduino-Webseiten gibt.\nhttp://www.arduino.cc und http://www.ardiono.org\nWelche ist nun die richtige? Soweit mir bekannt, war immer die .cc die richtige. Woher kommt nun die .org? Und Ist die Software dort vertrauenswürdig? Sie unterscheidet sich jedenfalls. Was ist der Unterschied zwischen den beiden Versionen?\n1 Antwort JoeMar – 08.01.2017\nHi Klaus,\nhierzu kannst Du vielleicht alle Infos über folgende Web-Site erhalten:\n\u0026ldquo;http://www.golem.de/news/arduino-vs-arduino-kampf-um-die-arduino-ide-1504-113322.html\"\n(hatte erst gedacht: ardiono.org? -\u0026gt; is bestimmt nicht vertrauenswürdig \u0026hellip;)\nIch wusste schon länger, dass es innerhalb der ardunio-Gemeinde Zwistigkeiten gibt - wenn es um die IDE geht.\nFür uns User sollte das aber erst einmal nicht wirklich ausschlaggebend sein.\nGruß\nJörg\n","permalink":"https://iot.fkainka.de/forum/topic/arduino-webseite/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003edurch einen scheinbar noch nicht veröffentlichten Kommentar vom 2.12.2016 bin ich zufällig darauf gestoßen, dass es zwei Arduino-Webseiten gibt.\u003cbr\u003e\n\u003ca href=\"http://www.arduino.cc\"\u003ehttp://www.arduino.cc\u003c/a\u003e und \u003ca href=\"http://www.ardiono.org\"\u003ehttp://www.ardiono.org\u003c/a\u003e\u003cbr\u003e\nWelche ist nun die richtige? Soweit mir bekannt, war immer die .cc die richtige. Woher kommt nun die .org? Und Ist die Software dort vertrauenswürdig? Sie unterscheidet sich jedenfalls. Was ist der Unterschied zwischen den beiden Versionen?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJoeMar\u003c/strong\u003e – 08.01.2017\u003c/p\u003e\n\u003cp\u003eHi Klaus,\u003c/p\u003e\n\u003cp\u003ehierzu kannst Du vielleicht alle Infos über folgende Web-Site erhalten:\u003c/p\u003e","title":"Arduino Webseite"},{"content":"Habe heute den Adventskalender bekommen.\nArduino 1.8 installiert unter Win10, die Libs geladen. Der Wifi Teil gibt keinen mucks ab. Die At Befehle zeigen keine Wirkung, es kommt kein echo am seriellen Monitor mit verschiedenen Kabel und verschieden USB Ports. SeriallAnalog geht aber einwandfrei.\nAlso Wie kann ich den Wifiteil testen?\nWifiscanner, Wificonnect, AT Befehle ezeigen keine Wirkung, lassen sich aber alle einwnadfrei kompilieren\n2 Antworten JoeMar – 07.01.2017\nHi,\nhabe auch gerade mein \u0026ldquo;C-Control IoT WiFi Board\u0026rdquo; (\u0026lt;\u0026ndash; unter dieser Bezeichnung bekommt man das Teil beim großen \u0026ldquo;C\u0026rdquo; \u0026hellip;) angeschlossen.\nUm feststellen zu können, ob das Wifi-Modul funktioniert, habe ich einfach mal mein Handy nach verfügbaren WiFi-Netzen suchen lassen.\nPrompt wird mir neben meiner FrizBox auch ein offenes NanoESP - Netzwerk aufgelistet.\nProbiere auch einmal mit Deinem Handy den NanoESP zu finden.\nMit den AT-Befehlen bin ich noch nicht soweit - aber mit dem \u0026ldquo;Blink\u0026rdquo;-Sketch blinkt eine der blauen LED\u0026rsquo;s bereits fröhlich vor sich hin.\nGruß\nJörg\nJoeMar – 08.01.2017\nHi,\nvielleicht waren die Infos von mir gestern nicht wirklich hilfreich \u0026hellip; manchmal hilft es aber, wenn man Dinge prüfen kann und das was man prüft auch bestätigt bekommt.\nZwischenzeitlich habe ich verschiedene Sketches die unter NanoESP-1.1 zu finden sind.\nDas, welches tatsächlich dafür sorgt, dass ein Web-Server eingerichtet ist und womit man sich im Browser auch eine Web-Seite anzeigen lassen kann, nennt sich \u0026ldquo;TCP-Webserver-Easy\u0026rdquo;.\nIn dem vorhandene Code sollte man nur noch die Zeilen \u0026hellip;\n#define SSID \u0026ldquo;YourSSID\u0026rdquo;\n#define PASSWORD \u0026ldquo;xxxxxx\u0026rdquo;\nvernünftig füllen \u0026hellip;\n#define SSID \u0026ldquo;Nano_Web\u0026rdquo;\n#define PASSWORD \u0026ldquo;xxxxxx\u0026rdquo;\n(es geht natürlich noch vernünftiger \u0026hellip; ;) )\nIm Serial-Monitor sollte ein IP angezeigt werden, die man dann einfach im Browser in die Adresszeile eingeben kann. Daraufhin meldet sich der Web-Server mit seiner Web-Seite.\nVielleicht hilft diese Info ein bischen weiter \u0026hellip;\nGruß\nJörg\n","permalink":"https://iot.fkainka.de/forum/topic/bretzel-funktioniert-nicht/","summary":"\u003cp\u003eHabe heute den Adventskalender bekommen.\u003cbr\u003e\nArduino 1.8 installiert unter Win10, die Libs geladen. Der Wifi Teil gibt keinen mucks ab. Die At Befehle zeigen keine Wirkung, es kommt kein echo am seriellen Monitor mit verschiedenen Kabel und verschieden USB Ports. SeriallAnalog geht aber einwandfrei.\u003cbr\u003e\nAlso Wie kann ich den Wifiteil testen?\u003cbr\u003e\nWifiscanner, Wificonnect, AT Befehle ezeigen keine Wirkung, lassen sich aber alle einwnadfrei kompilieren\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJoeMar\u003c/strong\u003e – 07.01.2017\u003c/p\u003e\n\u003cp\u003eHi,\u003c/p\u003e","title":"Bretzel funktioniert nicht"},{"content":"Hallo Zusammen,\nich besitze seit Kurzem das Franzis IoT Maker Kit mit dem Pretzelboard.\nHabe die Programmbeispiele für das Anleitungsbuch von der Franzis-Seite heruntergeladen und entpackt. Das erste Programm P01 für die Demonstration der Softserial-biliothek läßt sich noch problemlos kompilieren. Aber bereits beim zweiten Programm P02_GooglePing schüttet mich die IDE mit Fehlermeldungen zu, die alle auf irgend eine veraltete/abzulehnende Behandlung von Strings abzielen:\nC:\\Arduino\\Francis IOT\\P02_GooglePing\\P02_GooglePing.ino: In function \u0026lsquo;void setup()\u0026rsquo;:\nC:\\Arduino\\Francis IOT\\P02_GooglePing\\P02_GooglePing.ino:25:48: warning: deprecated conversion from string constant to \u0026lsquo;char*\u0026rsquo; [-Wwrite-strings]\nif (sendCom(\u0026ldquo;AT+PING=\u0026quot;www.google.de\u0026quot;\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;))\nDer zugehörige ^marker zeigt auf die letzten Klammern.\nUnd so geht das dann bei jeder Zeile in der die sendComm Funktion auftaucht weiter.\nHat Jemand Anders dieses Problem auch schon gehabt? Ist das ein bekannter Bug, schließlich gibt es das Board und das Kit ja schon seit einiger Zeit? Und falls ja, was kann ich dagegenn tun?\nIch habe hier einen Rechner mit Vista und der Arduino IDE 1.8.0\nIn dem Zusammenhang auch noch eine weitere Frage:\nIn irgend einem Testbericht (leider finde ich die Seite nicht mehr), der allerdings aus der Anfangszeit des Maker Kits stammte, stand, daß in den Beispielcodes (ich meine mich zu Erinnern, daß es um das Twitterprogramm ging) Klammern gefehlt haben. Wurden die Quelltexte der Programme seit der Erstveröffentlichung überarbeitet und der Fehler behoben, oder muß ich an der Stelle auch noch mit Problemen rechnen?\nViele Grüße\nmichael\n2 Antworten klaus – 07.01.2017\nDas sind keine Fehler, sondern \u0026ldquo;nur\u0026rdquo; Warnungen, die da angezeigt werden. Das gab es 2015 übrigens auch schon. Hier geht es darum, dass davor gewarnt wird, die automatische Konvertierung zwar noch kompatibilitätsweise unterstützt wird, aber man seinen Code so machen sollte, dass keine automatische Konvertierung mehr nötig ist. Ansonsten muss man damit rechnen, dass der Code in Zukunft auf neueren Versionen mal nicht mehr läuft. Dafür müsste die Bibliothek mal überarbeitet werden. Das kannst Du entweder selbst machen, oder hoffen, dass der Autor das mal irgendwann macht. Oder Du müsstest Deinen Sketch anders aufbauen (wobei ich nicht so fit in C bin, dass ich jetzt wüsste, wie man das stattdessen schreiben müsste).\nZum zweiten Problem kann ich jetzt nichts sagen, da ich mich an einen solchen Fehler gar nicht erinnern kann. Vielleicht war das aber auch so, dass nur der abgedruckte Code falsch war, der hier veröffentlichte aber bereits berichtigt wurde.\nMichael – 07.01.2017\nHallo Klaus,\nvielen Dank für die Antwort. Habe inzwischen auch gemerkt, daß es \u0026ldquo;nur\u0026rdquo; Warnungen sind, die Sketche konnten trotrzdem hochgeladen weerden und funktionieen auch so weit. Finde es aber trotzdem schade, daß so Etwas in einem Baukasten passiert, der sich auch und gerade an Anfänger richtet. Was ich programmtechnisch anders machen könnte weiß ich nämlich auch nicht, die Programme sind ja schon vom Autor so geschrieben und von dem stammen wohl auch die Bibliotheken. Meine eigenen Programmierkünste erstrecken sichj eigentlich daruaf Versatzstücke aus verschiedenen Quellen zu suchen und nach dem Funktionsüprinzip zu analysieren um sie dann zu dem was ich tun will neu zu kombinieren. Details der jeweiligen Syntax bleiben mir da leider verborgen und wen schon der Ausgangscode seitenweise Fehlermeldunge oder Warnunge produziert, dann bin ich skeptisch in Bezug darauf, was ich damit noch anfangen kann. Aber immerhin die Programme laufen und da kan nich dan auch versuchen an den Parametern zu drehen um die Abfragen hinzubekommen die ich ansteuern will.\nZu dem zweiten Punkt habe ich jketzt den Link wieder gefunden:\nhttp://www.swp.de/ulm/nachrichten/wirtschaft/serie-welt-4.0-_-eine-alarmanlage-zum-selberbauen-13006259.html\nDa steht im unteren Drittel des Textes:\n\u0026quot; \u0026hellip;Die Webseite ist außerdem mit einem Twitter-Konto verknüpft. Nach dem Hochladen des Programms erscheint im Display der Name der Webseite. Ansonsten passiert wieder einmal – nichts: kein Alarm, kein Tweet.\nEin Hilfegesuch an Informatiker der Universität Ulm bringt die Lösung: Im Code ist eine Klammer zu viel, erklärt Student Florian Paust. Ein Klick, dann ist das Problem behoben. Fällt jetzt Licht auf den Sensor, ertönt eine Sirene. Gleichzeitig wird ein Tweet mit dem Text „Alarm!“ versendet\u0026hellip;\u0026quot;\nLeider steht da aber nicht dabei um welche Klammer es sich handelt :(\nViele Grüße\nmichael\n","permalink":"https://iot.fkainka.de/forum/topic/syntaxfehler/","summary":"\u003cp\u003eHallo Zusammen,\u003cbr\u003e\nich besitze seit Kurzem das Franzis IoT Maker Kit mit dem Pretzelboard.\u003cbr\u003e\nHabe die Programmbeispiele für das Anleitungsbuch von der Franzis-Seite heruntergeladen und entpackt. Das erste Programm P01 für die Demonstration der Softserial-biliothek läßt sich noch problemlos kompilieren. Aber bereits beim zweiten Programm P02_GooglePing schüttet mich die IDE mit Fehlermeldungen zu, die alle auf irgend eine veraltete/abzulehnende Behandlung von Strings abzielen:\u003cbr\u003e\nC:\\Arduino\\Francis IOT\\P02_GooglePing\\P02_GooglePing.ino: In function \u0026lsquo;void setup()\u0026rsquo;:\u003cbr\u003e\nC:\\Arduino\\Francis IOT\\P02_GooglePing\\P02_GooglePing.ino:25:48: warning: deprecated conversion from string constant to \u0026lsquo;char*\u0026rsquo; [-Wwrite-strings]\u003c/p\u003e","title":"Syntaxfehler"},{"content":"Hallo,\nIch versuche mich gerade daran, den Nano ESP dazu zu bringen, eine e-mail zu versenden.\nAls Vorlage habe ich folgenden Code verwendet, der allerdings für einen Arduino, mit Ethernet Shield geschrieben wurde:\nhttp://www.jucetechnology.com/wordpress/simple-burglar-ethernet-shield-connection/\nLeider waren meine Bemühungen, den Code für den Nano ESP anzupassen, nicht gerade von Erfolg gekrönt.\nLiegt wohl hauptsächlich an meiner fehlenden Programmierfahrung.\nHier mal mein Code:\n#include ; #include #include #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;xxxxxx\u0026#34; #define LED_WLAN 13 char smtpServer[] = \u0026#34;smtpcorp.com\u0026#34;; NanoESP nanoesp = NanoESP(); NanoESP client; void setup() { Serial.begin(19200); nanoesp.init(); //Station Mode, Connect to WiFi if (!nanoesp.configWifi(STATION, SSID, PASSWORD)) { Serial.println(F(\u0026#34;Error: WLAN not Connected\\n\u0026#34;)); } else { Serial.println(F(\u0026#34;WLAN Connected\\n\u0026#34;)); digitalWrite(LED_WLAN, HIGH); } //Print IP in Terminal Serial.println(nanoesp.getIp()); //Time for Ping int vTime = nanoesp.ping(\u0026#34;www.google.de\u0026#34;); if (vTime \u0026gt; 0 ){ Serial.println(\u0026#34;Internet Connection OK\\nPing: \u0026#34; + String(vTime) + \u0026#34;ms\u0026#34;); } else { Serial.println(F(\u0026#34;Error: Internet Connection\u0026#34;)); } } void loop() { email(\u0026#34;hallo\u0026#34;); delay(1000); } // now I send email bool email(char* text) { bool success = false; Serial.println(\u0026#34;Sending email...\u0026#34;); if (client.connect(smtpServer, 2525)){ //2525 is SMTP Server port Serial.println(\u0026#34;connected\u0026#34;); delay(100); client.println(\u0026#34;EHLO arduino\u0026#34;); for(int i=0; i 0) break; } Serial.println(\u0026#34;responded\u0026#34;); client.println(\u0026#34;AUTH LOGIN\u0026#34;); //see \u0026#34;http://base64-encoder-online.waraxe.us/\u0026#34; client.println(\u0026#34;xxxxxxxxxx\u0026#34;); //Type your username and encode it client.println(\u0026#34;yyyyyyyyyy\u0026#34;); //Type your password and encode it // Put your \u0026#34;from\u0026#34; email address here client.println(\u0026#34;MAIL FROM:\u0026#34;); //Seems you can write what you want here... for(int i=0; i 0) break; } client.println(\u0026#34;RCPT TO:\u0026#34;); for(int i=0; i 0) break; } client.println(\u0026#34;DATA\u0026#34;); for(int i=0; i 0) break; } //Sender client.println(\u0026#34;from: mail@mail.com\u0026#34;); //Sender address client.println(\u0026#34;to: mail@mail.com\u0026#34;); //Receiver address client.println(\u0026#34;SUBJECT: From your arduino\u0026#34;); client.println(\u0026#34;\u0026#34;); client.println(text); client.println(\u0026#34;.\u0026#34;); client.println(\u0026#34;QUIT\u0026#34;); for (int i = 0; i 998){ Serial.println(\u0026#34;error: No response\u0026#34;); } if(client.read() \u0026gt; 0) break; } success = true; client.println(); Serial.println(\u0026#34;end\u0026#34;); } else { Serial.println(\u0026#34;Failed\u0026#34;); client.println(\u0026#34;QUIT\u0026#34;); //Disconnection } client.stop(); return success; } Hier bekomme ich allerdings folgende Fehler:\nArduino: 1.6.13 (Windows 8.1), Board: \u0026ldquo;Arduino Nano, ATmega328\u0026rdquo;\nC:\\Users\\Andreas\\AppData\\Local\\Temp\\arduino_modified_sketch_676728\\sketch_dec30a.ino:1:17: warning: extra tokens at end of #include directive\n#include \u0026lt;SPI.h\u0026gt;;\nC:\\Users\\Andreas\\AppData\\Local\\Temp\\arduino_modified_sketch_676728\\sketch_dec30a.ino: In function \u0026lsquo;void loop()\u0026rsquo;:\nC:\\Users\\Andreas\\AppData\\Local\\Temp\\arduino_modified_sketch_676728\\sketch_dec30a.ino:42:16: warning: deprecated conversion from string constant to \u0026lsquo;char*\u0026rsquo; [-Wwrite-strings]\nemail(\u0026ldquo;hallo\u0026rdquo;);\nC:\\Users\\Andreas\\AppData\\Local\\Temp\\arduino_modified_sketch_676728\\sketch_dec30a.ino: In function \u0026lsquo;bool email(char*)\u0026rsquo;:\nsketch_dec30a:51: error: \u0026lsquo;class NanoESP\u0026rsquo; has no member named \u0026lsquo;connect\u0026rsquo;\nif (client.connect(smtpServer, 2525)){ //2525 is SMTP Server port\nsketch_dec30a:102: error: \u0026lsquo;class NanoESP\u0026rsquo; has no member named \u0026lsquo;stop\u0026rsquo;\nclient.stop();\nexit status 1\n\u0026lsquo;class NanoESP\u0026rsquo; has no member named \u0026lsquo;connect\u0026rsquo;\nFür eure Hilfe zum Code, wäre ich euch sehr dankbar.\n1 Antwort klaus – 05.01.2017\nIxh weiß ja nicht, ob Du den Fehler inzwischen schon selbst gefunden hast. Die Meldung besagt, dass es keine Funktion \u0026ldquo;connect\u0026rdquo; in der nanoESP Bibliothek gibt. In der neuen Bibliothek finde ich auch nur die Funktion \u0026ldquo;boolean newConnection(int id, String type, String ip , unsigned int port)\u0026rdquo;. Diese müsstest Du verwenden.\n","permalink":"https://iot.fkainka.de/forum/topic/email-versand-mit-nano-esp/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eIch versuche mich gerade daran, den Nano ESP dazu zu bringen, eine e-mail zu versenden.\u003cbr\u003e\nAls Vorlage habe ich folgenden Code verwendet, der allerdings für einen Arduino, mit Ethernet Shield geschrieben wurde:\u003cbr\u003e\n\u003ca href=\"http://www.jucetechnology.com/wordpress/simple-burglar-ethernet-shield-connection/\"\u003ehttp://www.jucetechnology.com/wordpress/simple-burglar-ethernet-shield-connection/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eLeider waren meine Bemühungen, den Code für den Nano ESP anzupassen, nicht gerade von Erfolg gekrönt.\u003cbr\u003e\nLiegt wohl hauptsächlich an meiner fehlenden Programmierfahrung.\u003c/p\u003e\n\u003cp\u003eHier mal mein Code:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#include ;\n#include \n#include \n\n#define SSID \u0026#34;YourSSID\u0026#34;\n#define PASSWORD \u0026#34;xxxxxx\u0026#34;\n\n#define LED_WLAN 13\n\nchar smtpServer[] = \u0026#34;smtpcorp.com\u0026#34;;\nNanoESP nanoesp = NanoESP();\nNanoESP client;\n\nvoid setup() {\n  Serial.begin(19200);\n  nanoesp.init();\n\n  //Station Mode, Connect to WiFi\n  if (!nanoesp.configWifi(STATION, SSID, PASSWORD)) {\n    Serial.println(F(\u0026#34;Error: WLAN not Connected\\n\u0026#34;));\n  }\n  else {\n    Serial.println(F(\u0026#34;WLAN Connected\\n\u0026#34;));\n    digitalWrite(LED_WLAN, HIGH);\n  }\n\n //Print IP in Terminal\n  Serial.println(nanoesp.getIp());\n\n  //Time for Ping\n  int vTime = nanoesp.ping(\u0026#34;www.google.de\u0026#34;);\n\n  if (vTime \u0026gt; 0 ){\n    Serial.println(\u0026#34;Internet Connection OK\\nPing: \u0026#34; + String(vTime) + \u0026#34;ms\u0026#34;); \n  }\n  else {\n    Serial.println(F(\u0026#34;Error: Internet Connection\u0026#34;));\n  }\n}\nvoid loop()\n{\n  email(\u0026#34;hallo\u0026#34;);\n  delay(1000);\n}\n\n// now I send email\nbool email(char* text)\n{\n  bool success = false;\n  Serial.println(\u0026#34;Sending email...\u0026#34;);\n  if (client.connect(smtpServer, 2525)){            //2525 is SMTP Server port\n    Serial.println(\u0026#34;connected\u0026#34;);\n    delay(100);\n    client.println(\u0026#34;EHLO arduino\u0026#34;);\n    for(int i=0; i 0)\n        break;\n    }\n    Serial.println(\u0026#34;responded\u0026#34;);\n    client.println(\u0026#34;AUTH LOGIN\u0026#34;);                     //see \u0026#34;http://base64-encoder-online.waraxe.us/\u0026#34;\n    client.println(\u0026#34;xxxxxxxxxx\u0026#34;);                    //Type your username  and encode it\n    client.println(\u0026#34;yyyyyyyyyy\u0026#34;);                   //Type your password  and encode it\n    // Put your \u0026#34;from\u0026#34; email address here\n    client.println(\u0026#34;MAIL FROM:\u0026#34;); //Seems you can write what you want here...\n    for(int i=0; i 0)\n        break;\n    }\n    client.println(\u0026#34;RCPT TO:\u0026#34;);\n    for(int i=0; i 0)\n        break;\n    }\n    client.println(\u0026#34;DATA\u0026#34;);\n    for(int i=0; i 0)\n        break;\n    }\n    //Sender\n    client.println(\u0026#34;from: mail@mail.com\u0026#34;); //Sender address\n    client.println(\u0026#34;to: mail@mail.com\u0026#34;);  //Receiver address\n    client.println(\u0026#34;SUBJECT: From your arduino\u0026#34;);\n    client.println(\u0026#34;\u0026#34;);\n    client.println(text);\n    client.println(\u0026#34;.\u0026#34;);\n    client.println(\u0026#34;QUIT\u0026#34;);\n    for (int i = 0; i 998){\n        Serial.println(\u0026#34;error: No response\u0026#34;);\n      }\n      if(client.read() \u0026gt; 0)\n        break;\n    }\n    success = true;\n    client.println();\n    Serial.println(\u0026#34;end\u0026#34;);\n  }\n  else {\n    Serial.println(\u0026#34;Failed\u0026#34;);\n    client.println(\u0026#34;QUIT\u0026#34;); //Disconnection\n  }\n  client.stop();\n  return success;\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eHier bekomme ich allerdings folgende Fehler:\u003c/p\u003e","title":"Email Versand mit Nano ESP"},{"content":"Hallo,\nkann mit jemand ein paar Relais empfehlen die mit dem Nanoboard gut funktionieren? Habe bei Amazon was gefunden und kann man mit dem NanoESP und den Relais direkt z.B ein Rolladen steuern?\n","permalink":"https://iot.fkainka.de/forum/topic/relais-fuer-nanoboard/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nkann mit jemand ein paar Relais empfehlen die mit dem Nanoboard gut funktionieren? Habe bei Amazon was gefunden und kann man mit dem NanoESP und den Relais direkt z.B ein Rolladen steuern?\u003c/p\u003e","title":"Relais für NanoBoard"},{"content":"In der Hoffnung, dass ich HIER richtig bin, eine Zusammenfassung meiner Leidensgeschichte:\n(bin 73, also bitte nicht gleich zusammenstauchen, ich bemühe mich so gut es \u0026hellip; noch \u0026hellip;. geht)\nKalender, Türchen, board, Treiber gesucht, gefunden. Ausgepackt installiert, 3 led´s wie beschrieben.\nGerätemanager: COM 6. Treiber \u0026amp; Bauds \u0026amp; etc Ok.\nNetzwerk Überblick: kein NanoESP.\nSuche nach offenem VERBORGENEN WLan, nix.\nIm Router (TCom, ach ja, Win7 64), WLan Abfrage: aktiv sind FireTV und Nexus 7. Kein Nano (der natürlich eingeschaltet ist!)\nÜber Nexus 7: WLan anzeigen:\nich selbst (also mein Pc) und mehrere Nachbarn (natürlich gesperrt)\nNanoESP mit Bestwerten, die angezeigt werden nach Abfrage. Keine weitere Möglichkeit!\nAngezeigt wird: KEINE INTERNETVERBINDUNG ERKANNT; KANN NICHT AUTOMATISCH HERGESTELLT WERDEN.\nWas habe ich bis dato versucht:\nTreiber löschen und nochmal von vorne.\nKaspersky abschalten: vielleicht wird Zugang zu offenem WLan verweigert? Ist aber nicht so! Keine Änderung!\nBitte höflichst um Hilfe!\nDank im Voraus!\n7 Antworten fluchhexe – 27.12.2016\nHallo, ich stehe vor demselben Proble, das Gerät wird in der Netzwerkliste angezeigt mit hervorragender Signalstärke, aber eine Verbindung wird als nicht möglich angegeben. Habe die Treiber schon mehrfach neu installiert und bereits das 4. USB - Kabel probiert - weiß nich weiter::.Hilfe\u0026hellip;\nsumero – 03.01.2017\nHallo ihr beiden,\nschreibt doch bitte mal noch dazu, bei welchem der Türchen ihr seid und welches Programm ihr aktuell bzw. als letztes auf den NanoESP hochgeladen habt.\nEs klingt als wärt ihr beide bei Tag eins und versucht von eurem Notebook per WLAN-Verbindung auf den NanoESP zu verbinden, soweit richtig? Das Kabel ist in diesem Fall nur für die Stromversorgung von dem NanoESP notwendig. Ihr müsst also in dem Fall nicht den Treiber neu installieren.\nWenn ihr kein Notebook habt, solltet ihr versuchen euch mit eurem Smartphone in das WLAN von dem NanoESP zu verbinden.\nAn Tag 1 ist der NanoESP so programmiert, dass er ein eigener AccessPoint ist, der ein eigenes WLAN Netzwerk anbietet.\nDieses NanoESP eigene WLAN Netzwerk hat keine Verbindung in eurer Hauseigenes Netzwerk und keine Verbindung in das Internet.\nIhr könnt euch mit euren Geräte also nur direkt mit dem NanoESP und dem Webserver der auf dem NanoESP installiert ist verbinden.\n@Fluchhexe:\nWelches Betriebssystem verwendest du? Nutzt du Windows oder MAC OSX? Beschreib doch bitte etwas detaillierte die Schritte die du machst bis zu dem Punkt wo die Fehlermeldung kommt. Die genaue Fehlermeldung wäre auch gut.\n@fixrene:\nDas Windows sagt das WLAN vom NanoESP hätte keine Internetverbindung ist soweit richtig. An Tag1 hat der NanoESP das auch nocht nicht. Wenn du versucht manuell mit dem WLAN-Netzwerk NanoESP eine Verbindung aufzubauen, was bekommst du dann für eine Fehlermeldung?\nfixrene – 05.01.2017\nHallo Sumero,\nerst mal Dank! Du wird viel Geduld aufbringen müssen, ich bin wohl zu ahnungslos, schon bei Türchen 1!\nZusammenfassung:\nDer driver, der vor 2 Wochen auf \u0026hellip;..kainka.de/driver angeboten wurde. Zweimal wiederholt, leider ist die Bezeichnung und .exe schon gelöscht.\nWin7 \u0026ldquo;sieht\u0026rdquo; kein NanoESP.\nÜber (Android) Nexus 7 werde ich verbunden. siehe pics. Nano 2 zeigt aufgebaute Verbindung\nAlso denk ich mal, dass ich jetzt einen browser öffne (im Nexus 7) und eingebe: 192.168.4.1.\nWar das korrekt? Gleiches hatte ich über Win7 versucht.\nFunzt aber nicht, wird irgendwann abgebrochen. Nano 3\nIn der Hoffnung, dass Du nicht aufgibst, Grüße. FR\nAnhänge:\nfixrene – 05.01.2017\nHi Sumero,\nsowas auf nüchternen Magen\u0026hellip;\u0026hellip; grins \u0026hellip;\nIch gebe ja fast nie auf, \u0026hellip; und beim X-ten Versuch kam, siehe pics.\nAber warum muss ich über Tage !!! versuchen, und irgendwann klappt es? Über Android.\nIst es überhaupt das, was sein soll?\nGrüße FR\nAnhänge:\nfixrene – 05.01.2017\nHallo Sumero,\nmöchte mich verabschieden, nachdem ich endlich erkannt habe, dass das Problem ein überlasteter Server war.\nCa. 30 Versuche über zwei !! Wochen, \u0026hellip;. und dann Nachts ein Treffer.\nBin inzwischen inclusive Internet auf Seite 5.\nNochmals Dank und auf zu nächsten Problemen. Eventuell auf ein Wiedersehen?\nGrüße FR\nsumero – 05.01.2017\nHallo FR,\nfreut mich das es bei dir letztendlich geklappt hat.\nMeld dich einfach falls du noch Probleme hast.\nfluchhexe – 09.01.2017\nHallo Sumero,\nich habe ebenfalls beim gefühlt 200. Mal eine Verbindung mit dem Nano-ESP herstellen können und mit Chrome als Browser statt Seamonkey habe ich auch die versteckte Seite gefunden (jippie), mit Android gings bei mir nicht. Im Moment blinkt das Teil fröhlich, aber vielleicht mach ich noch etwas weiter ;-))\nIch nutze Windows 7 mit 64 Bit. Vielen Dank für den Zuspruch.\nfluchhexe\n","permalink":"https://iot.fkainka.de/forum/topic/internetverbindung/","summary":"\u003cp\u003eIn der Hoffnung, dass ich HIER richtig bin, eine Zusammenfassung meiner Leidensgeschichte:\u003cbr\u003e\n(bin 73, also bitte nicht gleich zusammenstauchen, ich bemühe mich so gut es \u0026hellip; noch \u0026hellip;. geht)\u003c/p\u003e\n\u003cp\u003eKalender, Türchen, board, Treiber gesucht, gefunden. Ausgepackt installiert, 3 led´s wie beschrieben.\u003cbr\u003e\nGerätemanager: COM 6. Treiber \u0026amp; Bauds \u0026amp; etc Ok.\u003cbr\u003e\nNetzwerk Überblick: kein NanoESP.\u003cbr\u003e\nSuche nach offenem VERBORGENEN WLan, nix.\u003cbr\u003e\nIm Router (TCom, ach ja, Win7 64), WLan Abfrage: aktiv sind FireTV und Nexus 7. Kein Nano (der natürlich eingeschaltet ist!)\u003cbr\u003e\nÜber Nexus 7: WLan anzeigen:\u003cbr\u003e\nich selbst (also mein Pc) und mehrere Nachbarn (natürlich gesperrt)\u003cbr\u003e\nNanoESP mit Bestwerten, die angezeigt werden nach Abfrage. Keine weitere Möglichkeit!\u003cbr\u003e\nAngezeigt wird: KEINE INTERNETVERBINDUNG ERKANNT; KANN NICHT AUTOMATISCH HERGESTELLT WERDEN.\u003c/p\u003e","title":"InternetVerbindung?"},{"content":"Hallo,\neiner meiner Potis kam defekt aus dem Türchen (eines seiner Beinchen wackelt und ich bekomme mit ihm keine Verbindung hin).\nNun wollte ich bei Conrad.de nach einem Ersatzteil schauen. Hat jemand eine Artikelnummer oder genaue Beschreibung für mich?\nGrüße,\nCC13\n1 Antwort JoeMar – 08.01.2017\nHi,\nfalls es noch interessant ist:\nHier würde ich dieses Trim-Poti nehmen:\nTrimmer linear 0.25 W 10 kΩ\nBestell-Nr.: 432024 - 62\nDer Widerstand von 10 kΩ entspricht dem Widerstand des Potis, das im Adventskalender enthalten ist. Ob die Leistung mit 0.25 W die gleiche ist, kann ich nicht sagen, da ich den Kalender nicht besitze. Aber deshalb würde ich auch den mit 0.25 W nehmen - die meisten anderen Trim-Potis haben nur 0.15 W.\nInteressant ist auch die bestellbare Steckachse:\nSteckachse Schwarz Piher 5208\nBestell-Nr.: 425419 - 62\nmit der sich das Poti bequem einstellen lässt - ohne einen Schraubendreher verwenden zu müssen.\nVielleicht hilft Dir diese Info weiter.\nGruß\nJörg\n","permalink":"https://iot.fkainka.de/forum/topic/bauteileliste/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eeiner meiner Potis kam defekt aus dem Türchen (eines seiner Beinchen wackelt und ich bekomme mit ihm keine Verbindung hin).\u003c/p\u003e\n\u003cp\u003eNun wollte ich bei Conrad.de nach einem Ersatzteil schauen. Hat jemand eine Artikelnummer oder genaue Beschreibung für mich?\u003c/p\u003e\n\u003cp\u003eGrüße,\u003cbr\u003e\nCC13\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJoeMar\u003c/strong\u003e – 08.01.2017\u003c/p\u003e\n\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003efalls es noch interessant ist:\u003c/p\u003e\n\u003cp\u003eHier würde ich dieses Trim-Poti nehmen:\u003c/p\u003e\n\u003cp\u003eTrimmer linear 0.25 W 10 kΩ\u003cbr\u003e\nBestell-Nr.: 432024 - 62\u003c/p\u003e\n\u003cp\u003eDer Widerstand von 10 kΩ entspricht dem Widerstand des Potis, das im Adventskalender enthalten ist. Ob die Leistung mit 0.25 W die gleiche ist, kann ich nicht sagen, da ich den Kalender nicht besitze. Aber deshalb würde ich auch den mit 0.25 W nehmen - die meisten anderen Trim-Potis haben nur 0.15 W.\u003c/p\u003e","title":"Bauteileliste?"},{"content":"Bei dem letzten Versuch in diesem Advent geht es wieder etwas weihnachtlicher zu. Wir basteln eine wiederverwendbare Geschenkbox, mit der Sie Ihre Verwandten beglücken können. Jedes Mal wenn jemand das Geschenk öffnet, wird der Inhalt in einer individuellen Farbe beleuchtet und ein Weihnachtssound ertönt.\nHinter dem heutigen Türchen befindet sich eine Reflexlichtschranke. Es handelt sich dabei eigentlich um zwei Bauteile, einer IR-Sendediode und einem Phototransitor. Wie genau Sie die Elemente gepolt werden müssen ist nicht ganz einfach zu erkennen. Deswegen stecken Sie am besten die Lichtschranke nach dem unteren Vorbild mit dem Verbindungskabeln zusammen. Dann können Sie die Polung nicht so leicht vertauschen.\nSo schließen Sie die Reflexlichtschranke an Der Aufbau des heutigen Tages enthält heute viele Bauteile, weswegen alles auf den ersten Blick ein bisschen verwirrend aussieht Neben der Reflexlichtschranke, die uns als Sensor zum Erkennen des Öffnen des Paketes dient, kommen noch die RGB-Diode und der Piezosummer zum Einsatz.\nDer letzte Aufbau des Adventskalenders Das Programm: A16_P24_MQTT_Present.ino /* MQTT Present Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_MQTT.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026lt;RGBLED.h\u0026gt; #include \u0026lt;RGBColor.h\u0026gt; #include \u0026#34;pitches.h\u0026#34; #include \u0026#34;songs.h\u0026#34; #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define DEBUG true #define RED 3 #define GREEN 5 #define BLUE 6 #define GND 4 #define BUTTON 7 #define PIEZO 8 #define IR A1 #define PHOTO A0 NanoESP nanoesp = NanoESP(); NanoESP_MQTT mqtt = NanoESP_MQTT(nanoesp); RGBLED rgbLED = RGBLED(RED, GREEN, BLUE, 0, 3, 0); String ip, mqttId; RGBColor newColor = RGBColor(0, 0, 0); RGBColor offColor = RGBColor(0, 0, 0); int curSong; bool isOpen = true; mqtt_msg opened = {\u0026#34;\u0026#34;, \u0026#34;Opened\u0026#34;, 0, true}; void setup() { pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(GND, OUTPUT); digitalWrite(GND, LOW); pinMode(IR, OUTPUT); Serial.begin(19200); nanoesp.init(); //Station Mode nanoesp.configWifiMode(STATION); // nanoesp.configWifiStation(SSID, PASSWORD); if (nanoesp.wifiConnected()) { Serial.println(F(\u0026#34;Wifi Connected\u0026#34;)); digitalWrite(LED_WLAN, HIGH); } else { Serial.println(F(\u0026#34;Wifi not Connected\u0026#34;)); } //Print IP in Terminal nanoesp.getIpMac( ip, mqttId); Serial.println(\u0026#34;My IP: \u0026#34; + ip); //Print MQTTid in Terminal mqttId.replace(\u0026#34;:\u0026#34;, \u0026#34;\u0026#34;); Serial.println(\u0026#34;My MQTT ID: \u0026#34; + mqttId+\u0026#34;\\n\u0026#34;); if (mqtt.connect(0, \u0026#34;broker.fkainka.de\u0026#34;, 1883, mqttId)) { Serial.println(F(\u0026#34;Connected to Broker\u0026#34;)); Serial.println(F(\u0026#34;My personal Topic is:\u0026#34;)); Serial.println(\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/\\n\u0026#34;); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/present\u0026#34;, 2, newPresent)) Serial.println(F(\u0026#34;Subscribed to present\u0026#34;)); else Serial.println(F(\u0026#34;Error Subscribe to present\u0026#34;)); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); } setSongs(); } void loop() { int id, len; if (nanoesp.recvData(id, len)) { mqtt.recvMQTT(id, len); //auto hanlder mit Funktionen } mqtt.stayConnected(0); //Present opened? if (!isOpen) { if (checkIsOpen()) { isOpen = true; Serial.println(\u0026#34;Open\u0026#34;); mqtt.publish(0, \u0026amp;opened); rgbLED.crossfade(newColor); play(curSong); } } else { //Present closed? if (!checkIsOpen()) { isOpen = false; Serial.println(\u0026#34;Closed\u0026#34;); rgbLED.crossfade(offColor); } } } bool checkIsOpen() { int high; int low; digitalWrite(IR, HIGH); delay(1); high = analogRead(PHOTO); digitalWrite(IR, LOW); delay(1); low = analogRead(PHOTO); digitalWrite(IR, HIGH); delay(1); high += analogRead(PHOTO); digitalWrite(IR, LOW); delay(1); low += analogRead(PHOTO); if (high \u0026gt; (2 * low)) { return false; } else { return true; } } String oldTopic; void newPresent(String value) { Serial.println(\u0026#34;New Present for \u0026#34; + value); if (opened.topic != \u0026#34;\u0026#34;) { mqtt.unsubscribe(0, opened.topic + \u0026#34;/color\u0026#34;); Serial.println(F(\u0026#34;Unsubscribed old color\u0026#34;)); mqtt.unsubscribe(0, opened.topic + \u0026#34;/song\u0026#34;); Serial.println(F(\u0026#34;Unsubscribed old song\u0026#34;)); } opened.topic = \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/present/\u0026#34; + value; mqtt.subscribe(0, opened.topic + \u0026#34;/color\u0026#34;, 2, gotnewColor); Serial.println(F(\u0026#34;Subscribed new Color\u0026#34;)); // Recieve retained msg before subscribing next int id, len; for (int i = 0; i \u0026lt;= 250; i++) { if (nanoesp.recvData(id, len)) { if (mqtt.recvMQTT(id, len)) { break; //auto hanlder mit Funktionen } } delay(10); } mqtt.subscribe(0, opened.topic + \u0026#34;/song\u0026#34;, 2, gotnewSong); Serial.println(F(\u0026#34;Subscribed new Song\u0026#34;)); } void gotnewColor(String value) { Serial.println(\u0026#34;New color: \u0026#34; + value); value = value.substring(value.indexOf(\u0026#39;(\u0026#39;) + 1); //255,23,226) int red = value.substring(0, value.indexOf(\u0026#39;,\u0026#39;)).toInt(); value = value.substring(value.indexOf(\u0026#39;,\u0026#39; ) + 1); //23,226) int green = value.substring(0, value.indexOf(\u0026#39;,\u0026#39;)).toInt(); value = value.substring(value.indexOf(\u0026#39;,\u0026#39;) + 1); //226) int blue = value.substring(0, value.indexOf(\u0026#39;)\u0026#39;)).toInt(); newColor = RGBColor(red, green, blue); //for direct change //analogWrite(RED, red); analogWrite(GREEN, green); analogWrite(BLUE, blue); } void gotnewSong(String value) { Serial.println(\u0026#34;New Song: \u0026#34; + value); curSong = value.toInt(); } void setSongs() { //Configuration for songs, you may change some songs int numTunes = 5; tunes[0] = {weWish, weWishDurations, sizeof(weWish) / sizeof(int), 80, N_C6, N_C5}; tunes[1] = {alleJahre, alleJahreDurations, sizeof(alleJahre) / sizeof(int), 80, N_C6, N_C5}; tunes[2] = {jingleBells, jingleBellsDurations, sizeof(jingleBells) / sizeof(int), 60, 784, 523}; tunes[3] = {firstNoel, firstNoelDurations, sizeof(firstNoel) / sizeof(int), 60, 523, 262}; //tunes[3] = {oHolyNight, oHolyNightDurations, sizeof(oHolyNight) / sizeof(int), 100, 659, 262}; tunes[4] = {whatChild, whatChildDurations, sizeof(whatChild) / sizeof(int), 100, 587, 247}; tunes[5] = {weThreeKings, weThreeKingsDurations, sizeof(weThreeKings) / sizeof(int), 100, 587, 294}; } void play(int tuneNum) { int randomOffset = random(32); int numNotes = tunes[tuneNum].numCount; int tempo = tunes[tuneNum].tempo; for (int thisNote = 0; thisNote \u0026lt; numNotes; thisNote++) { int freq = pgm_read_word_near(tunes[tuneNum].melody + thisNote) * 2; int noteDuration = tempo * pgm_read_byte_near(tunes[tuneNum].durations + thisNote); if (freq \u0026gt; 0) { int n = (map(freq, tunes[tuneNum].low, tunes[tuneNum].high, 1, 31) + randomOffset) % 31 + 1; tone(PIEZO, freq, noteDuration); } else { // REST delay(noteDuration); } delay(noteDuration); // to distinguish the notes, set a minimum time between them. // the note\u0026#39;s duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 0.30; delay(pauseBetweenNotes); noTone(PIEZO); } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nNachdem Sie das heutige Programm auf den Controller geladen habe, gehen Sie erneut auf die http://www.hivemq.com/try-out/ Seite und verbinden sich mit dem Broker broker.hivemq.com. Dort können Sie nun beginnen, den Personen die Sie beschenken wollen ein Topic zu widmen, und zwar nach folgendem Schema:\nNanoESP/mqttId/present/person/color\nNanoESP/mqttId/present/person/song\nWobei Sie mqttId durch Ihre persönliche ID und person durch die Person die Sie beschenken wollen ersetzen. In dem Topic color publishen Sie ein Farbe nach dem bekannten Schema rgb(X,X,X) und ins Topic song eine Nummer zwischen 0 und 5 die für einen vordefinierten Song steht. Beide Nachrichten müssen mit dem Retain-Flag versehen werden. Für drei Personen sähe dies nun beispielsweise so aus:\nTopic Value Retain NanoESP/mqttId/present/mutter/color rgb(255,255,0) | X || NanoESP/mqttId/present/mutter/song |\n2 | X || NanoESP/mqttId/present/vater/color |\nrgb(0,0,255) | X || NanoESP/mqttId/present/vater/song |\n1 | X || NanoESP/mqttId/present/schwester/color |\nrgb(255,0,255) | X || NanoESP/mqttId/present/schwester/song |\n4 | X |\nNun können Sie zwischen diesen Personen umschalten, indem Sie die Person in dem Topic\nNanoESP/mqttId/present\nveröffentlichen. Tragen Sie dort nun beispielsweise schwester ein (genaue Schreibweise beachten), werden die Einstellungen für Ihre Schwester geladen, und beim Öffnen der Box verwendet. Nach der Entnahme des Geschenks legen Sie das nächste hinein, schließen die Box wieder und laden die nächste Einstellung durch Publishen der nächsten Person. Zu Testzwecken können Sie den Sensor vor ein weißes Blatt halten, was das Schließen der Box simuliert. Das restliche Tageslicht muss dabei abgeschirmt werden. Nehmen Sie das Blatt weg, wird die Box als geöffnet erkannt.\nZum Bauen der Geschenkbox benötigen Sie nun nur noch einen Schuh- oder vergleichbaren Pappkarton. Das Board können Sie einfach mit dem auf der Unterseite des Boards befestigten Klebestreifens an einer Seite des Kartons befestigen. Es hat sich als besonders praktisch erwiesen, den Piezzosummer zwischen Steckboard und Karton zu stecken. Auch überschüssiges Kabel von der Reflexlichtschranke können Sie mit ankleben, wichtig ist nur, dass die Refelexlichtschranke genau bis zum Rand des Kartons reicht. Befestigen Sie ihn dort mit Klebeband.\nDas System in einem Schuhkarton Eine zusätzliche Pappe, die einfach in den Karton geklemmt werden kann, verdeckt das Board und den Kabelsalat. Ein kleines Loch muss allerdings noch in diese Trennwand gestochen werden, sodass die RGB-LED durchschaut und das innere des Kartons beleuchten kann. Zum Schluss können Sie, nach Bedarf, den Karton noch innen und außen mit weihnachtlichen Geschenkpapier verkleben. Schon ist die Geschenkbox fertig.\nEine Trennwand verdeckt den Kabelsalat ","permalink":"https://iot.fkainka.de/day-24-gift-box/","summary":"\u003cp\u003eBei dem letzten Versuch in diesem Advent geht es wieder etwas weihnachtlicher zu. Wir basteln eine wiederverwendbare Geschenkbox, mit der Sie Ihre Verwandten beglücken können. Jedes Mal wenn jemand das Geschenk öffnet, wird der Inhalt in einer individuellen Farbe beleuchtet und ein Weihnachtssound ertönt.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich eine Reflexlichtschranke. Es handelt sich dabei eigentlich um zwei Bauteile, einer IR-Sendediode und einem Phototransitor. Wie genau Sie die Elemente gepolt werden müssen ist nicht ganz einfach zu erkennen. Deswegen stecken Sie am besten die Lichtschranke nach dem unteren Vorbild mit dem Verbindungskabeln zusammen. Dann können Sie die Polung nicht so leicht vertauschen.\u003c/p\u003e","title":"Tag 24: Geschenkbox"},{"content":"Hallo,\nich sehe vom Tag 23 die Daten im MQTT Client durchlaufen, aber wo ist das erwähnte Plugin zum speichern der Daten, so nützt mir das überhaupt gar nichts :-(\n2 Antworten Michel2016 – 28.12.2016\nSooo, ich antworte mir mal selber. Ich habe jetzt mal die Klimaüberwachung von Tag 18 mit dem Adventskalender von 2015 gekreuzt und das ganze für ThingSpeak umgeschrieben. Jetzt werden die Daten von Temperatur, Helligkeit und Feuchtigkeit dort gespeichert, angezeigt und könnten auch als csv auf dem Rechner gespeichert werden.\nAnhänge:\nsumero – 03.01.2017\nnice\n","permalink":"https://iot.fkainka.de/forum/topic/tag-23-plugin-um-die-daten-vom-broker-zu-speichern/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nich sehe vom Tag 23 die Daten im MQTT Client durchlaufen, aber wo ist das erwähnte Plugin zum speichern der Daten, so nützt mir das überhaupt gar nichts :-(\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eMichel2016\u003c/strong\u003e – 28.12.2016\u003c/p\u003e\n\u003cp\u003eSooo, ich antworte mir mal selber. Ich habe jetzt mal die Klimaüberwachung von Tag 18 mit dem Adventskalender von 2015 gekreuzt und das ganze für ThingSpeak umgeschrieben. Jetzt werden die Daten von Temperatur, Helligkeit und Feuchtigkeit dort gespeichert, angezeigt und könnten auch als csv auf dem Rechner gespeichert werden.\u003c/p\u003e","title":"Tag 23 Plugin um die Daten vom Broker zu speichern???"},{"content":"Hinter dem heutigen Türchen befindet sich ein Batterie-Clip für einen 9-V-Block, mit dem Sie das gesamte System mobil machen können. Eine Alternative zu einer Batterie ist eine Power-Bank (ein Akku-Pack, normalerweise für Handys). Wie Sie eine 9-V-Batterie richtig anschließen, können Sie dem heutigen Aufbaubild entnehmen.\nSo können Sie eine 9V-Batterie am heutigen Aufbau anschließen Heute sollen erneut Klimadaten erfasst werden. Diesmal werden sie aber über den MQTT-Broker veröffentlicht, und sind deshalb auch weltweit abrufbar. Über ein Plugin könnten so die Daten abgerufen und in einer Datenbank gespeichert werden.\nDas Programm: A16_P23_MQTT_Climate.ino /* MQTT Basic functions Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_MQTT.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define TEMP A0 #define LIGHT A1 #define HUMIDITY A4 #define GND A5 NanoESP nanoesp = NanoESP(); NanoESP_MQTT mqtt = NanoESP_MQTT(nanoesp); mqtt_msg newTemp; mqtt_msg newLight; mqtt_msg newHum; String ip, mqttId; void setup() { Serial.begin(19200); nanoesp.init(); nanoesp.configWifiStation(SSID, PASSWORD); if (nanoesp.wifiConnected()) { Serial.println(F(\u0026#34;Wifi Connected\u0026#34;)); digitalWrite(LED_WLAN, HIGH); } else { Serial.println(F(\u0026#34;Wifi not Connected\u0026#34;)); } //Print IP in Terminal nanoesp.getIpMac( ip, mqttId); Serial.println(\u0026#34;My IP: \u0026#34; + ip); //Print MQTTid in Terminal mqttId.replace(\u0026#34;:\u0026#34;, \u0026#34;\u0026#34;); Serial.println(\u0026#34;My MQTT ID: \u0026#34; + mqttId+\u0026#34;\\n\u0026#34;); newTemp = {\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/climate/temp\u0026#34;, \u0026#34;0\u0026#34;, 0, true}; newLight = {\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/climate/light\u0026#34;, \u0026#34;0\u0026#34;, 0, true}; newHum = {\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/climate/hum\u0026#34;, \u0026#34;0\u0026#34;, 0, true}; //topic, value, QOS, retain mqtt_msg lastWill = {\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/climate/status\u0026#34;, \u0026#34;offline\u0026#34;, 0, true}; //ConnectionID, Brooker, Port, Clean Session, Keep alive Time (def. 120s), Pointer to lastWill MSG, Username, Password if (mqtt.connect(0, \u0026#34;broker.fkainka.de\u0026#34;, 1883, mqttId, true, 10, \u0026amp;lastWill, \u0026#34;\u0026#34;, \u0026#34;\u0026#34;)) { Serial.println(F(\u0026#34;Connected to Broker\u0026#34;)); //Change msg lastWill.value = \u0026#34;online\u0026#34;; mqtt.publish(0, \u0026amp;lastWill); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); } } void loop() { int id, len; if (nanoesp.recvData(id, len)) { mqtt.recvMQTT(id, len); //auto hanlder mit Funktionen } mqtt.stayConnected(0); sendValues(); } void sendValues() { newTemp.value = String(getTemp()); newLight.value = String(getLight()); newHum.value = String(getRF()); mqtt.publish(0, \u0026amp;newTemp); mqtt.publish(0, \u0026amp;newLight); mqtt.publish(0, \u0026amp;newHum); //delay(250); } //--------------------------------Sensors---------------------------------------------------- int getRF() { long U, R; double F; pinMode(HUMIDITY, INPUT); // Ddrb.3 = 0 \u0026#39;Eingang digitalWrite(HUMIDITY, HIGH); // Portb.3 = 1 \u0026#39;Pullup ein U = analogRead(HUMIDITY); // U = Getadc(3) digitalWrite(HUMIDITY, LOW); // Portb.3 = 0 \u0026#39;Pullup Aus pinMode(HUMIDITY, OUTPUT); // Ddrb.3 = 1 \u0026#39;Nierohmig pinMode(GND, INPUT); // Ddrb.4 = 0 \u0026#39;Eingang digitalWrite(GND, HIGH); // Portb.4 = 1 \u0026#39;Pullup ein U += analogRead(GND); // U = U + Getadc(2) digitalWrite(GND, LOW); // Portb.4 = 0 \u0026#39;Pullup Aus pinMode(GND, OUTPUT); // Ddrb.4 = 1 \u0026#39;Nierohmig. entladen U = U / 2; R = 3500 * U; //\u0026#39;R=35k*(U/1023-U) U = 1023 - U; R = (U \u0026gt; 0) ? R / U : 999999; //alternativ writing to: if(U\u0026gt;0) R = R/U; else R=999999; R = R - 450; //- interner Bahnwiderstand 0,45 k //Calculate Humidity F = R / 280; F = log(F); //ln f !!! F = F * 8.9; F = 100 - F; F = round(F); // Serial.println(String(R) + \u0026#34;Ohm \u0026#34; + String(F) + \u0026#34;%\u0026#34;); //delay(500); return F; } double getTemp() { //Source: http://playground.arduino.cc/ComponentLib/Thermistor2 double Temp; int RawADC = analogRead(TEMP); Temp = log(10000.0 * ((1024.0 / RawADC - 1))); // =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp ); Temp = Temp - 273.15; // Convert Kelvin to Celcius // Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit Temp = round(Temp * 10); Temp = Temp / 10; return Temp; } int getLight() { int vLight = analogRead(LIGHT); return vLight; } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nLaden Sie das Programm des heutigen Tages herunter und programmieren Sie damit Ihren NanoESP. Nach kurzer Zeit ist das Board mit dem WLAN und dem Broker verbunden und beginnt, die Messdaten zu verschicken. Gehen Sie nun zu der http://www.hivemq.com/try-out/ Seite und verbinden Sich mit dem Broker. Subscriben Sie zu den Topics:\nNanoESP/mqttId/climate/temp\nNanoESP/mqttId/climate/light\nNanoESP/mqttId/climate/hum\nwobei Sie mqttId wie immer durch Ihre persönliche ID ersetzen. Sie sehen nun im Browser, wie die Daten in schneller Folge eintreffen. Als nächstes abonnieren Sie das Topic\nNanoESP/mqttId/climate/status\nSie müssten die Nachricht “online” empfangen. Trennen Sie nun das Board vom Strom. Logischerweise empfangen Sie nun keine neuen Temperaturdaten mehr. Allerdings ändert sich der Status nach ca. 10 Sekunden von “online“ zu „offline“. Wie ist das möglich wenn das Board gar keine Nachrichten mehr senden kann?\nDer Trick liegt in der Last Will-Message, die beim Verbinden mit dem Broker angegeben wurde. Diese Nachricht wird beim plötzlichen Trennen der Verbindung versendet. Es dauert allerdings eine Weile bis der Broker den Abbruch der Verbindung bemerkt. Wie lange, wird ebenfalls beim Verbindungsaufbau mit der Keep-Alive Zeit festgelegt. Wenn innerhalb in der dort angegeben Zeit keine Nachricht vom Board an den Broker gesendet wird, geht der Broker davon aus, dass die Verbindung getrennt wurde. Standardmäßig ist in der Library diese Zeit auf 120 Sekunden festgelegt. Für den heutigen Versuch liegt sie aber bei 10 Sekunden. Damit die Verbindung nicht gekappt wird, nur weil der NanoESP gerade nichts zu melden hat, gibt es den stayConnected-Befehl. Hier wird, wenn nicht anders angegeben, nach der Hälfte der Keep-Alive Zeit eine Ping an den Broker gesendet, als Lebenszeichen, dass die Verbindung noch aktiv ist.\n","permalink":"https://iot.fkainka.de/day23-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein Batterie-Clip für einen 9-V-Block, mit dem Sie das gesamte System mobil machen können. Eine Alternative zu einer Batterie ist eine Power-Bank (ein Akku-Pack, normalerweise für Handys). Wie Sie eine  9-V-Batterie richtig anschließen, können Sie dem heutigen Aufbaubild entnehmen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day23_Climate_Steckplatine.jpg\"\u003e\u003cimg class=\"size-large wp-image-1410\" src=\"/images/2016/09/Day23_Climate_Steckplatine.jpg\" alt=\"So können Sie eine 9V-Batterie am heutigen Aufbau anschließen\" width=\"616\" height=\"337\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eSo können Sie eine 9V-Batterie am heutigen Aufbau anschließen\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eHeute sollen erneut Klimadaten erfasst werden. Diesmal werden sie aber über den MQTT-Broker veröffentlicht, und sind deshalb auch weltweit abrufbar. Über ein Plugin könnten so die Daten abgerufen und in einer Datenbank gespeichert werden.\u003c/p\u003e","title":"Tag 23: MQTT Climate"},{"content":"Hallo\nHilfe\nIch habe die orginal Kalender Platine kaput gemacht - Alle LED aus tot\nund habe mir sofort von Conrad eine neue ESP Platine gekauft.\nDen Blink Sketch kann ich hochladen - funktioniert\naber alle anderen Sketche Tag 1 bis 4 gehen nicht keine WLAN Verbindung.\nFrage . Was muß ich tun um eine fabrikneue Platine in Betrieb zu nehmen ?\nmuss da eine Grundkonfiguration eingestellt werden\nDanke\nRoland\n","permalink":"https://iot.fkainka.de/forum/topic/kalender-platine-def-tot-neue-esp-platine-gekauft-wlan-geht-nicht/","summary":"\u003cp\u003eHallo\u003cbr\u003e\nHilfe\u003cbr\u003e\nIch habe die orginal Kalender Platine kaput gemacht - Alle LED aus tot\u003cbr\u003e\nund habe mir sofort von Conrad eine neue ESP Platine gekauft.\u003c/p\u003e\n\u003cp\u003eDen Blink Sketch kann ich hochladen - funktioniert\u003cbr\u003e\naber alle anderen Sketche Tag 1 bis 4 gehen nicht keine WLAN Verbindung.\u003c/p\u003e\n\u003cp\u003eFrage . Was muß ich tun um eine fabrikneue Platine in Betrieb zu nehmen ?\u003c/p\u003e\n\u003cp\u003emuss da eine Grundkonfiguration eingestellt werden\u003c/p\u003e\n\u003cp\u003eDanke\u003cbr\u003e\nRoland\u003c/p\u003e","title":"Kalender Platine def, tot - neue Esp Platine gekauft - WLAN geht nicht"},{"content":"In dem heutigen Versuch geht es um MQTT und um ein globales Projekt, das auch letztes Jahr vorgestellt wurde: nämlich das Cheerlights Projekt von Hans Schaaler. Für alle diejenigen, die das Projekt nicht kennen: Es geht um weltweit vernetzte bunte Lichter, die sich simultan über Twitter-Kommandos steuern lassen. Eine andere Version dieses Projekts war Teil des letztjährigen Adventskalenders. Dieses Jahr gibt es die Version mit MQTT und erweiterten Funktionen.\nHinter dem heutigen Türchen befindet sich ein Widerstand mit 1 kOhm. Der Aufbau besteht aus der RGB-LED mit Vorwiderständen und einem Taster.\nAufbau der RGB-LED mit Button Laden Sie das Programm des heutigen Tages herunter. Bevor Sie das Programm aber auf den NanoESP übertragen können, müssen Sie zunächst eine Library installieren. Es geht um die Crossfade-Library von Radek Wierzbicki (Quelle: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). Aus praktischen Gründen ist eine Kopie der verwendeten Library-Version als Zip-Datei im Sketchordner enthalten. Diese können Sie einfach über den Library Manger in die Arduino IDE einfügen, indem Sie unter Sketch-\u0026gt; Bibliothek einbinden -\u0026gt; .Zip-Bibliothek einbinden das Zip-Verzeichnis im Sketchordner auswählen. Nun kompiliert das Programm und Sie können es auf den NanoESP hochladen.\nDas Programm: A16_P22_MQTT_Cheerlights.ino /* MQTT Cheerlights Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_MQTT.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026lt;RGBLED.h\u0026gt; #include \u0026lt;RGBColor.h\u0026gt; //#define SSID \u0026#34;YourSSID\u0026#34; //#define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define RED 3 #define GREEN 5 #define BLUE 6 #define GND 4 #define BUTTON 7 NanoESP nanoesp = NanoESP(); NanoESP_MQTT mqtt = NanoESP_MQTT(nanoesp); RGBLED rgbLED = RGBLED(RED, GREEN, BLUE, 0, 3, 0); RGBColor red = RGBColor(100, 0, 0); RGBColor green = RGBColor(0, 100, 0); RGBColor blue = RGBColor(0, 0, 100); RGBColor cyan = RGBColor(0, 100, 100); RGBColor white = RGBColor(100, 100, 100); RGBColor warmwhite = RGBColor(100, 87, 87); RGBColor purple = RGBColor(50, 0, 50); RGBColor magenta = RGBColor(100, 0, 100); RGBColor yellow = RGBColor(100, 100 , 0); RGBColor orange = RGBColor(100, 65 , 0); RGBColor pink = RGBColor(100, 75 , 100); String ip, mqttId; void setup() { pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(GND, OUTPUT); digitalWrite(GND, LOW); pinMode(BUTTON, INPUT_PULLUP); Serial.begin(19200); nanoesp.init(); //! Only if you use a new Network // nanoesp.configWifi(STATION, SSID, PASSWORD); //Station Mode nanoesp.configWifiMode(STATION); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Print IP in Terminal nanoesp.getIpMac( ip, mqttId); Serial.println(\u0026#34;My IP: \u0026#34; + ip); //Print MQTTid in Terminal mqttId.replace(\u0026#34;:\u0026#34;, \u0026#34;\u0026#34;); Serial.println(\u0026#34;My MQTT ID: \u0026#34; + mqttId + \u0026#34;\\n\u0026#34;); //if (mqtt.connect(0, \u0026#34;broker.hivemq.com\u0026#34;, 1883, mqttId)) { //connect to alternative broker if (mqtt.connect(0, \u0026#34;broker.fkainka.de\u0026#34;, 1883, mqttId)) { //connect to broker Serial.println(F(\u0026#34;Connected to Broker\u0026#34;)); Serial.println(F(\u0026#34;My personal Topic is:\u0026#34;)); Serial.println(\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/\\n\u0026#34;); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/mode\u0026#34;, 2, changeMode)) Serial.println(\u0026#34;Subscribed to:\\nNanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/mode\u0026#34;); else Serial.println(F(\u0026#34;Error Subscribe to rgb Mode\u0026#34;)); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); } } bool cheerlightsMode; void loop() { int id, len; if (nanoesp.recvData(id, len)) { mqtt.recvMQTT(id, len); //auto handle recieved data by defined functions } mqtt.stayConnected(0); if (!digitalRead(BUTTON)) { //change cheerlights mode mqtt_msg msgMode = {\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/mode\u0026#34;, String(!cheerlightsMode), 0, true}; //type: mqtt_msg (topic, msg, qos, retain) if (mqtt.publish(0, \u0026amp;msgMode)) Serial.println(F(\u0026#34;Changed mode\\n\u0026#34;)); msgMode.value = \u0026#34;1\u0026#34;; while (!digitalRead(BUTTON)) {}; } } void changeMode(String value) { if (value == \u0026#34;1\u0026#34;) { Serial.println(\u0026#34;Cheerlights mode\\n\u0026#34;); if (mqtt.unsubscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/color\u0026#34;)) Serial.println(\u0026#34;Unsubscribed from: NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/color\u0026#34;); if (mqtt.subscribe(0, \u0026#34;Info/Cheerlights\u0026#34;, 2, changeCheerlights)) Serial.println(F(\u0026#34;Subscribed to Cheerlights\u0026#34;)); cheerlightsMode = true; } else { Serial.println(\u0026#34;Personal light mode\\n\u0026#34;); if (mqtt.unsubscribe(0, \u0026#34;Info/Cheerlights\u0026#34;)) Serial.println(F(\u0026#34;Unsubscribed from Cheerlights\u0026#34;)); else Serial.println(F(\u0026#34;Error\u0026#34;)); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/color\u0026#34;, 2, changeColor)) Serial.println(\u0026#34;Subscribed to: NanoESP/\u0026#34; + mqttId + \u0026#34;/rgb/color\u0026#34;); cheerlightsMode = false; } } void changeCheerlights(String color) { Serial.println(\u0026#34;New Cheerlights color : \u0026#34; + color); if (color == \u0026#34;red\u0026#34;) rgbLED.crossfade(red); else if (color == \u0026#34;green\u0026#34;) rgbLED.crossfade(green); else if (color == \u0026#34;blue\u0026#34;) rgbLED.crossfade(blue); else if (color == \u0026#34;cyan\u0026#34;) rgbLED.crossfade(cyan); else if (color == \u0026#34;white\u0026#34;) rgbLED.crossfade(white); else if (color == \u0026#34;warmwhite\u0026#34;) rgbLED.crossfade(warmwhite); else if (color == \u0026#34;purple\u0026#34;) rgbLED.crossfade(purple); else if (color == \u0026#34;magenta\u0026#34;) rgbLED.crossfade(magenta); else if (color == \u0026#34;yellow\u0026#34;) rgbLED.crossfade(yellow); else if (color == \u0026#34;orange\u0026#34;) rgbLED.crossfade(orange); } void changeColor(String value) { Serial.println(\u0026#34;New color: \u0026#34; + value); //rgb(255,23,226) value = value.substring(value.indexOf(\u0026#39;(\u0026#39;) + 1); //255,23,226) int red = value.substring(0, value.indexOf(\u0026#39;,\u0026#39;)).toInt(); value = value.substring(value.indexOf(\u0026#39;,\u0026#39; ) + 1); //23,226) int green = value.substring(0, value.indexOf(\u0026#39;,\u0026#39;)).toInt(); value = value.substring(value.indexOf(\u0026#39;,\u0026#39;) + 1); //226) int blue = value.substring(0, value.indexOf(\u0026#39;)\u0026#39;)).toInt(); RGBColor vColor = RGBColor(red, green, blue); rgbLED.crossfade(vColor); //for direct change //analogWrite(RED, red); analogWrite(GREEN, green); analogWrite(BLUE, blue); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nNach dem Hochladen des Programms gehen Sie nun wieder auf die Seite www.hivemq.com/try-out/ und bauen eine Verbindung zu dem Broker broker.hivemq.com auf. Dort können Sie mit dem Topic\nNanoESP/mqttId /rgb/mode\nden Modus zwischen Cheerlights und persönlicher Farbe wechseln, indem Sie eine 1 oder eine 0 publishen. Wichtig ist, dass Sie bei allen Nachrichten die Retain-Checkbox aktivieren bevor Sie die Nachricht mit dem Publish-Button rechts daneben abschicken. Retain bedeutet so etwas wie Behalten, denn der Broker behält die Nachricht gespeichert. Sobald ein Gerät nun das Thema subscribed, wird die gespeicherte Nachricht umgehend an das Gerät übermittelt. Sie können damit also Zustände speichern. Der Button, der sich auf dem Steckboard befindet, schaltet übrigens ebenfalls den Modus über eine Nachricht mit Retain-Flag um. Sie müssen später also nicht immer zur Try-Out Seite um dem Modus umzuschalten.\nIm persönlichen Modus (mode 0) können Sie der RGB-LED eine Farbe verpassen, indem Sie im Topic\nNanoESP/mqttId /rgb/color\neine Nachricht nach der Form\nrgb(X,X,X)\npublishen. Das X steht hier jeweils für einen PWM-Wert zwischen 0 und 255. Die Reihenfolge der Farben ist rot, grün, blau. Für eine grüne Farbe mit maximaler Helligkeit müssen Sie also\nrgb(0,255,0)\npublishen. Vergessen Sie nicht die Retain-Box zu aktivieren.\nIm Cheerlights Modus (mode 1) subscribt das Board zu einem Topic, zu dem die aktuelle Cheerlights-Farbe veröffentlicht wird. Sie können diese Farbe verändern, indem Sie eine Twitter-Nachricht verfassen und damit Ihre, und auch die Farbe aller anderen Cheerlights Nutzer verändern. Die Nachricht muss zum einen #Cheerlights, @Cheerlights oder einfach nur das Stichwort Cheerlights enthalten und zum anderen eine der vordefinierten Farben hinter dem Stichwort stehen haben. Zu den vordefinierten Farben gehören:\nred, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink\nEin möglicher Tweet lautet also:\nTesting my #cheerlights #MQTT project on my #NanoESP with the color blue\nDamit geben Sie sich und der ganzen Welt eine neue Farbe. Falls Sie aber ihre persönliche Farbe bevorzugen, ohne dass jemand dazwischen funkt, schalten Sie einfach wieder auf den persönlichen Modus um und schon wechselt die LED wieder zu ihrer vordefinierten Farbe.\n","permalink":"https://iot.fkainka.de/day22-2016/","summary":"\u003cp\u003eIn dem heutigen Versuch geht es um MQTT und um ein globales Projekt, das auch letztes Jahr vorgestellt wurde: nämlich das Cheerlights Projekt von Hans Schaaler. Für alle diejenigen, die das Projekt nicht kennen: Es geht um weltweit vernetzte bunte Lichter,  die sich simultan über Twitter-Kommandos steuern lassen. Eine andere Version dieses Projekts war Teil des letztjährigen Adventskalenders. Dieses Jahr gibt es die Version mit MQTT und erweiterten Funktionen.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein Widerstand mit 1 kOhm. Der Aufbau besteht aus der RGB-LED mit Vorwiderständen und einem Taster.\u003c/p\u003e","title":"Tag 22: MQTT Cheerlights"},{"content":"In dem Versuch des heutigen Tages werden wir die Eigenschaften und Möglichkeiten von MQTT genauer beleuchten, in dem wir ein praktisches Szenario kreieren. In dem Beispiel gibt es ein Gebäude mit zwei Räumen mit jeweils einem Lichtschalter, einem Licht und einem Alarmsensor. Die Lichtschalter schalten das Licht des jeweiligen Raums an oder aus. Die Alarmsensoren aktivieren einen gebäudeweiten Alarm.\nNormalerweise würden hier sieben verschiedene Geräte zum Einsatz kommen, die alle über einen MQTT-Broker miteinander verbunden sind. Da Sie aber wahrscheinlich nur einen NanoESP haben, simuliert dieser alle Geräte auf einmal. Deswegen sieht der Aufbau des heutigen Tages etwas kompliziert aus. Als zweites Licht wird übriges heute die LED D3 genutzt. Deswegen wird diese heute nicht anzeigen, ob Sie mit dem WLAN-Verbunden sind. Als Alarmsensoren werden die Tiltsensoren an den Verlängerungskabeln genutzt. Man könnte sie beispielsweise an Türen oder Fensterrahmen befestigen, sodass sie einen Alarm triggern wenn sich der Eingang öffnet. Hinter dem heutigen Türchen befindet sich auch der zweite Sensor.\nDer Aufbau von Tag 21 Das Programm: A16_P21_MQTT_Rooms.ino /* MQTT Roons Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_MQTT.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; NanoESP nanoesp = NanoESP(); NanoESP_MQTT mqtt = NanoESP_MQTT(nanoesp); String ip, mqttId; #define SWITCH_ROOM_1 5 #define SWITCH_ROOM_2 7 #define ALARMSENSOR_ROOM_1 A3 #define ALARMSENSOR_ROOM_2 A2 #define LIGHT_ROOM_1 9 #define LIGHT_ROOM_2 13 #define PIEZO 8 unsigned long previousMillisAlarm = 0; unsigned long intervalAlarm = 1000; int durationAlarm; bool alarmActive = false; bool alarmToggle; bool alarm_status_v; bool room1_light_stauts_v; bool room2_light_stauts_v; void setup() { pinMode(SWITCH_ROOM_1, INPUT_PULLUP); pinMode(SWITCH_ROOM_2, INPUT_PULLUP); pinMode(ALARMSENSOR_ROOM_1, INPUT); pinMode(ALARMSENSOR_ROOM_2, INPUT); pinMode(LIGHT_ROOM_1, OUTPUT); pinMode(LIGHT_ROOM_2, OUTPUT); pinMode(A1, OUTPUT); pinMode(A1, OUTPUT); digitalWrite(A1, HIGH); digitalWrite(A1, HIGH); Serial.begin(19200); nanoesp.init(); //! Only if you want to change the ACCESPOINT configuration //nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;); //! Only if you use a new Network // nanoesp.configWifi(DUAL, SSID, PASSWORD); //Station Mode nanoesp.configWifiMode(STATION); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())Serial.println(F(\u0026#34;WLAN Connected\u0026#34;)); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Print IP in Terminal nanoesp.getIpMac( ip, mqttId); Serial.println(\u0026#34;My IP: \u0026#34; + ip); //Print MQTTid in Terminal mqttId.replace(\u0026#34;:\u0026#34;, \u0026#34;\u0026#34;); Serial.println(\u0026#34;My MQTT ID: \u0026#34; + mqttId + \u0026#34;\\n\u0026#34;); //if (mqtt.connect(0, \u0026#34;broker.hivemq.com\u0026#34;, 1883, mqttId)) { //connect to alternative broker if (mqtt.connect(0, \u0026#34;broker.fkainka.de\u0026#34;, 1883, mqttId)) { //connect to broker Serial.println(F(\u0026#34;Connected to Broker\u0026#34;)); Serial.println(F(\u0026#34;My personal Topic is:\u0026#34;)); Serial.println(\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/\\n\u0026#34;); //subcribe: Connection ID, Topic, Max Qualitiy of Service, Function to call when msg recieved if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room1/light\u0026#34;, 2, room1_light_status)) Serial.println(F(\u0026#34;Subscribed to /room1/light\u0026#34;)); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room1/light\u0026#34;, 2, room1_light)) Serial.println(F(\u0026#34;Subscribed to /room1/light\u0026#34;)); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room2/light\u0026#34;, 2, room2_light_status)) Serial.println(F(\u0026#34;Subscribed to /room2/light\u0026#34;)); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room2/light\u0026#34;, 2, room2_light)) Serial.println(F(\u0026#34;Subscribed to /room2/light\u0026#34;)); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/+/alarm\u0026#34;, 2, alarm_status)) Serial.println(F(\u0026#34;Subscribed to alarm\u0026#34;)); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); } } void loop() { int id, len; if (nanoesp.recvData(id, len)) { mqtt.recvMQTT(id, len); //auto handle recieved data by defined functions } checkConditions(); mqtt.stayConnected(0); if (alarm_status_v) alarm(); } void checkConditions() { room1_alarmsensor_check(); room2_alarmsensor_check(); room1_button_check(); room2_button_check(); } //----------------------------Room1--------------------------------------------- //____________________________Switch__________________________________________ //Switch knows about the light status so it can toggle the light void room1_light_status (String value) { Serial.println(\u0026#34;Light status Room 1 :\u0026#34; + value); if (value == \u0026#34;1\u0026#34;) { room1_light_stauts_v = true; } else if (value == \u0026#34;0\u0026#34;) { room1_light_stauts_v = false; } } void room1_button_check () { if (!digitalRead(SWITCH_ROOM_1)) { if (mqtt.publish(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room1/light\u0026#34;, String(!room1_light_stauts_v))) Serial.println(F(\u0026#34;Button 1 pressed\\n\u0026#34;)); while (!digitalRead(SWITCH_ROOM_1)) {}; } } //____________________________Light___________________________________________ void room1_light (String value) { if (value == \u0026#34;1\u0026#34;) { Serial.println(F(\u0026#34;Light on\u0026#34;)); digitalWrite(LIGHT_ROOM_1, HIGH); } else if (value == \u0026#34;0\u0026#34;) { Serial.println(F(\u0026#34;Light off\u0026#34;)); digitalWrite(LIGHT_ROOM_1, LOW); } } //____________________________Alarmsensor___________________________________________ void room1_alarmsensor_check () { if (!digitalRead(ALARMSENSOR_ROOM_1)) { if (mqtt.publish(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room1/alarm\u0026#34;, \u0026#34;1\u0026#34;)) Serial.println(F(\u0026#34;Alarm Room 1\\n\u0026#34;)); while (!digitalRead(ALARMSENSOR_ROOM_1)) {}; } } //----------------------------Room2--------------------------------------------- //____________________________Switch__________________________________________ //Switch knows about the light status so it can toggle the light void room2_light_status (String value) { Serial.println(\u0026#34;Light status Room 2 :\u0026#34; + value); if (value == \u0026#34;1\u0026#34;) { room2_light_stauts_v = true; } else if (value == \u0026#34;0\u0026#34;) { room2_light_stauts_v = false; } } void room2_button_check () { if (!digitalRead(SWITCH_ROOM_2)) { if (mqtt.publish(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room2/light\u0026#34;, String(!room2_light_stauts_v))) Serial.println(F(\u0026#34;Button 2 pressed\\n\u0026#34;)); while (!digitalRead(SWITCH_ROOM_2)) {}; } } //____________________________Light___________________________________________ void room2_light (String value) { if (value == \u0026#34;1\u0026#34;) { Serial.println(F(\u0026#34;Light on\u0026#34;)); digitalWrite(LIGHT_ROOM_2, HIGH); } else if (value == \u0026#34;0\u0026#34;) { Serial.println(F(\u0026#34;Light off\u0026#34;)); digitalWrite(LIGHT_ROOM_2, LOW); } } //____________________________Alarmsensor___________________________________________ void room2_alarmsensor_check () { if (!digitalRead(ALARMSENSOR_ROOM_2)) { if (mqtt.publish(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/room2/alarm\u0026#34;, \u0026#34;1\u0026#34;)) Serial.println(F(\u0026#34;Alarm Room 2\\n\u0026#34;)); while (!digitalRead(ALARMSENSOR_ROOM_2)) {}; } } //----------------------------ALARM--------------------------------------------- void alarm_status (String value) { if (value == \u0026#34;1\u0026#34;) { Serial.println(F(\u0026#34;ALARM\u0026#34;)); durationAlarm = 20; alarm_status_v = true; } if (value == \u0026#34;0\u0026#34;) { Serial.println(F(\u0026#34;ALARM DEACTIVATED\u0026#34;)); durationAlarm = 20; alarm_status_v = false; } } void alarm() { if (millis() - previousMillisAlarm \u0026gt;= intervalAlarm) { alarmToggle != alarmToggle; if (alarmToggle) tone(PIEZO, 400, 500); else tone(PIEZO, 800, 500); previousMillisAlarm = millis(); //Reset time till AlarmToggle; durationAlarm--; if (durationAlarm \u0026lt;= 0) alarmActive = false; } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nDas Programm subscribed jetzt zu den Topics:\nNanoESP/MQTTID/room1/light\nNanoESP/MQTTID/room2/light\nNanoESP/MQTTID/+/alarm\nMit den Buttons können Sie nun das Licht in dem jeweiligen Raum aktivieren. Wenn Sie einen Tiltsensor kippen, wird der Alarm ausgelöst. Dieser wird nach 20 Sekunden deaktiviert, oder wenn Sie eine 0 zu dem Alarm-Topic senden, z.B. über die http://www.hivemq.com/try-out/ Webseite. Über den Seriellen Monitor werden Sie zudem über alle Veränderungen informiert.\n","permalink":"https://iot.fkainka.de/day21-2016/","summary":"\u003cp\u003eIn dem  Versuch des heutigen Tages werden wir die Eigenschaften und Möglichkeiten von MQTT genauer beleuchten, in dem wir ein praktisches Szenario kreieren. In dem Beispiel gibt es ein Gebäude mit zwei Räumen mit jeweils einem Lichtschalter, einem Licht und einem Alarmsensor. Die Lichtschalter schalten das Licht des jeweiligen Raums an oder aus. Die Alarmsensoren aktivieren einen gebäudeweiten Alarm.\u003c/p\u003e\n\u003cp\u003eNormalerweise würden hier sieben verschiedene Geräte zum Einsatz kommen, die alle über einen MQTT-Broker miteinander verbunden sind. Da Sie aber wahrscheinlich nur einen NanoESP haben, simuliert dieser alle Geräte auf einmal. Deswegen sieht der Aufbau des heutigen Tages etwas kompliziert aus. Als zweites Licht wird übriges heute die LED D3 genutzt. Deswegen wird diese heute nicht anzeigen, ob Sie mit dem WLAN-Verbunden sind. Als Alarmsensoren werden die Tiltsensoren an den Verlängerungskabeln genutzt. Man könnte sie beispielsweise an Türen oder Fensterrahmen befestigen, sodass sie einen Alarm triggern wenn sich der Eingang öffnet. Hinter dem heutigen Türchen befindet sich auch der zweite Sensor.\u003c/p\u003e","title":"Tag 21: Hausautomation"},{"content":"Für die letzten Tage in diesem Advent werden Sie nun ein Thema kennenlernen, welches eine große Rolle im Bereich IoT spielt. Es geht um das Nachrichten-Protokoll MQTT (Message Queue Telemetry Transport) welches speziell für die Kommunikation von Machschienen zu Maschinen (M2M) entwickelt wurde. Der Grund warum dieses Protokoll so genial ist, liegt in der Kompaktheit und Einfachheit, mit der Daten wie Steuerdaten, Messdaten oder Texte, ausgetauscht werden können. Im Vergleich zum HTTP ist der Overhead (Daten die neben den eigentlichen Nutzdaten übermittelt werden) sehr kurz und können gerade von Embeded Devices, also Mikrocontrollern wie unserem NanoESP, gut verarbeitet werden. Gleichzeitig muss der Controller nicht selbst immer wieder eine Verbindung aufbauen und erfragen, ob es eine Veränderung gab, sondern die Verbindung wird dauerhaft gehalten und der Client automatisch über Veränderungen Informiert.\nGrundlange für die Kommunikation bildet ein sogenannter Broker. Ein Broker ist eine Server-Anwendung, die alle Daten verarbeitet. Ein Gerät kann sich nun mit dem Broker verbinden und Nachrichten „publischen“ (veröffentlichen), also an den Broker senden. Ein anderes Gerät kann dann bestimmte Themen (Topics genannt) „subscriben“ (abonnieren) und bekommt dann sofort eine neu zu diesem Thema veröffentlichte Nachricht von Broker zugestellt. Damit Sie nicht selbst einen Broker einrichten müssen, wurde ein öffentlicher Broker unter der Adresse broker.fkainka.de für Sie eingerichtet.\nDer MQTT Broker stellt die Nachrichten zu Die Topics sind hierarchisch strukturiert, wobei Unterthemen jeweils durch ein / getrennt sind. Zusätzlich gibt es sogenannte Wildcards. Durch ein + oder # können gleich mehrere Themen gleichzeitig abonniert werden. Die Topics\nMyHome/Kitchen/Temperature\nMyHome/Bathroom/Temperature\nkönnen so z.B. durch das Subscriben des Themas\nMyHome/+/Temperature\ngleichzeitig empfangen werden. Das Plus ersetzt dabei immer nur eine Topic Ebene. Das # ersetzt gleich alle. Mit dem Topic\nMyHome/#\nempfangen Sie also alle Nachrichten, die in allen Untertopics von MyHome gepublished werden. Die Daten, die zu einem Topic veröffentlicht werden, können so ziemlich alles sein von reinen Text über Messwerte oder einfache 1/0 Befehle zum Schalten von Licht.\nDas Programm: A16_P20_MQTT_Basics.ino /* MQTT Basic functions Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_MQTT.h\u0026gt; //special library for MQTT #include \u0026lt;SoftwareSerial.h\u0026gt; #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define DEBUG true NanoESP nanoesp = NanoESP(); NanoESP_MQTT mqtt = NanoESP_MQTT(nanoesp); String ip, mqttId; void setup() { Serial.begin(19200); nanoesp.init(); //! Only if you use a new Network // nanoesp.configWifi(STATION, SSID, PASSWORD); //Station Mode nanoesp.configWifiMode(STATION); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Print IP in Terminal nanoesp.getIpMac(ip, mqttId); Serial.println(\u0026#34;My IP: \u0026#34; + ip); //Print MQTTid in Terminal mqttId.replace(\u0026#34;:\u0026#34;, \u0026#34;\u0026#34;); Serial.println(\u0026#34;My MQTT ID: \u0026#34; + mqttId+\u0026#34;\\n\u0026#34;); //if (mqtt.connect(0, \u0026#34;broker.hivemq.com\u0026#34;, 1883, mqttId)) { //connect to alternative broker if (mqtt.connect(0, \u0026#34;broker.fkainka.de\u0026#34;, 1883, mqttId)) { //connect to broker Serial.println(F(\u0026#34;Connected to Broker\\n\u0026#34;)); Serial.println(F(\u0026#34;My personal Topic is:\u0026#34;)); Serial.println(\u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/\\n\u0026#34;); if (mqtt.subscribe(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/test\u0026#34;)) Serial.println(\u0026#34;Subscribed to:\\nNanoESP/\u0026#34; + mqttId + \u0026#34;/test\\n\u0026#34;); if (mqtt.publish(0, \u0026#34;NanoESP/\u0026#34; + mqttId + \u0026#34;/test\u0026#34;, \u0026#34;Hello from my NanoESP\u0026#34;)) Serial.println(\u0026#34;Published to:\\nNanoESP/\u0026#34; + mqttId + \u0026#34;/test\\n\u0026#34;); } else { Serial.println(F(\u0026#34;error connecting\u0026#34;)); } } void loop() { int id, len; if (nanoesp.recvData(id, len)) { //recv data String topic, value; if (mqtt.recvMQTT(id, len, topic, value)) { //handle recvd data as mqtt data, parameters topic and value as reference Serial.println(\u0026#34;New Message:\\nTopic=\u0026#34; + topic + \u0026#34; Value=\u0026#34; + value+\u0026#34;\\n\u0026#34;); //print message } } mqtt.stayConnected(0); //keep the connection to broker alive } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nHinter dem heutigen Türchen befindet sich ein Taster. In dem heutigen Versuch wollen wir vor allem ein paar Trockenübungen zum Thema MQTT machen. Deswegen laden Sie das heutige Programm in das Board und öffnen Sie den Seriellen Monitor. Nach kurzer Zeit sehen Sie in etwa folgende Meldungen:\nDie Meldungen im Seriellen Monitor Das Board hat sich also erst mit dem WLAN verbunden und dann mit dem Online-Broker. Damit sich die vielen verschiedenen Nutzer nicht in die Quere kommen, muss eine besondere Struktur eingehalten werden. Sie können also nur in Unterthemen der Form NanoESP/MyMQTTiD/\u0026hellip; schreiben, wobei Sie MyMQTTiD durch die ID ersetzen müssen, die Sie vom Board im Seriellen Monitor angezeigt bekommen. Für den heutigen Tag heißt dass, dass alle in das individuell angepasste Topic NanoESP/MyMQTTiD/test schreiben.\nDamit Sie auch sehen können, was Sie in ein Topic schreiben, benutzen wir auf dem Rechner ein online Tool der Firma HiveMQ. Mit diesem Tool können Sie sich ebenfalls mit dem Broker verbinden und Ihre persönlichen Topics abonnieren oder in dieses schreiben. Gehen Sie nun also auf die Seite www.hivemq.com/try-out/ und klicken dort auf \u0026ldquo;Try the websocket client\u0026rdquo;. Nun müssen Sie zunächst eine Verbindung zu dem Broker aufbauen, indem Sie im Punkt Connection unter Host die Adresse broker.fkainka.de eintragen. Der Port und die ClientID können so bleiben und auch die anderen Parameter stimmen. Klicken Sie auf Connect. Hat alles funktioniert erscheint oben rechts neben einem grünen Punkt der Text connected und Sie haben in weiteren Bereichen die Möglichkeit, in ein Topic zu Publishen oder ein Topic zu Subscriben.\nKlicken Sie zunächst auf \u0026ldquo;Add New Topic Subscription\u0026rdquo; und geben unter Topic NanoESP/MyMQTTiD/test ein, wobei Sie MyMQTTiD durch die ID aus dem Seriellen Monitor ersetzen. Resetten Sie nun den NanoESP mit Druck auf den Resetbutton auf dem Board. Nach kurzer Zeit sollten Sie im Browser unter dem Punkt Messages die Nachricht \u0026ldquo;Hello from my NanoESP\u0026rdquo; empfangen. Sie können auch eine Nachricht an das Board senden, indem Sie unter Pubish in das Topic-Feld NanoESP/MyMQTTiD/test eintragen und unter Message eine beliebige Nachricht eingeben, z.B. \u0026ldquo;Hello from my Browser\u0026rdquo;. Nun bekommen Sie im Seriellen Monitor die Nachricht angezeigt. Die Kommunikation steht also.\nDer Wensocket Client von HiveMQ ","permalink":"https://iot.fkainka.de/day-20-mqtt-message-queue-telemetry-transport/","summary":"\u003cp\u003eFür die letzten Tage in diesem Advent werden Sie nun ein Thema kennenlernen, welches eine große Rolle im Bereich IoT spielt. Es geht um das Nachrichten-Protokoll MQTT (Message Queue Telemetry Transport) welches speziell für die Kommunikation von Machschienen zu Maschinen (M2M) entwickelt wurde. Der Grund warum dieses Protokoll so genial ist, liegt in der Kompaktheit und Einfachheit, mit der Daten wie Steuerdaten, Messdaten oder Texte, ausgetauscht werden können. Im Vergleich zum HTTP ist der Overhead (Daten die neben den eigentlichen Nutzdaten übermittelt werden) sehr kurz und können gerade von Embeded Devices, also Mikrocontrollern wie unserem NanoESP, gut verarbeitet werden. Gleichzeitig muss der Controller nicht selbst immer wieder eine Verbindung aufbauen und erfragen, ob es eine Veränderung gab, sondern die Verbindung wird dauerhaft gehalten und der Client automatisch über Veränderungen Informiert.\u003c/p\u003e","title":"Tag 20: MQTT (Message Queue Telemetry Transport)"},{"content":"Hallo zusammen,\nauf der Seite von Blynk habe ich dazu nichts gefunden. Man kann ja zusätzlich Blynk-Energie kaufen. Ist das für einen Monat, Woche, Tag?\nGruß\nMichael\n9 Antworten arduinowallah – 19.12.2016\nHi,\nwo hast Du denn davon gelesen?\nArduinowallah\nMichel2016 – 19.12.2016\ndas ist es ja ich habe dazu nichts gelesen, deshalb meine Frage. Wenn ich z.B ein 5000 Energie Pack kaufen würde, habe ich das dann für immer?\nGruß\nMichael\npaulaner – 20.12.2016\nIch habe 5000 dazu gekauft und ich hoffe es ist für immer.\nBis jetzt ist sie noch da.\nWidget Box -\u0026gt; +Add\npaulaner – 20.12.2016\nMeiner Meinung bringt es nichts, die Sketches mit den persönlichen Angaben und dem erhaltenen Token zu speichern und später wieder aufs Handy zu laden, bzw. in den Nano, da man trotz gleichem Handy und Code immer einen neuen, anderen Token erhält.\nErgo mehr Energie und man muss nicht löschen.\nNatürlich summieren sich damit die Kosten, doch wer ist so blauäugig?!\npaulaner – 20.12.2016\nNoch etwas. Ja auf deren Seite habe ich auch nichts gefunden, über Dauer und dergleichen.\nWer das Geld sparen will und Linux sein Eigen nennt und sich auch etwas auskennt, kann\neinen eigenen/lokale Blynk Server erstellen. Wie man das macht google ist dein Freund und\nes gibt Hilfe bei den Quellen. Wie man sich mit dem eigen Server verbindet auch.\nUnd nun das Wichtigste, man kann über die Admin Seite \u0026lsquo;FreeEnergy\u0026rsquo; freischalten.\nMarco – 20.12.2016\nHi,\nich schalte mich hier mal ein, falls in Zukunft noch jemand auf das Thema stößt.\nGekaufte Blynk Energie hält grundsätzlich ewig, verfällt also nicht oder Ähnliches. Allerdings kostet es Energie Widgets zu einem Projekt hinzuzufügen. Löscht man das Widget wieder, erhält man (nach derzeitigem Stand) 80% der Energie zurück. Heißt bspw. ein einfacher Button kostet 200 Energie, löscht man ihn wieder, erhält man 160 Energie zurück. Auf diese Weise wird die Energie beim rumexperimentieren etc. nach und nach aufgebraucht.\nDie Lösung wurde schon angesprochen, einfach einen eigenen Blynk Server aufsetzen und unbegrenzt Energie aktivieren.\npaulaner – 21.12.2016\nDanke Marco\nMarco – 21.12.2016\nLeider kann ich meinen vorigen Beitrag nicht editieren, deshalb hier:\nTut mir leid, ich muss meine eigene Aussage nochmal korrigieren, einen lokalen Blynk Server aufzusetzen erlaubt keine unbegrenzte Energie. Hatte mich da von Blynks Anfangszeit irritieren lassen (nutze Blynk schon länger), als das gesamte Projekt noch kostenlos war.\nDa das Erstellen der Projekte auch mit lokalem Server über die App läuft und diese nicht open source ist, funktioniert die Prozedur mit Energieverbrauch etc da ebenso wie im oben beschrieben “Normalfall”\nAuch mit lokalem Server geht einem also irgendwann die Energie aus. Einzig Nutzer, die damals Blynk auf Kickstarter unterstützt haben, erhalten als Dank unbegrenzte Energie.\nMarco – 21.12.2016\nMuss mich nach einem Update meines lokalen Servers nochmal korrigieren, mit der aktuellen Server Version 0.21.0 kann man über die User Verwaltung auf der Admin Seite wieder Energie an User vergeben. Ist ja quasi das gleiche wie unbegrenzte Energie.\n","permalink":"https://iot.fkainka.de/forum/topic/wie-lange-haelt-gekaufte-blynk-energie/","summary":"\u003cp\u003eHallo zusammen,\u003cbr\u003e\nauf der Seite von Blynk habe ich dazu nichts gefunden. Man kann ja zusätzlich Blynk-Energie kaufen. Ist das für einen Monat, Woche, Tag?\u003c/p\u003e\n\u003cp\u003eGruß\u003cbr\u003e\nMichael\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"9-antworten\"\u003e9 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003earduinowallah\u003c/strong\u003e – 19.12.2016\u003c/p\u003e\n\u003cp\u003eHi,\u003cbr\u003e\nwo hast Du denn davon gelesen?\u003c/p\u003e\n\u003cp\u003eArduinowallah\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMichel2016\u003c/strong\u003e – 19.12.2016\u003c/p\u003e\n\u003cp\u003edas ist es ja ich habe dazu nichts gelesen, deshalb meine Frage. Wenn ich z.B ein 5000 Energie Pack kaufen würde, habe ich das dann für immer?\u003c/p\u003e","title":"wie lange hält gekaufte Blynk Energie?"},{"content":"Hinter dem heutigen Türchen befindet sich ein weiteres Kabel. Mit den beiden Kabeln ist es nun möglich z.B. die RGB LED auch abseits des Boards zu platzieren. Die RGB-LED werden wir heute auch benötigen, denn es geht um eine Webseite, über die die Farbe der LED eingestellt werden kann. Doch das ist nicht der Hauptaspekt: Um das Konfigurieren des NanoESP nicht nur für Programmierer besonders einfach zu gestalten, gibt es eine Konfigurationsseite, über die die WLAN-Daten des Moduls eingestellt werden können. Doch zunächst zum Aufbau:\nDie RGB LED mit allen drei Vorwiderständen Das Programm: A16_P19_ConfigRGB.ino /* TCP-Server for RGB-Control Change SSID and PASSWORD. RGB-Led (common cathode) on Pins 3,5,6 */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_HTTP.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026#34;Websites.h\u0026#34; //#define SSID \u0026#34;YourSSID\u0026#34; //#define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define RED 3 #define GREEN 5 #define BLUE 6 #define GND 4 #define DEBUG true NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); void setup() { Serial.begin(19200); nanoesp.init(); pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(GND, OUTPUT); digitalWrite(GND, LOW); //! Only if you want to change the ACCESPOINT configuration //nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;); //! Only if you use a new Network // nanoesp.configWifi(DUAL, SSID, PASSWORD); //Dual Mode nanoesp.configWifiMode(DUAL); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Start TCP Server if (nanoesp.startTcpServer(80)) Serial.println(F(\u0026#34;TCP Server Activ\u0026#34;)); else Serial.println(F(\u0026#34;TCP Server Error\u0026#34;)); //Print IP in Terminal Serial.println(nanoesp.getIp()); } void loop() { String method, ressource, parameter; int id; if (http.recvRequest(id, method, ressource, parameter)) { Serial.println(\u0026#34;New Request from id :\u0026#34; + String(id) + \u0026#34;, method: \u0026#34; + method + \u0026#34;, ressource: \u0026#34; + ressource + \u0026#34; parameter: \u0026#34; + parameter); if (ressource == \u0026#34;/\u0026#34;) { http.sendFromFlash(id, index, sizeof(index)); nanoesp.closeConnection(id); } else if (ressource == \u0026#34;/config\u0026#34;) { http.sendFromFlash(id, config, sizeof(config)); nanoesp.closeConnection(id); } else if (ressource == \u0026#34;/setcolor\u0026#34;) { //COLOR nanoesp.closeConnection(id); if (parameter != \u0026#34; \u0026#34;) { long number = (long) strtol( \u0026amp;parameter[7], NULL, 16); //Convert String to Hex http://stackoverflow.com/questions/23576827/arduino-convert-a-sting-hex-ffffff-into-3-int // Split them up into r, g, b values int r = number \u0026gt;\u0026gt; 16; int g = number \u0026gt;\u0026gt; 8 \u0026amp; 0xFF; int b = number \u0026amp; 0xFF; analogWrite(RED, r); analogWrite(GREEN, g); analogWrite(BLUE, b); } } else if (ressource == \u0026#34;/setconfig\u0026#34;) { //new Wifi-Configuration nanoesp.closeConnection(id); if (parameter != \u0026#34; \u0026#34;) { if (wifiConfig(id, GetRidOfurlCharacters(parameter))) { Serial.println(nanoesp.getIp()); } } } else if (ressource == \u0026#34;/eventssid\u0026#34;) { //Wifi scanner http.sendStreamHeader(id); sendStreamData(id, \u0026#34;msg\u0026#34;, \u0026#34;Scanning...\u0026#34;); ssidTransmit(id); //Scan for WiFi Networks in range and transmit sendStreamData(id, \u0026#34;msg\u0026#34;, \u0026#34;Done\u0026#34;); } else { http.sendFromFlash(id, error404, sizeof(error404)); nanoesp.closeConnection(id); } } } bool wifiConfig(int id, String parameter) { //get new WiFi Configuration String ssid, pass, apssid, apass = \u0026#34;\u0026#34;; while (parameter.length() \u0026gt; 0) { String varName = parameter.substring(0, parameter.indexOf(\u0026#39;=\u0026#39;)); parameter = parameter.substring(parameter.indexOf(\u0026#39;=\u0026#39;) + 1); if (varName == \u0026#34;ssid\u0026#34;) ssid = parameter.substring(0, parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;)); if (varName == \u0026#34;apssid\u0026#34;) apssid = parameter.substring(0, parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;)); if (varName == \u0026#34;pass\u0026#34;) pass = parameter.substring(0, parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;)); if (varName == \u0026#34;apass\u0026#34;) apass = parameter.substring(0, parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;)); parameter = parameter.substring(parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;) + 1); } bool success = true; digitalWrite(LED_WLAN, LOW); if (ssid != \u0026#34;\u0026#34; ) success \u0026amp;= nanoesp.configWifiStation(ssid, pass); //set new Station config if (apssid != \u0026#34;\u0026#34; ) success \u0026amp;= nanoesp.configWifiAP(apssid, apass); //set new AccessPoint config digitalWrite(LED_WLAN, success); return success; } void ssidTransmit(int id) { //find and transmit wifis nanoesp.println(\u0026#34;AT+CWLAP\u0026#34;); nanoesp.setTimeout(5000); int i = 0; String ssids[10]; //max 10 ssids //get 10 scanned SSIDs while ((nanoesp.find(\u0026#34;+CWLAP:\u0026#34;)) \u0026amp;\u0026amp; (i \u0026lt; 10)) { nanoesp.find(\u0026#34;\\\u0026#34;\u0026#34;); ssids[i] = nanoesp.readStringUntil(\u0026#39;\\\u0026#34;\u0026#39;); i++; } nanoesp.find(\u0026#34;OK\\r\\n\u0026#34;); //transmit ssids to browser (and terminal) for (int x = 0; x \u0026lt; i; x++) { Serial.println (ssids[x]); if (!nanoesp.sendData(id, \u0026#34;event: ssid\\ndata: \u0026#34; + ssids[x] + \u0026#34;\\n\\n\u0026#34;)) Serial.println(\u0026#34;error wifi event\u0026#34;); } nanoesp.setTimeout(1000); } boolean sendStreamData(int connectionId, String event, String data) { return nanoesp.sendData(connectionId, \u0026#34;event: \u0026#34; + event + \u0026#34;\\n\u0026#34; + \u0026#34;data: \u0026#34; + data + \u0026#34;\\n\\n\u0026#34;); } String GetRidOfurlCharacters(String urlChars) // Convert URL-charakters no normal for ssid { urlChars.replace(\u0026#34;%0D%0A\u0026#34;, String(\u0026#39;\\n\u0026#39;)); urlChars.replace(\u0026#34;+\u0026#34;, \u0026#34; \u0026#34;); urlChars.replace(\u0026#34;%20\u0026#34;, \u0026#34; \u0026#34;); urlChars.replace(\u0026#34;%21\u0026#34;, \u0026#34;!\u0026#34;); urlChars.replace(\u0026#34;%22\u0026#34;, String(char(\u0026#39;\\\u0026#34;\u0026#39;))); urlChars.replace(\u0026#34;%23\u0026#34;, \u0026#34;#\u0026#34;); urlChars.replace(\u0026#34;%24\u0026#34;, \u0026#34;$\u0026#34;); urlChars.replace(\u0026#34;%25\u0026#34;, \u0026#34;%\u0026#34;); urlChars.replace(\u0026#34;%26\u0026#34;, \u0026#34;\u0026amp;\u0026#34;); urlChars.replace(\u0026#34;%27\u0026#34;, String(char(39))); urlChars.replace(\u0026#34;%28\u0026#34;, \u0026#34;(\u0026#34;); urlChars.replace(\u0026#34;%29\u0026#34;, \u0026#34;)\u0026#34;); urlChars.replace(\u0026#34;%2A\u0026#34;, \u0026#34;*\u0026#34;); urlChars.replace(\u0026#34;%2B\u0026#34;, \u0026#34;+\u0026#34;); urlChars.replace(\u0026#34;%2C\u0026#34;, \u0026#34;,\u0026#34;); urlChars.replace(\u0026#34;%2D\u0026#34;, \u0026#34;-\u0026#34;); urlChars.replace(\u0026#34;%2E\u0026#34;, \u0026#34;.\u0026#34;); urlChars.replace(\u0026#34;%2F\u0026#34;, \u0026#34;/\u0026#34;); urlChars.replace(\u0026#34;%30\u0026#34;, \u0026#34;0\u0026#34;); urlChars.replace(\u0026#34;%31\u0026#34;, \u0026#34;1\u0026#34;); urlChars.replace(\u0026#34;%32\u0026#34;, \u0026#34;2\u0026#34;); urlChars.replace(\u0026#34;%33\u0026#34;, \u0026#34;3\u0026#34;); urlChars.replace(\u0026#34;%34\u0026#34;, \u0026#34;4\u0026#34;); urlChars.replace(\u0026#34;%35\u0026#34;, \u0026#34;5\u0026#34;); urlChars.replace(\u0026#34;%36\u0026#34;, \u0026#34;6\u0026#34;); urlChars.replace(\u0026#34;%37\u0026#34;, \u0026#34;7\u0026#34;); urlChars.replace(\u0026#34;%38\u0026#34;, \u0026#34;8\u0026#34;); urlChars.replace(\u0026#34;%39\u0026#34;, \u0026#34;9\u0026#34;); urlChars.replace(\u0026#34;%3A\u0026#34;, \u0026#34;:\u0026#34;); urlChars.replace(\u0026#34;%3B\u0026#34;, \u0026#34;;\u0026#34;); urlChars.replace(\u0026#34;%3C\u0026#34;, \u0026#34;\u0026lt;\u0026#34;); urlChars.replace(\u0026#34;%3D\u0026#34;, \u0026#34;=\u0026#34;); urlChars.replace(\u0026#34;%3E\u0026#34;, \u0026#34;\u0026gt;\u0026#34;); urlChars.replace(\u0026#34;%3F\u0026#34;, \u0026#34;?\u0026#34;); urlChars.replace(\u0026#34;%40\u0026#34;, \u0026#34;@\u0026#34;); return urlChars; } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nWenn Sie das Programm in das Board geladen haben, können Sie die Webseite des Moduls aufrufen. Da Sie heute so tun, als würde das Board Ihre WLAN-Daten nicht bereits kennen, ist der Weg über den AccesPoint sinnvoll. Verbinden Sie sich also mit dem NanoESP Netzwerk. Nach dem Verbinden rufen Sie im Browser die IP 192.168.4.1 auf. Sie gelangen auf die Hauptseite des Boards, über die Sie die Farbe der RGB-LED einstellen können. Sie folgen allerdings den Link zu der Konfiguraionsseiten.\nAuf der Konfigurationsseite sehen Sie nun unten eine Text-Box, in der nach kurzer Zeit der Text „Scannnig …“ steht. Das Board sucht nun nach Netzwerken in Reichweite und übermittelt im Anschluss die Netzwerke mit den stärksten Signalen an die Webseite. Sie sehen nun die Nachricht „Done“ in der Textbox. In dem oberen Feld SSID können Sie nun Ihr Netzwerk auswählen. Falls es nicht gefunden wurde, z.B. weil Ihr Netzwerk versteckt ist, können Sie den Namen auch manuell eintragen. Im Textfeld darunter kommt das Netzwerkpasswort.\nIn den unteren Boxen können Sie außerdem einen anderen Namen für das AccesPoint Netzwerk eintragen und auch ein Passwort vergeben (min. 8 Zeichen). Aber Vorsicht, wenn Sie die falschen Heimnetzwerkdaten eingeben und dem AccesPoint Netzwerk ein Passwort vergeben, dass Sie dann vergessen, haben Sie ein Problem. Dann müssen Sie zuerst ein anderes Programm mit den richtigen Netzwerkdaten oder einem offenen AccesPoint hochladen, bevor Sie wieder Zugriff auf den Webserver des Boards bekommen.\nHier können Sie neue WLAN-Verbindungen einrichten ","permalink":"https://iot.fkainka.de/day19-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein weiteres Kabel. Mit den beiden Kabeln ist es nun möglich z.B. die RGB LED auch abseits des Boards zu platzieren. Die RGB-LED werden wir heute auch benötigen, denn es geht um eine Webseite, über die die Farbe der LED eingestellt werden kann. Doch das ist nicht der Hauptaspekt: Um das Konfigurieren des NanoESP nicht nur für Programmierer besonders einfach zu gestalten, gibt es eine Konfigurationsseite, über die die WLAN-Daten des Moduls eingestellt werden können. Doch zunächst zum Aufbau:\u003c/p\u003e","title":"Tag 19: Konfigurationsseite für den NanoESP"},{"content":"Hallo,\nwenn ich die NanoESP-Library verwende, die hier auf der Einführungsseite verlinkt ist, erhalte ich mit jeder Kompilierung eine ganze Latte an Warnmeldungen, die alle beginnen mit:\nArduino/libraries/NanoESP-1.1/NanoESP_MQTT.cpp:xxx:xx: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]\nund\n`Arduino/libraries/NanoESP-1.1/NanoESP_HTTP.cpp:33:43: warning: deprecated conversion from string constant to \u0026lsquo;char*\u0026rsquo; [-Wwrite-strings]\u0026rsquo;\nIch verwende die Arduino-Umgebung 1.6.13 unter Linux.\n","permalink":"https://iot.fkainka.de/forum/topic/deprecated-conversion-bei-verwendung-von-nanoesp-1-1/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ewenn ich die NanoESP-Library verwende, die hier auf der Einführungsseite verlinkt ist, erhalte ich mit jeder Kompilierung eine ganze Latte an Warnmeldungen, die alle beginnen mit:\u003cbr\u003e\n\u003ccode\u003eArduino/libraries/NanoESP-1.1/NanoESP_MQTT.cpp:xxx:xx: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eund\u003c/p\u003e\n\u003cp\u003e`Arduino/libraries/NanoESP-1.1/NanoESP_HTTP.cpp:33:43: warning: deprecated conversion from string constant to \u0026lsquo;char*\u0026rsquo; [-Wwrite-strings]\u0026rsquo;\u003c/p\u003e\n\u003cp\u003eIch verwende die Arduino-Umgebung 1.6.13 unter Linux.\u003c/p\u003e","title":"deprecated conversion bei Verwendung von NanoESP-1.1"},{"content":"Wenn ich mein Wordpress konto verändern möchte, erhalte ich:\nFatal error: Call to undefined function do_settings_sections() in /homepages/0/d450562774/htdocs/clickandbuilds/ConradAdventskalender2015/wp-content/themes/brickyard-premium/functions/fe/wp-display-header/wp-display-header.php on line 246\nAm Ende der Seite.\n","permalink":"https://iot.fkainka.de/forum/topic/user-edit-in-wordpress-mit-fehler/","summary":"\u003cp\u003eWenn ich mein Wordpress konto verändern möchte, erhalte ich:\u003c/p\u003e\n\u003cp\u003eFatal error: Call to undefined function do_settings_sections() in /homepages/0/d450562774/htdocs/clickandbuilds/ConradAdventskalender2015/wp-content/themes/brickyard-premium/functions/fe/wp-display-header/wp-display-header.php on line 246\u003c/p\u003e\n\u003cp\u003eAm Ende der Seite.\u003c/p\u003e","title":"User edit in Wordpress mit Fehler"},{"content":"Hinter dem heutigen Türchen befindet sich ein ganz besonderes Bauteil, nämlich ein Luftfeuchtesensor. Zusammen mit dem Phototransistor und dem NTC bauen Sie heute eine Klimastation für den Heimgebrauch. Dazu ist folgender Aufbau nötig:\nDer Aufbau mit allen Sensoren Der heutige Aufbau ist etwas kniffelig. Vor allem an der Stelle, an der das rechte Poti auf dem Bild sitzt, kommt es zu einer Berührung mit dem NanoESP. Dies ist aber nicht weiter schlimm, solange der auf dem Bild linke Kontakt fest im Board steckt.\nDie aktuellen Klimadaten im Browser Das Programm: A16_P18_Climate.ino /* TCP-Server Climate with server send events Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_HTTP.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026#34;Websites.h\u0026#34; #include \u0026lt;math.h\u0026gt; //#define SSID \u0026#34;YourSSID\u0026#34; //#define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define TEMP A0 #define LIGHT A1 #define HUMIDITY A4 #define GND A5 #define DEBUG true NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); void setup() { Serial.begin(19200); nanoesp.init(); //! Only if you want to change the ACCESPOINT configuration //nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;); //! Only if you use a new Network // nanoesp.configWifi(DUAL, SSID, PASSWORD); //Dual Mode nanoesp.configWifiMode(DUAL); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Start TCP Server if (nanoesp.startTcpServer(80)) Serial.println(F(\u0026#34;TCP Server Activ\u0026#34;)); else Serial.println(F(\u0026#34;TCP Server Error\u0026#34;)); //Print IP in Terminal Serial.println(nanoesp.getIp()); } int streamId = -1; byte errorCount; void loop() { String method, ressource, parameter; int id ; if (http.recvRequest(id, method, ressource, parameter)) { Serial.println(\u0026#34;New Request from id :\u0026#34; + String(id) + \u0026#34;, method: \u0026#34; + method + \u0026#34;, ressource: \u0026#34; + ressource + \u0026#34; parameter: \u0026#34; + parameter); if (ressource == \u0026#34;/\u0026#34;) { http.sendFromFlash(id, index, sizeof(index)); nanoesp.closeConnection(id); } else if (ressource == \u0026#34;/eventclimate\u0026#34;) { //new server send events connection if (http.sendStreamHeader(id)) { //send stream header as response streamId = id; //this id belongs to the sse-client sendStreamData(streamId,\u0026#34;msg\u0026#34;, \u0026#34;Connection established\u0026#34;); //send first message } } else { http.sendFromFlash(id, error404, sizeof(error404)); nanoesp.closeConnection(id); } } if (streamId \u0026gt; -1) { //there is a stream client if (!sendStreamData(streamId, \u0026#34;hum\u0026#34;, String(getRF()))) errorCount++; else errorCount = 0; //send server send event data if (!sendStreamData(streamId, \u0026#34;light\u0026#34;, String(getLight()))) errorCount++;else errorCount = 0; //send server send event data if (!sendStreamData(streamId, \u0026#34;temp\u0026#34;, String(getTemp()))) errorCount++;else errorCount = 0; //send server send event data if (errorCount \u0026gt; 6){ //client is disconnected if more than 6 transmissions were faulty nanoesp.closeConnection(streamId); streamId = -1; errorCount = 0; } } } boolean sendStreamData(int connectionId, String event, String data) { //Serial.println(String (connectionId) + \u0026#34; - \u0026#34; + event + \u0026#34; - \u0026#34; + data); return nanoesp.sendData(connectionId, \u0026#34;event: \u0026#34; + event + \u0026#34;\\n\u0026#34; + \u0026#34;data: \u0026#34; + data + \u0026#34;\\n\\n\u0026#34;); } int getRF() { //get Humidity, source: http://www.elektronik-labor.de/AVR/Rmessung.html#rx2 long U, R; double F; pinMode(HUMIDITY, INPUT); // Ddrb.3 = 0 \u0026#39;Eingang digitalWrite(HUMIDITY, HIGH); // Portb.3 = 1 \u0026#39;Pullup ein U = analogRead(HUMIDITY); // U = Getadc(3) digitalWrite(HUMIDITY, LOW); // Portb.3 = 0 \u0026#39;Pullup Aus pinMode(HUMIDITY, OUTPUT); // Ddrb.3 = 1 \u0026#39;Nierohmig pinMode(GND, INPUT); // Ddrb.4 = 0 \u0026#39;Eingang digitalWrite(GND, HIGH); // Portb.4 = 1 \u0026#39;Pullup ein U += analogRead(GND); // U = U + Getadc(2) digitalWrite(GND, LOW); // Portb.4 = 0 \u0026#39;Pullup Aus pinMode(GND, OUTPUT); // Ddrb.4 = 1 \u0026#39;Nierohmig. entladen U = U / 2; R = 3500 * U; //\u0026#39;R=35k*(U/1023-U) U = 1023 - U; R = (U \u0026gt; 0) ? R / U : 999999; //alternativ writing to: if(U\u0026gt;0) R = R/U; else R=999999; R = R - 450; //- interner Bahnwiderstand 0,45 k //Calculate Humidity F = R / 280; F = log(F); //ln f !!! F = F * 8.9; F = 100 - F; F = round(F); // Serial.println(String(R) + \u0026#34;Ohm \u0026#34; + String(F) + \u0026#34;%\u0026#34;); //delay(500); return F; } double getTemp() { //Source: http://playground.arduino.cc/ComponentLib/Thermistor2 double Temp; int RawADC = analogRead(TEMP); Temp = log(10000.0 * ((1024.0 / RawADC - 1))); // =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp ); Temp = Temp - 273.15; // Convert Kelvin to Celcius // Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit Temp = round(Temp*10); Temp = Temp/ 10; return Temp; } int getLight() { int vLight = analogRead(LIGHT); return vLight; } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nNach dem Upload des Programms können Sie nun die Webseite öffnen. Sie sehen drei Werte sowohl als Text aus auch als Balken dargestellt. Mit den Potis können Sie nun die Werte noch etwas nachjustieren. Besonders der Temperaturwert sollte mit einem Thermometer verglichen und angepasst werden. Nur so kann sichergestellt werden, dass die Angaben auf der Webseite ungefähr stimmen.\n","permalink":"https://iot.fkainka.de/day18-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein ganz besonderes Bauteil, nämlich ein Luftfeuchtesensor. Zusammen mit dem Phototransistor und dem NTC bauen Sie heute eine Klimastation für den Heimgebrauch. Dazu ist folgender Aufbau nötig:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day18_Climate_Steckplatine.jpg\"\u003e\u003cimg class=\"size-large wp-image-1391\" src=\"/images/2016/09/Day18_Climate_Steckplatine.jpg\" alt=\"Der Aufbau mit allen Sensoren\" width=\"616\" height=\"301\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau mit allen Sensoren\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDer heutige Aufbau ist etwas kniffelig. Vor allem an der Stelle, an der das rechte Poti auf dem Bild sitzt, kommt es zu einer Berührung mit dem NanoESP. Dies ist aber nicht weiter schlimm, solange der auf dem Bild linke Kontakt fest im Board steckt.\u003c/p\u003e","title":"Tag 18: Klimaüberwachung"},{"content":"Hallo,\nich habe über den Conrad IoT-Adventskalender den NanoESP bekommen, und bin wirklich begeistert.\nAllerdings habe ich bereits ein kleines Problem gefunden:\nDer Stromverbrauch über das WLAN-Modul ist anscheinend relativ hoch.\nDa ich den NanoESP für ein Projekt so lange wie möglich über einen 9V-Block betreiben möchte, will ich das WLAN-Modul des NanoESP abschalten (da ich für mein Projekt keine WLAN-Funktionalität brauche und das Modul anscheinend relativ viel Strom verbraucht).\nDa ich aber noch Anfänger in der Arduino-Programmierung und ganz besonders mit dem ESP bin, brauche ich Hilfe.\nKann mir jemand erklären, wie ich das WLAN-Modul abschalten, schlafen schicken, oder ähnliches tun kann, um zu verhinden, dass das WLAN-Modul unnötig Strom verbraucht?\nVielen Dank im Vorraus,\nLeon\n6 Antworten klaus – 18.12.2016\nHallo Leon,\nwenn Du WLAN gar nicht brauchst, würde ich Dir ein Arduino Nano empfehlen. Das Board ist nämlich ein Arduino Nano mit angebautem WLAN-Modul.\nLeon – 18.12.2016\nHallo Klaus,\nVielen Dank für die schnelle Antwort.\nEinfach Arduino Nanos zu kaufen ist vielleicht wirklich keine schlechte Idee.\nAllerdings würde es mich trotzdem interessieren, ob es nicht eine Möglichkeit gibt, das WLAN Modul (evtl. auch nur Zeitweise) per Software zu deaktivieren.\nDa das WLAN-Modul an sich ja schon verdammt praktisch ist, nur im Bereich des IoT relativ ungeschickt, da es so viel Strom verbraucht, wodurch man den Arduino nicht über längere Zeit per Batterie betreiben kann.\nfk – 18.12.2016\nHi,\nmit dem AT-Befehl AT+GSLP kann man das Modul in den Deep-Sleep Modus versetzen. Dadurch würde man schon eine menge Strom sparen. Allerdings gibt es keine direkte Möglichkeit das Modul dann wieder aufzuwecken. Man müsste entweder über den Reset-Pin des Moduls einen Reset auslösen, oder das ganze Board kurz stromlos machen.\nLeon – 19.12.2016\nHi,\nDanke fk, ich werde mal mit dem Befehl rumexperimentieren, vielleicht ist das genau das, was ich gesucht habe.\nbidouel – 17.04.2019\nwie kann ich ein Reset-Pin des Moduls einen Reset auslösen\nklaus – 17.04.2019\nEinfach den Reset-Pin auf Masse ziehen.\n","permalink":"https://iot.fkainka.de/forum/topic/wlan-modul-ausschalten-zum-stromsparen/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe über den Conrad IoT-Adventskalender den NanoESP bekommen, und bin wirklich begeistert.\u003cbr\u003e\nAllerdings habe ich bereits ein kleines Problem gefunden:\u003cbr\u003e\nDer Stromverbrauch über das WLAN-Modul ist anscheinend relativ hoch.\u003cbr\u003e\nDa ich den NanoESP für ein Projekt so lange wie möglich über einen 9V-Block betreiben möchte, will ich das WLAN-Modul des NanoESP abschalten (da ich für mein Projekt keine WLAN-Funktionalität brauche und das Modul anscheinend relativ viel Strom verbraucht).\u003c/p\u003e","title":"WLAN-Modul ausschalten zum Stromsparen"},{"content":"Error WLAN Connect\nTCP Server Activ\nAT+CIFSR\n+CIFSR:STAIP,\u0026ldquo;0.0.0.0\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:68:5b\u0026rdquo;\nOK\nno connection ntp server\nNo time request send\nDate: 1.1.1970\nTime: 00:00:16\nWas kann ich tun, damit die Verbindung nicht nur sporadisch ausfällt? Somit verbindet sich das Board auch nicht mit den NTP Server.\nVersuche habe ich dann mit der \u0026lsquo;alten\u0026rsquo; Zeitangabe gemacht und ist in Ordnung.\nÜber Hilfe würde ich mich freuen und wäre sehr dankbar.\nRouter Fritz7490\n2 Antworten paulaner – 17.12.2016\nok, während ich das schrieb hat der Router dem NanoESP eine IP Adresse gegeben.\nSomit hat er die \u0026lsquo;richtige\u0026rsquo; Zeit und das Datum.\nRichtig = Sommerzeit\nkub0185 – 19.12.2016\nHi,\nalso ich bekomme keine Verbindung hin.\nDas sehe ich in der Seriellen Konsole. Bisher hat das mit der Verbindung immer hingehauen. Hat einer eine idee wie man die Fehlerursache ingrenzen kann?\nError WLAN Connect\nTCP Server Error\nno connection ntp server\nNo time request send\nDate: 1.1.1970\nTime: 00:01:27\nDate: 1.1.1970\nTime: 00:02:0\nVG\nJürgen\n","permalink":"https://iot.fkainka.de/forum/topic/17-tag-error-wlan-connect/","summary":"\u003cp\u003eError WLAN Connect\u003cbr\u003e\nTCP Server Activ\u003cbr\u003e\nAT+CIFSR\u003c/p\u003e\n\u003cp\u003e+CIFSR:STAIP,\u0026ldquo;0.0.0.0\u0026rdquo;\u003cbr\u003e\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:68:5b\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eOK\u003c/p\u003e\n\u003cp\u003eno connection ntp server\u003cbr\u003e\nNo time request send\u003cbr\u003e\nDate: 1.1.1970\u003cbr\u003e\nTime: 00:00:16\u003c/p\u003e\n\u003cp\u003eWas kann ich tun, damit die Verbindung nicht nur sporadisch ausfällt? Somit verbindet sich das Board auch nicht mit den NTP Server.\u003cbr\u003e\nVersuche habe ich dann mit der \u0026lsquo;alten\u0026rsquo; Zeitangabe gemacht und ist in Ordnung.\u003c/p\u003e\n\u003cp\u003eÜber Hilfe würde ich mich freuen und wäre sehr dankbar.\u003cbr\u003e\nRouter Fritz7490\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003epaulaner\u003c/strong\u003e – 17.12.2016\u003c/p\u003e","title":"17.Tag 'Error WLAN Connect'"},{"content":"ich konnte die Experimente der ersten Tage nachvollziehen. Seitdem das Board als Webserver arbeiten soll, bin ich raus.\nMein Serieller Monitor meldet jedesmal \u0026quot;\nTCP Server Error\nAT+CIFSR\n+CIFSR:STAIP,\u0026ldquo;192.168.178.30\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:60:81\u0026rdquo;\nOK\nno connection ntp server\u0026quot;\nSSID und Passwort setze ich in jedem Sketch neu.\nIch habe während des Adventskalenders nichts gelernt und kann mir daher nicht selbst helfen.\n2 Antworten Detlef – 19.12.2016\nkann das was mit dem Port 80 zu tun haben, den der Befehl ja anspricht? Wie kann ich das prüfen? Kann ich einen anderen Port testen?\npaulaner – 19.12.2016\nIch kann dir da nicht wirklich helfen, aber ich denke über den \u0026lsquo;Monitor\u0026rsquo; und mit den AT-Befehlen kannst du den Fehler einkreisen.\nWelche Hard- Software verwendest du?\nHattest du schon ein Verbindung per Wifi von deinem \u0026lsquo;NanoESP\u0026rsquo; und Netzwerk?\n","permalink":"https://iot.fkainka.de/forum/topic/tcp-server/","summary":"\u003cp\u003eich konnte die Experimente der ersten Tage nachvollziehen. Seitdem das Board als Webserver arbeiten soll, bin ich raus.\u003cbr\u003e\nMein Serieller Monitor meldet jedesmal \u0026quot;\u003cbr\u003e\nTCP Server Error\u003c/p\u003e\n\u003cp\u003eAT+CIFSR\u003c/p\u003e\n\u003cp\u003e+CIFSR:STAIP,\u0026ldquo;192.168.178.30\u0026rdquo;\u003cbr\u003e\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:60:81\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eOK\u003c/p\u003e\n\u003cp\u003eno connection ntp server\u0026quot;\u003cbr\u003e\nSSID und Passwort setze ich in jedem Sketch neu.\u003cbr\u003e\nIch habe während des Adventskalenders nichts gelernt und kann mir daher nicht selbst helfen.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDetlef\u003c/strong\u003e – 19.12.2016\u003c/p\u003e\n\u003cp\u003ekann das was mit dem Port 80 zu tun haben, den der Befehl ja anspricht? Wie kann ich das prüfen? Kann ich einen anderen Port testen?\u003c/p\u003e","title":"TCP Server"},{"content":"Hallo zusammen,\nirgendwie hänge ich noch am Tag 14 fest.\nich bekomme immer beim Hochladen die Fehlermeldung:\n\u0026lsquo;getTemp\u0026rsquo; was not declared in this scope\n\u0026lsquo;Thermistor\u0026rsquo; was not declared in this scope\nIch habe alles mehrere male überprüft, aber irgendwie\nändert sich da nichts.\nKann mir da jemand weiterhelfen??\nDanke\nGruss Larry\n5 Antworten fk – 18.12.2016\nHallo,\nhast du das Programm über den Download-Button heruntergeladen?\nLarry – 18.12.2016\nJa hab ich. Hab es gerade sogar nochmal versucht. Es kommt immer das Gleiche.\nIch muss doch nur mein Wlan, Passwort und Token eintragen. Mehr nicht oder??\nLarry – 18.12.2016\nHier nochmal alle Daten und das Programm\nHier bleibt es hängen \u0026ldquo;timer.setInterval(500L, getTemp);\u0026rdquo;\nund bei \u0026ldquo;double currValue = Thermistor(analogRead(A0)); //Convert to C !!! Pot: round((x*10)/10)\u0026rdquo;\nArduino 1.6.13\nWindows 10\nProgramm:\n/*\nBlnky10: NTC-Sensor\nChange ssid, password, token and email\n*/\nchar ssid[] = \u0026ldquo;XXXXXXXXX\u0026rdquo;;\nchar password[] = \u0026ldquo;XXXXXXXXXXX\u0026rdquo;;\nchar token[] = \u0026ldquo;XXXXXXXXXXXXX\u0026rdquo;;\nchar email[] = \u0026ldquo;XXXXXXXXXXXXXXX\u0026rdquo;;\nchar subject[] = \u0026ldquo;TemperaturSummary\u0026rdquo;;\n#define BLYNK_DEBUG\n#define BLYNK_PRINT Serial // Comment this out to disable prints and save space\n#include \u0026lt;ESP8266_SoftSer.h\u0026gt;\n#include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt;\n#include \u0026lt;SimpleTimer.h\u0026gt;\n#include \u0026lt;TimeLib.h\u0026gt;\n// Set ESP8266 Serial object\n#include \u0026lt;SoftwareSerial.h\u0026gt;\nSoftwareSerial EspSerial(11, 12); // RX, TX\nESP8266 wifi(EspSerial);\nSimpleTimer timer;\n//init max min value (0 makes no sense)\ndouble tempMax = - 273;\ndouble tempMin = +200;\nbool autoSend;\nvoid setup()\n{\n// Set console baud rate\nSerial.begin(19200);\nEspSerial.begin(19200);\nBlynk.begin(token, wifi, ssid, password);\n//timer for temp measure\ntimer.setInterval(500L, getTemp);\n}\nvoid loop()\n{\nBlynk.run();\ntimer.run(); //Call timer (other than normal timers)\n}\nBLYNK_CONNECTED() {\nBlynk.syncVirtual(V5); //sync email auto send state\n}\nvoid getTemp() { //get temp, convert to C and send\ndouble currValue = Thermistor(analogRead(A0)); //Convert to C !!! Pot: round((x*10)/10)\nif (currValue \u0026lt; tempMin) {\ntempMin = currValue;\n}\nif (currValue \u0026gt; tempMax) {\ntempMax = currValue;\n}\nBlynk.virtualWrite(V0, currValue);\nBlynk.virtualWrite(V1, currValue);\nBlynk.virtualWrite(V3, tempMin);\nBlynk.virtualWrite(V2, tempMax);\n}\ndouble Thermistor(int RawADC) {\n//Source: http://playground.arduino.cc/ComponentLib/Thermistor2\ndouble Temp;\nTemp = log(10000.0 * ((1024.0 / RawADC - 1)));\n// =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration\nTemp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp );\nTemp = Temp - 273.15; // Convert Kelvin to Celcius\n// Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit\nreturn Temp;\n}\nvoid sendSummary() { //send email summary\nString msg = \u0026ldquo;Tempertur Summary:\\nCurrent Temperatur: \u0026quot; + String(Thermistor(analogRead(A0))) + \u0026quot; C\\n\\nMax. Temp: \u0026quot; + String(tempMax) + \u0026ldquo;C \\n\\nMin. Temp: \u0026quot; + String(tempMin) + \u0026ldquo;C \\n\u0026rdquo;;\nBlynk.email(email, subject, msg);\n}\nBLYNK_WRITE(V6) { //Timer Send\nif (autoSend) {\nsendSummary();\n}\n}\nBLYNK_WRITE(V4) { //Button Send\nsendSummary();\n}\nBLYNK_WRITE(V5) { //config email send\nautoSend = param.asInt();\n}\nDANKE\nYogi – 18.12.2016\nHallo Larry,\nschau mal in die Fragen vom Tag14. Da habe ich eine Lösung reingestellt, nur durch \u0026lsquo;umsortierung\u0026rsquo; des Codes\ngut blynk\nYogi\nLarry – 18.12.2016\nVielen dank,\nes hat funktioniert.\nSchönes WE noch\n","permalink":"https://iot.fkainka.de/forum/topic/tag-14/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eirgendwie hänge ich noch am Tag 14 fest.\u003cbr\u003e\nich bekomme immer beim Hochladen die Fehlermeldung:\u003c/p\u003e\n\u003cp\u003e\u0026lsquo;getTemp\u0026rsquo; was not declared in this scope\u003cbr\u003e\n\u0026lsquo;Thermistor\u0026rsquo; was not declared in this scope\u003c/p\u003e\n\u003cp\u003eIch habe alles mehrere male überprüft, aber irgendwie\u003cbr\u003e\nändert sich da nichts.\u003cbr\u003e\nKann mir da jemand weiterhelfen??\u003c/p\u003e\n\u003cp\u003eDanke\u003c/p\u003e\n\u003cp\u003eGruss Larry\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"5-antworten\"\u003e5 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 18.12.2016\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ehast du das Programm über den Download-Button heruntergeladen?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLarry\u003c/strong\u003e – 18.12.2016\u003c/p\u003e\n\u003cp\u003eJa hab ich. Hab es gerade sogar nochmal versucht. Es kommt immer das Gleiche.\u003cbr\u003e\nIch muss doch nur mein Wlan, Passwort und Token eintragen. Mehr nicht oder??\u003c/p\u003e","title":"Tag 14"},{"content":"Das Projekt des heutigen Tages orientiert sich an einer bekannten Lampe von Phillips, dem Wake Up Light. Es handelt sich dabei um einen sanften Wecker, denn anstelle laut zu tönen wird langsam die Helligkeit erhöht. So entsteht eine Art Sonnenaufgang und der Körper wird auf natürliche Weise wach.\nHinter dem heutigen Türchen befindet sich ein weites Poti, welches für den morgigen Versuch wichtig ist. Heute wird folgender Aufbau benötigt:\nDie RGB LED mit Vorwiderständen Das Programm: A16_P17_WakeUpLight.ino /* TCP-Server: Wakeup light Change SSID and PASSWORD. RGB-Led (common cathode) on Pins 3,5,6 */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_HTTP.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026#34;Websites.h\u0026#34; #include \u0026lt;math.h\u0026gt; #include \u0026lt;Time.h\u0026gt; #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 #define RED 3 #define GREEN 5 #define BLUE 6 #define GND 4 #define BUTTON 7 NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); //String timeServerIP = ; // time.nist.gov NTP server address String ntpServerName = \u0026#34;195.145.119.188\u0026#34;;//\u0026#34;time.nist.gov\u0026#34;; const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets int alarmHour = 0, alarmMinute = 2; bool alarm; byte cRed = 0, cBlue = 0, cGreen = 0; unsigned long previousMillis = 0; // will store last time a msg was send unsigned long interval = 78; // void setup() { Serial.begin(19200); nanoesp.init(); pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(GND, OUTPUT); digitalWrite(GND, LOW); pinMode(BUTTON, INPUT); //Only Station Mode for TimeSync nanoesp.configWifiMode(STATION); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Start TCP Server if (nanoesp.startTcpServer(80)) Serial.println(F(\u0026#34;TCP Server Activ\u0026#34;)); else Serial.println(F(\u0026#34;TCP Server Error\u0026#34;)); //Print IP in Terminal Serial.println(nanoesp.getIp()); setSyncProvider(getNtpTime); Show_Time(); } time_t getNtpTime() { //convert to time_t , Paramter: connectionId, ServerAdress, Timezone return (time_t)getNTPpacket(4, ntpServerName, 2); } void loop() { String method, ressource, parameter; int id ; if (http.recvRequest(id, method, ressource, parameter)) { Serial.println(\u0026#34;New Request from id :\u0026#34; + String(id) + \u0026#34;, method: \u0026#34; + method + \u0026#34;, ressource: \u0026#34; + ressource + \u0026#34; parameter: \u0026#34; + parameter); if (ressource == \u0026#34;/\u0026#34;) { http.sendFromFlash(id, index, sizeof(index)); nanoesp.closeConnection(id); } if (ressource == \u0026#34;/settimer\u0026#34;) { if (parameter != \u0026#34;\u0026#34;) { //timer=02%3A03\u0026amp; String sHour = parameter.substring(parameter.indexOf(\u0026#39;=\u0026#39;) + 1, parameter.indexOf(\u0026#39;%\u0026#39;)); String sMin = parameter.substring(parameter.indexOf(\u0026#39;A\u0026#39;) + 1, parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;)); String sDuration = parameter.substring(parameter.indexOf(\u0026#39;\u0026amp;\u0026#39;) + 1); sDuration = sDuration.substring(sDuration.indexOf(\u0026#39;=\u0026#39;) + 1, sDuration.indexOf(\u0026#39;\u0026amp;\u0026#39;)); alarmHour = sHour.toInt(); alarmMinute = sMin.toInt(); int iDuration = sDuration.toInt(); interval *= iDuration; Serial.println(\u0026#34;Timer: \u0026#34; + String(alarmHour) + \u0026#34;:\u0026#34; + String(alarmMinute) + \u0026#34; Duartion: \u0026#34; + String (iDuration) ); Show_Time(); } nanoesp.closeConnection(id); } if (ressource == \u0026#34;/turnoff\u0026#34;) { alarm = false; cRed = 0; cBlue = 0; cGreen =0; analogWrite(RED,cRed); analogWrite(BLUE,cBlue);analogWrite(GREEN,cGreen); } else { http.sendFromFlash(id, error404, sizeof(error404)); nanoesp.closeConnection(id); } } else { if (hour() == alarmHour) { if (minute() == alarmMinute) { if (!alarm) alarm = true; } } if (alarm) wakeUp(); } } void MorningAlarm() { Serial.println(\u0026#34;Alarm: - turn lights off\u0026#34;); } void wakeUp() { if (millis() - previousMillis \u0026gt;= interval) { previousMillis = millis(); if (cRed == 0) Show_Time(); if (cRed \u0026lt; 255) { cRed++; analogWrite(RED, cRed ); } else { if (cGreen \u0026lt; 255) { cGreen++; analogWrite(GREEN, cGreen); } else { if (cBlue \u0026lt; 255) { cBlue++; analogWrite(BLUE, cBlue ); if (cBlue == 255) Show_Time(); } } } } } // prepare an NTP request to the time server and send to the given bool sendNTPpacket(int id, String address) { // set all bytes in the buffer to 0 memset(packetBuffer, 0, NTP_PACKET_SIZE); // Initialize values needed to form NTP request // (see URL above for details on the packets) packetBuffer[0] = 0b11100011; // LI, Version, Mode packetBuffer[1] = 0; // Stratum, or type of clock packetBuffer[2] = 6; // Polling Interval packetBuffer[3] = 0xEC; // Peer Clock Precision // 8 bytes of zero for Root Delay \u0026amp; Root Dispersion packetBuffer[12] = 49; packetBuffer[13] = 0x4E; packetBuffer[14] = 49; packetBuffer[15] = 52; // // if we need a cr/lf // packetBuffer[NTP_PACKET_SIZE ] = 0x0D; packetBuffer[NTP_PACKET_SIZE + 1] = 0x0A; // all NTP fields have been given values, now // you can send a packet requesting a timestamp: if ( nanoesp.sendRaw(id, packetBuffer, NTP_PACKET_SIZE)) return true; return false; } long getNTPpacket(int id, String address, int timeZone) { unsigned long secsSince1900; byte offset = 40; if (!nanoesp.newConnection(id, UDP, address, 123)) Serial.println (\u0026#34;no connection ntp server\u0026#34;); //NTP requests are to port 123 delay(100); if (!sendNTPpacket(id, address)) { Serial.println(\u0026#34;No time request send\u0026#34;); return 0; } nanoesp.setTimeout(2000); if (nanoesp.find(\u0026#34;+IPD,\u0026#34;)) { int vid = nanoesp.parseInt(); nanoesp.find(\u0026#34;,\u0026#34;); int len = nanoesp.parseInt(); //Serial.println(String(len)); byte buffer[len]; nanoesp.find(\u0026#34;:\u0026#34;); nanoesp.readBytes(buffer, 48); // for (int i = 0; i \u0026lt;= NTP_PACKET_SIZE; i++) { // Serial.print(buffer[i], HEX); // } // convert four bytes starting at location 40 to a long integer secsSince1900 = (unsigned long)buffer[offset + 0] \u0026lt;\u0026lt; 24; secsSince1900 |= (unsigned long)buffer[offset + 1] \u0026lt;\u0026lt; 16; secsSince1900 |= (unsigned long)buffer[offset + 2] \u0026lt;\u0026lt; 8; secsSince1900 |= (unsigned long)buffer[offset + 3]; nanoesp.find(\u0026#34;OK\\r\\n\u0026#34;); nanoesp.closeConnection(id); // return secsSince1900 + timeZone * SECS_PER_HOUR; // NTP Date return secsSince1900 - 2208988800UL + timeZone * SECS_PER_HOUR; // UNIX Date } else { Serial.println(\u0026#34;no time recieved\u0026#34;); nanoesp.closeConnection(id); return 0; } } void Show_Time() { String shour, sminute, ssecond; Serial.print(\u0026#34;Date: \u0026#34;); Serial.print(day()); Serial.print(\u0026#34;.\u0026#34;); Serial.print(month()); Serial.print(\u0026#34;.\u0026#34;); Serial.println(year()); if (hour() \u0026lt;= 9) shour = \u0026#34;0\u0026#34; + String(hour()); else shour = String(hour()); // adjust for 0-9 if (minute() \u0026lt;= 9) sminute = \u0026#34;0\u0026#34; + String(minute()); else sminute = String(minute()); if (second() \u0026lt;= 9) ssecond = \u0026#34;0\u0026#34; + String(second()); else ssecond = String(second()); Serial.println( \u0026#34;Time: \u0026#34; + shour + \u0026#34;:\u0026#34; + sminute + \u0026#34;:\u0026#34; + ssecond ); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nNach dem Aufbau können Sie das Programm herunterladen und auf das Board uploaden. Nach dem Aufspielen öffnen Sie den Browser und geben die IP des Boards ein. Auf der nun erscheinenden Seite können Sie einen Zeitpunkt auswählen, zu dem der Wake-Up-Vorgang starten soll. Außerdem können Sie die Dauer angeben. In der Standardeinstellung sind es 30 Minuten. Wenn der Zeitpunkt erreicht wird, beginnt die LED zunächst rot und dunkel zu leuchten. Langsam wird sie immer heller und schließlich mischt sich auch die grüne LED dazu, was einen gelben Ton ergibt. Zuletzt erhellt sich auch die blaue LED, was in einem helles Weiß resultiert mit dem das ganze Schlafzimmer erhellt wird.\nAuf dieser Webseite stellen Sie den Timer ","permalink":"https://iot.fkainka.de/day17-2016/","summary":"\u003cp\u003eDas Projekt des heutigen Tages orientiert sich an einer bekannten Lampe von Phillips, dem Wake Up Light. Es handelt sich dabei um einen sanften Wecker, denn anstelle laut zu tönen wird langsam die Helligkeit erhöht. So entsteht eine Art Sonnenaufgang und der Körper wird auf  natürliche Weise wach.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein weites Poti, welches für den morgigen Versuch wichtig ist. Heute wird folgender Aufbau benötigt:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day10_1_RGB-2.jpg\"\u003e\u003cimg class=\"size-large wp-image-1386\" src=\"/images/2016/09/Day10_1_RGB-2.jpg\" alt=\"Die RGB LED mit Vorwiderständen\" width=\"616\" height=\"362\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDie RGB LED mit Vorwiderständen\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cdetails class=\"spoiler\"\u003e\n  \u003csummary\u003eDas Programm: A16_P17_WakeUpLight.ino\u003c/summary\u003e\n  \u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e/*\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  TCP-Server: Wakeup light\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  Change SSID and PASSWORD.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  RGB-Led (common cathode) on Pins 3,5,6\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e*/\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;NanoESP.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;NanoESP_HTTP.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;SoftwareSerial.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026#34;Websites.h\u0026#34;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;math.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;Time.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define SSID \u0026#34;YourSSID\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define PASSWORD \u0026#34;YourPassword\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define LED_WLAN 13\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define RED 3\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define GREEN 5\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BLUE 6\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define GND 4\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BUTTON 7\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eNanoESP\u003c/span\u003e \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eNanoESP\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eNanoESP_HTTP\u003c/span\u003e \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eNanoESP_HTTP\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//String timeServerIP = ; // time.nist.gov NTP server address\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003entpServerName\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;195.145.119.188\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\u003cspan class=\"c1\"\u003e//\u0026#34;time.nist.gov\u0026#34;;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003econst\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e48\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"c1\"\u003e// NTP time stamp is in the first 48 bytes of the message\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003ebyte\u003c/span\u003e \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e \u003cspan class=\"c1\"\u003e//buffer to hold incoming and outgoing packets\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003ealarmHour\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ealarmMinute\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003ebyte\u003c/span\u003e \u003cspan class=\"n\"\u003ecRed\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e \u003cspan class=\"n\"\u003epreviousMillis\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e        \u003cspan class=\"c1\"\u003e// will store last time a msg was send\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e \u003cspan class=\"n\"\u003einterval\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e78\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"c1\"\u003e//\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003esetup\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003einit\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eRED\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eOUTPUT\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eGREEN\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eOUTPUT\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eBLUE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eOUTPUT\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eGND\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eOUTPUT\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003edigitalWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eGND\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eLOW\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eBUTTON\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eINPUT\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Only Station Mode for TimeSync\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003econfigWifiMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eSTATION\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//delay(1000);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// Wait till Connected to WiFi\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ewifiConnected\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\u003cspan class=\"n\"\u003edigitalWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eLED_WLAN\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eHIGH\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Error WLAN Connect\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Start TCP Server\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003estartTcpServer\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e80\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TCP Server Activ\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e   \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TCP Server Error\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Print IP in Terminal\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetIp\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003esetSyncProvider\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003egetNtpTime\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eShow_Time\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003etime_t\u003c/span\u003e \u003cspan class=\"nf\"\u003egetNtpTime\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//convert to time_t , Paramter: connectionId, ServerAdress, Timezone\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etime_t\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"n\"\u003egetNTPpacket\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e4\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003entpServerName\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eloop\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eid\u003c/span\u003e \u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erecvRequest\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;New Request from id :\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;, method: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e  \u003cspan class=\"s\"\u003e\u0026#34;, ressource: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e  \u003cspan class=\"s\"\u003e\u0026#34; parameter: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esendFromFlash\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eindex\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"k\"\u003esizeof\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eindex\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;/settimer\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparameter\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"c1\"\u003e//timer=02%3A03\u0026amp;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003esHour\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;=\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;%\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003esMin\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;A\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;\u0026amp;\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003esDuration\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;\u0026amp;\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003esDuration\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;=\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003esDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eindexOf\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sc\"\u003e\u0026#39;\u0026amp;\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003ealarmHour\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esHour\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etoInt\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003ealarmMinute\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esMin\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etoInt\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eiDuration\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etoInt\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003einterval\u003c/span\u003e \u003cspan class=\"o\"\u003e*=\u003c/span\u003e \u003cspan class=\"n\"\u003eiDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Timer: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarmHour\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;:\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarmMinute\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;   Duartion: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eiDuration\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eShow_Time\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;/turnoff\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ecRed\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eRED\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003ecRed\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eBLUE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eGREEN\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esendFromFlash\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eerror404\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"k\"\u003esizeof\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eerror404\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehour\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"n\"\u003ealarmHour\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eminute\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"n\"\u003ealarmMinute\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003ewakeUp\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eMorningAlarm\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Alarm: - turn lights off\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003ewakeUp\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003emillis\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e-\u003c/span\u003e \u003cspan class=\"n\"\u003epreviousMillis\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026gt;=\u003c/span\u003e \u003cspan class=\"n\"\u003einterval\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003epreviousMillis\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003emillis\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ecRed\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003eShow_Time\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ecRed\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e255\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ecRed\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eRED\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecRed\u003c/span\u003e \u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e255\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eGREEN\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecGreen\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e255\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          \u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e\u003cspan class=\"o\"\u003e++\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eBLUE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e \u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ecBlue\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"mi\"\u003e255\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003eShow_Time\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// prepare an NTP request to the time server and send to the given\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003ebool\u003c/span\u003e \u003cspan class=\"nf\"\u003esendNTPpacket\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003eaddress\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// set all bytes in the buffer to 0\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003ememset\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// Initialize values needed to form NTP request\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// (see URL above for details on the packets)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mb\"\u003e0b11100011\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e   \u003cspan class=\"c1\"\u003e// LI, Version, Mode\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e     \u003cspan class=\"c1\"\u003e// Stratum, or type of clock\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e6\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e     \u003cspan class=\"c1\"\u003e// Polling Interval\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mh\"\u003e0xEC\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e  \u003cspan class=\"c1\"\u003e// Peer Clock Precision\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// 8 bytes of zero for Root Delay \u0026amp; Root Dispersion\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e12\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e49\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e13\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mh\"\u003e0x4E\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e14\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e49\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e15\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e52\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// if we need a cr/lf\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e    \u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mh\"\u003e0x0D\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e  \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mh\"\u003e0x0A\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// all NTP fields have been given values, now\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// you can send a packet requesting a timestamp:\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esendRaw\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003epacketBuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eNTP_PACKET_SIZE\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003elong\u003c/span\u003e \u003cspan class=\"nf\"\u003egetNTPpacket\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003eaddress\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003etimeZone\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003ebyte\u003c/span\u003e          \u003cspan class=\"n\"\u003eoffset\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"mi\"\u003e40\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003enewConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eUDP\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eaddress\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e123\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;no connection ntp server\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e//NTP requests are to port 123\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003edelay\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e100\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003esendNTPpacket\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eaddress\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;No time request send\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esetTimeout\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e2000\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;+IPD,\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003evid\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eparseInt\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;,\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003elen\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eparseInt\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//Serial.println(String(len));\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003ebyte\u003c/span\u003e \u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003elen\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;:\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ereadBytes\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e48\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//    for (int i = 0; i \u0026lt;= NTP_PACKET_SIZE; i++) {\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//      Serial.print(buffer[i], HEX);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//    }\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e// convert four bytes starting at location 40 to a long integer\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e  \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eoffset\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e24\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e \u003cspan class=\"o\"\u003e|=\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eoffset\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e16\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e \u003cspan class=\"o\"\u003e|=\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eoffset\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;\u0026lt;\u003c/span\u003e \u003cspan class=\"mi\"\u003e8\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e \u003cspan class=\"o\"\u003e|=\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"kt\"\u003eunsigned\u003c/span\u003e \u003cspan class=\"kt\"\u003elong\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"n\"\u003ebuffer\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"n\"\u003eoffset\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"mi\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e];\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;OK\u003c/span\u003e\u003cspan class=\"se\"\u003e\\r\\n\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//   return secsSince1900 + timeZone * SECS_PER_HOUR;                    // NTP  Date\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"n\"\u003esecsSince1900\u003c/span\u003e \u003cspan class=\"o\"\u003e-\u003c/span\u003e \u003cspan class=\"mi\"\u003e2208988800UL\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003etimeZone\u003c/span\u003e \u003cspan class=\"o\"\u003e*\u003c/span\u003e \u003cspan class=\"n\"\u003eSECS_PER_HOUR\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e         \u003cspan class=\"c1\"\u003e// UNIX Date      \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;no time recieved\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eShow_Time\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003eshour\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003esminute\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003essecond\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Date: \u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eday\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;.\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003emonth\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;.\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eyear\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehour\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e9\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003eshour\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehour\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003eshour\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehour\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// adjust for 0-9\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eminute\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e9\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003esminute\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eminute\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e  \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003esminute\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eminute\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esecond\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"o\"\u003e\u0026lt;=\u003c/span\u003e \u003cspan class=\"mi\"\u003e9\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003essecond\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;0\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esecond\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e  \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003essecond\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esecond\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Time: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eshour\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;:\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003esminute\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;:\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003essecond\u003c/span\u003e \u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\n\u003cp\u003e\u003cem\u003e(Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\u003c/em\u003e\u003c/p\u003e","title":"Tag 17: Wake Up Light"},{"content":"Hinter dem heutigen Türchen befindet sich ein Piezzo Schallwandler. Mit ihm ist es möglich, Töne zu generieren, wie im heutigen Versuch deutlich wird. Sie basteln heute eine Art Klavier, das über eine Webseite bedient werden kann. Doch zunächst der Aufbau:\nDer Piezzo richtig angeschlossen Das Programm: A16_P16_WebserverPiano.ino /* TCP-Server Piano Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_HTTP.h\u0026gt; //special library for http-connection #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026#34;Websites.h\u0026#34; //websites in a special file as progmem #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); void setup() { Serial.begin(19200); nanoesp.init(); //! Only if you want to change the ACCESPOINT configuration //nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;); //! Only if you use a new Network // nanoesp.configWifi(DUAL, SSID, PASSWORD); //Dual Mode nanoesp.configWifiMode(DUAL); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Start TCP Server if (nanoesp.startTcpServer(80)) Serial.println(F(\u0026#34;TCP Server Activ\u0026#34;)); else Serial.println(F(\u0026#34;TCP Server Error\u0026#34;)); //Print IP in Terminal Serial.println(nanoesp.getIp()); } void loop() { String method, ressource, parameter; int id; if (http.recvRequest(id, method, ressource, parameter)) { //Incoming request, parameters by reference Serial.println(\u0026#34;New Request from id :\u0026#34; + String(id) + \u0026#34;, method: \u0026#34; + method + \u0026#34;, ressource: \u0026#34; + ressource + \u0026#34; parameter: \u0026#34; + parameter); if (ressource == \u0026#34;/\u0026#34;) { http.sendFromFlash(id, index, sizeof(index)); nanoesp.closeConnection(id); } else if (ressource == \u0026#34;/dataonly\u0026#34;) { //only data is recieved on this url, no need to send a website nanoesp.closeConnection(id); } else { http.sendFromFlash(id, error404, sizeof(error404)); nanoesp.closeConnection(id); } if (parameter != \u0026#34;\u0026#34;) //the request included parameters { String strTone; if (method == GET) strTone = parameter.substring(6); else strTone = parameter.substring(5); //get note values noTone(8); tone(8, strTone.toInt(), 200); //play note for 200ms } } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nWenn Sie das Programm hochgeladen haben, können Sie die Webseite des Boards über die IP im Browser öffnen. Es ist heute egal ob Sie sich über Ihr Heimnetzwerk oder über den AccessPoint mit dem Board verbinden, denn es werden keine externen Daten geladen. Auf der Webseite finden Sie dann einige Buttons mit deren Betätigung Sie einen Ton auslösen. Die Übertragung ist recht schnell, aber dennoch sollten Sie dem Board eine Viertelsekunde Zeit geben um den Ton zu spielen, bevor Sie einen weiteren Ton senden. Ansonsten hört sich der Ton sehr seltsam an. Probieren Sie doch einmal den Klassiker unter den Anfängerliedern: Alle meine Entchen. Die Töne lauten:\nC D E F G G A A A A G A A A A G F F F F E E G G G G C\nDie Piano Webseite ","permalink":"https://iot.fkainka.de/day16-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein Piezzo Schallwandler. Mit ihm ist es möglich, Töne zu generieren, wie im heutigen Versuch deutlich wird. Sie basteln heute eine Art Klavier, das über eine Webseite bedient werden kann. Doch zunächst der Aufbau:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day16_Piezzo_Steckplatine.jpg\"\u003e\u003cimg class=\"size-large wp-image-1382\" src=\"/images/2016/09/Day16_Piezzo_Steckplatine.jpg\" alt=\"Der Piezzo richtig angeschlossen\" width=\"616\" height=\"401\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Piezzo richtig angeschlossen\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cdetails class=\"spoiler\"\u003e\n  \u003csummary\u003eDas Programm: A16_P16_WebserverPiano.ino\u003c/summary\u003e\n  \u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e/*\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  TCP-Server Piano\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  Change SSID and PASSWORD.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e*/\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;NanoESP.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;NanoESP_HTTP.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e \u003c/span\u003e\u003cspan class=\"c1\"\u003e//special library for http-connection\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;SoftwareSerial.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026#34;Websites.h\u0026#34;\u003c/span\u003e\u003cspan class=\"cp\"\u003e \u003c/span\u003e\u003cspan class=\"c1\"\u003e//websites in a special file as progmem\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define SSID \u0026#34;YourSSID\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define PASSWORD \u0026#34;YourPassword\u0026#34;\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define LED_WLAN 13\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eNanoESP\u003c/span\u003e \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eNanoESP\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eNanoESP_HTTP\u003c/span\u003e \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eNanoESP_HTTP\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003esetup\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003einit\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//! Only if you want to change the ACCESPOINT configuration\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//! Only if you use a new Network\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// nanoesp.configWifi(DUAL, SSID, PASSWORD);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Dual Mode\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003econfigWifiMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eDUAL\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//delay(1000);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// Wait till Connected to WiFi\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ewifiConnected\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\u003cspan class=\"n\"\u003edigitalWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eLED_WLAN\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eHIGH\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Error WLAN Connect\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Start TCP Server\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003estartTcpServer\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e80\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TCP Server Activ\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e   \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;TCP Server Error\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//Print IP in Terminal\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003egetIp\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eloop\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"kt\"\u003eint\u003c/span\u003e \u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erecvRequest\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"c1\"\u003e//Incoming request, parameters by reference\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;New Request from id :\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eString\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;, method: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003emethod\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e  \u003cspan class=\"s\"\u003e\u0026#34;, ressource: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e  \u003cspan class=\"s\"\u003e\u0026#34; parameter: \u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;/\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esendFromFlash\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eindex\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"k\"\u003esizeof\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eindex\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eressource\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;/dataonly\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e  \u003cspan class=\"c1\"\u003e//only data is recieved on this url, no need to send a website\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ehttp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esendFromFlash\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eerror404\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"k\"\u003esizeof\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eerror404\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enanoesp\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ecloseConnection\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eid\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparameter\u003c/span\u003e \u003cspan class=\"o\"\u003e!=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e      \u003cspan class=\"c1\"\u003e//the request included parameters\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003estrTone\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003emethod\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"n\"\u003eGET\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e  \u003cspan class=\"n\"\u003estrTone\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e6\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e   \u003cspan class=\"n\"\u003estrTone\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparameter\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esubstring\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e//get note values\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003enoTone\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e8\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003etone\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e8\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003estrTone\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etoInt\u003c/span\u003e\u003cspan class=\"p\"\u003e(),\u003c/span\u003e \u003cspan class=\"mi\"\u003e200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e    \u003cspan class=\"c1\"\u003e//play note for 200ms\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\n\u003cp\u003e\u003cem\u003e(Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\u003c/em\u003e\u003c/p\u003e","title":"Tag 16: Ein Webserver Piano"},{"content":"Nachdem in den letzten Tagen vor allem die Blynk-Plattform zentraler Punkt unserer Projekte war, kommt nun ein ganz neues Thema, und zwar der NanoESP als Webserver. Bei dem Versuch des ersten Tages haben Sie bereits einen ersten Eindruck bekommen. In den folgenden Tagen werden Sie sehen, was noch alles möglich ist.\nHinter dem heutigen Türchen befindet sich ein spezielles doppeladriges Kabel, mit dem sich z.B. auch LEDs oder Sensoren außerhalb des Boards einsetzen lassen. Für den heutigen Versuch ist allerdings gar kein Hardwareaufbau nötig. Alles was Sie benötigen ist das Programm und einen Browser.\nDas Programm: A16_P15_Webserver.ino /* TCP-Server example Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;NanoESP_HTTP.h\u0026gt; //special library for http-connection #include \u0026lt;SoftwareSerial.h\u0026gt; #include \u0026#34;Websites.h\u0026#34; //websites in a special file as progmem #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 NanoESP nanoesp = NanoESP(); NanoESP_HTTP http = NanoESP_HTTP(nanoesp); //init http library with an instance of nanoesp void setup() { Serial.begin(19200); nanoesp.init(); //! Only if you want to change the ACCESPOINT configuration //nanoesp.configWifi(ACCESSPOINT, \u0026#34;NanoESP\u0026#34;, \u0026#34;\u0026#34;); //! Only if you use a new Network // nanoesp.configWifi(DUAL, SSID, PASSWORD); //Dual Mode nanoesp.configWifiMode(DUAL); //delay(1000); // Wait till Connected to WiFi if (nanoesp.wifiConnected())digitalWrite(LED_WLAN, HIGH); else Serial.println(F(\u0026#34;Error WLAN Connect\u0026#34;)); //Start TCP Server if (nanoesp.startTcpServer(80)) Serial.println(F(\u0026#34;TCP Server Activ\u0026#34;)); else Serial.println(F(\u0026#34;TCP Server Error\u0026#34;)); //Print IP to Terminal Serial.println(nanoesp.getIp()); } void loop() { String method, ressource, parameter; int id; if (http.recvRequest(id, method, ressource, parameter)) { //Incoming request, parameters by reference Serial.println(\u0026#34;New Request from id :\u0026#34; + String(id) + \u0026#34;, method: \u0026#34; + method + \u0026#34;, ressource: \u0026#34; + ressource + \u0026#34; parameter: \u0026#34; + parameter); if (ressource == \u0026#34;/\u0026#34;) { //index page http.sendFromFlash(id, index, sizeof(index)); //send website from website.h nanoesp.closeConnection(id); //close connection so browser knows website transmission is complete } else if (ressource == \u0026#34;/lib\u0026#34;) { http.sendFromFlash(id, lib, sizeof(lib)); //send website from website.h nanoesp.closeConnection(id); //close connection so browser knows website transmission is complete } else if (ressource == \u0026#34;/pinout\u0026#34;) { http.sendFromFlash(id, pinout, sizeof(pinout)); //send website from website.h nanoesp.closeConnection(id); //close connection so browser knows website transmission is complete } else { http.sendFromFlash(id, error404, sizeof(error404)); //send website from website.h nanoesp.closeConnection(id);//close connection so browser knows website transmission is complete } } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nLaden Sie das Programm herunter und programmieren Sie es auf das Board. Sie wundern sich vielleicht warum Sie heute keine WLAN-Daten eingeben müssen. Der Grund ist, dass das Board, genauer gesagt der WLAN-Chip, Ihre WLAN-Daten des vorherigen Versuchs noch gespeichert hat. Eine neue Funktion der Library wartet nun nach einem Neustart, bis eine Verbindung zum bekannten WLAN aufgebaut wurde. Wenn Sie ein neues WLAN benutzen, müssen Sie die Kommentarzeichen vor der Zeile\nnanoesp.configWifi(DUAL, SSID, PASSWORD);\nentfernen, damit die neuen Daten eingestellt werden können. Dies gilt auch für alle folgenden Tage. Eine weitere Neuigkeit gibt es heute. Das Board wird nämlich im Dualen Modus verwendet. Das heißt, dass sich das Board sowohl mit Ihrem Heim WLAN Netzwerk verbindet, als auch einen eigenen AccesPoint generiert. Sie können also über zwei Wege auf das Board zugreifen.\nNach dem Upload erscheinen im Seriellen Monitor diesmal auch gleich zwei IPs. Die IP die hinter +CIFST:APIP steht, ist die IP des Boards im AccesPoint WLAN. Die hinter +CIFST:STAIP die, die das Board vom Router zugewiesen bekommen hat. Da Ihr Rechner vermutlich gerade noch mit dem Heimnetzwerk verbunden ist, sollten Sie die zweite IP in Ihren Browser eingeben. Es erscheint eine Hauptseite, von der aus Sie über Links auf anderen Seiten des Boards gelangen, die alle auch im Board gespeichert sind. Im Seriellen Monitor können Sie das Aufrufen einer Seite verfolgen.\nDas Board ist über zwei Netzwerke erreichbar, aber nur eins hat eine Internetverbindung Die Webseite im Browser Wenn Sie jetzt Ihren PC mit dem NanoESP-eigenen WLAN verbinden, müssen Sie die AccesPoint IP im Browser aufrufen. Die Seiten sind dieselben, mit der Ausnahme, dass man das Bild auf der Pinlayout-Seite nicht laden kann. Das liegt daran, dass der PC über dieses Netzwerk keine Verbindung zum Internet hat, und somit das Bild als externe Ressource nicht geladen werden kann. Der Vorteil an diesem Netzwerkmodus ist aber, dass Sie keinen Router als Zwischenstation benötigen, sondern direkt auf das Board zugreifen. Beide Methoden haben also ihre Vor- und Nachteile.\nDie IP-Adressen und Browser-Requests im Seriellen Monitor ","permalink":"https://iot.fkainka.de/day15-2016/","summary":"\u003cp\u003eNachdem in den letzten Tagen vor allem die Blynk-Plattform zentraler Punkt unserer Projekte war, kommt nun ein ganz neues Thema, und zwar der NanoESP als Webserver. Bei dem Versuch des ersten Tages haben Sie bereits einen ersten Eindruck bekommen. In den folgenden Tagen werden Sie sehen, was noch alles möglich ist.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein spezielles doppeladriges Kabel, mit dem sich z.B. auch LEDs oder Sensoren außerhalb des Boards einsetzen lassen. Für den heutigen Versuch ist allerdings gar kein Hardwareaufbau nötig. Alles was Sie benötigen ist das Programm und einen Browser.\u003c/p\u003e","title":"Tag 15: Ein Webserver"},{"content":"Das uploaden des sketches funktioniert ohne probleme und laut anleitung soll ich dann die Website öffnen dies funktionirt soweit auch aber ich habe keine werte neben den balken es ändert sich auch nichts wenn ich am poti drehe. (Bild im Anhang)\nwas habe ich falsch gemacht?\nAnhänge:\n1 Antwort fk – 18.12.2016\nHallo,\nhandelt es sich um das aktuelle Programm von der Webseite?\nUnd die einfachste Möglichkeit wäre, dass die falschen Pins erwischt wurden.\n","permalink":"https://iot.fkainka.de/forum/topic/tag-18-keine-werte/","summary":"\u003cp\u003eDas uploaden des sketches funktioniert ohne probleme und laut anleitung soll ich dann die Website öffnen dies funktionirt soweit auch aber ich habe keine werte neben den balken es ändert sich auch nichts wenn ich am poti drehe. (Bild im Anhang)\u003cbr\u003e\nwas habe ich falsch gemacht?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Screenshot-6.png\" loading=\"lazy\" src=\"/images/2016/12/Screenshot-6.png\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 18.12.2016\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ehandelt es sich um das aktuelle Programm von der Webseite?\u003c/p\u003e\n\u003cp\u003eUnd die einfachste Möglichkeit wäre, dass die falschen Pins erwischt wurden.\u003c/p\u003e","title":"Tag 18 keine werte"},{"content":"Hinter dem heutigen Türchen befindet sich ein NTC-Sensor (Heißleiter, Negative Temperature Coefﬁcient). Dieser verändert seinen Widerstand in Abhängigkeit von der Temperatur. Sie nutzen den Sensor heute, um eine Langzeitmessung der Temperatur vorzunehmen. Als kleinen Bonus können Sie einen Zeitpunkt auswählen, an dem Sie eine Zusammenfassung per Mail geschickt bekommen.\nFür den Aufbau des heutigen Tages benötigen Sie neben dem NTC auch das Poti und einen 1 kOhm Widerstand. Mit dem Poti können Sie einen Feinabgleich der Temperatur vornehmen.\nDer NTC mit Poti zum jusiteren Das Programm: A16_P14_Blynk10_NTCSensor.ino /* Blnky10: NTC-Sensor Change ssid, password, token and email */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; char email[] = \u0026#34;YourEmail\u0026#34;; char subject[] = \u0026#34;Temperatur Summary\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; #include \u0026lt;SimpleTimer.h\u0026gt; #include \u0026lt;TimeLib.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); SimpleTimer timer; //init max min value (0 makes no sense) double tempMax = - 273; double tempMin = +200; bool autoSend; void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); //timer for temp measure timer.setInterval(500L, getTemp); } void loop() { Blynk.run(); timer.run(); //Call timer (other than normal timers) } BLYNK_CONNECTED() { Blynk.syncVirtual(V5); //sync email auto send state } void getTemp() { //get temp, convert to C and send double currValue = Thermistor(analogRead(A0)) ; //Convert to C !!! Pot: round((x*10)/10) if (currValue \u0026lt; tempMin) { tempMin = currValue; } if (currValue \u0026gt; tempMax) { tempMax = currValue; } Blynk.virtualWrite(V0, currValue); Blynk.virtualWrite(V1, currValue); Blynk.virtualWrite(V3, tempMin); Blynk.virtualWrite(V2, tempMax); } double Thermistor(int RawADC) { //Source: http://playground.arduino.cc/ComponentLib/Thermistor2 double Temp; Temp = log(10000.0 * ((1024.0 / RawADC - 1))); // =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp ); Temp = Temp - 273.15; // Convert Kelvin to Celcius // Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit return Temp; } void sendSummary() { //send email summary String msg = \u0026#34;Tempertur Summary:\\nCurrent Temperatur: \u0026#34; + String(Thermistor(analogRead(A0))) + \u0026#34; C\\n\\nMax. Temp: \u0026#34; + String(tempMax) + \u0026#34;C \\n\\nMin. Temp: \u0026#34; + String(tempMin) + \u0026#34;C \\n\u0026#34;; Blynk.email(email, subject, msg); } BLYNK_WRITE(V6) { //Timer Send if (autoSend) { sendSummary(); } } BLYNK_WRITE(V4) { //Button Send sendSummary(); } BLYNK_WRITE(V5) { //config email send autoSend = param.asInt(); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nMit dem QR Code können Sie die Oberfläche in Ihre Blnyk-App laden. In dem Programm, welches Sie von der Webseite herunterladen, müssen Sie heute neben dem aktuellen Token und Ihren WLAN-Daten auch wieder eine E-Mail Adresse angeben, an die die Zusammenfassung geschickt werden soll.\nDie Blynkoberfläche enthält als zentrales Element den History Graph. Über Ihn werden die aktuelle Temperatur sowie Maximal- und Minimal-Werte angezeigt. Sie können unten am Graph auch den Zeitraum der zu visualisierenden Daten auswählen. Sie können die aufgezeichneten Daten löschen, indem Sie, während die Oberfläche aktiviert ist, auf dem Widget nach Links wischen. Die aktuelle Temperatur finden Sie auch in der Anzeige unter dem Graphen. Mit den Elementen unten links machen Sie die Einstellungen zum automatischen Senden einer Zusammenfassung. Sie können sich mit dem Button auf der rechten Seite aber auch jederzeit eine Zusammenfassung schicken lassen.\nEine Langzeitmessung mit Blynk ","permalink":"https://iot.fkainka.de/day14-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein NTC-Sensor (Heißleiter, Negative Temperature Coefﬁcient). Dieser verändert seinen Widerstand in Abhängigkeit von der Temperatur. Sie nutzen den Sensor heute, um eine Langzeitmessung der Temperatur vorzunehmen. Als kleinen Bonus können Sie einen Zeitpunkt auswählen, an dem Sie eine Zusammenfassung per Mail geschickt bekommen.\u003c/p\u003e\n\u003cp\u003eFür den Aufbau des heutigen Tages benötigen Sie neben dem NTC auch das Poti und einen 1 kOhm Widerstand. Mit dem Poti können Sie einen Feinabgleich der Temperatur vornehmen.\u003c/p\u003e","title":"Tag 14: Langzeit Temperatur Messung"},{"content":"Bei dem Projekt des heutigen Tages handelt es sich um eine einfache, stille Alarmanlage mit Passwort-Eingabe zum Resetten des Alarms. Damit man von dem stillen Alarm überhaupt etwas mitbekommt, sendet das Board eine Push-Nachricht zum Smartphone. Der sich hinter dem heutigen Türchen befindenden Tiltsensor setzen wir hier als Bewegungssensor ein. Er kann über Erschütterungen informieren und somit Bescheid geben, wenn jemand das NanoESP-Board kippt.\nAufbau mit Tiltsensor Das Programm: A16_P13_Blynk9_PushAlarm.ino /* Blnky9: PushAlarm Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; String passwordAlarm = \u0026#34;password\u0026#34;; String alarmMsg = \u0026#34;Alarm! Someone touched the NanoESP!\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; #include \u0026lt;SimpleTimer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); SimpleTimer timer; WidgetTerminal terminal(V1); boolean alarm = false; void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); //push msg Blynk.notify(\u0026#34;Alarm active\u0026#34;); pinMode(2, INPUT_PULLUP); //timer for blinking led on alarm timer.setInterval(1000L, blinkAlarm); } void loop() { Blynk.run(); if (alarm) timer.run(); else digitalWrite(13, LOW); //blink if alarm active if (digitalRead(2)) { //read tilt sensor if (!alarm) { alarm = true; Blynk.notify(alarmMsg); //push msg on alarm terminal.println(F(\u0026#34;Alarm! Type in Password:\u0026#34;)); terminal.flush(); } } } BLYNK_CONNECTED() { Blynk.syncAll(); terminal.println(F(\u0026#34;Blynk v\u0026#34; BLYNK_VERSION \u0026#34;: Device started\u0026#34;)); terminal.println(\u0026#34;-------------\u0026#34;); terminal.flush(); } BLYNK_WRITE(V1) //Terminal { //type in password on alarm if (alarm) { String passInput = param.asStr(); if (passwordAlarm == passInput) { alarm = false; terminal.println(F(\u0026#34;Alarm deaktivated\u0026#34;)); terminal.flush(); } else { terminal.println(F(\u0026#34;Wrong password!\u0026#34;)); terminal.flush(); } } } //timer function for blinking led on alarm void blinkAlarm() { digitalWrite(13, !digitalRead(13)); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nDie Blynk-Oberfläche des heutigen Projekts ist recht simpel gehalten. Es gibt ein Terminal über das wichtige Informationen geliefert werden. Gleichzeitig dient das Terminal zur Eingabe des Passworts. Das Passwort selbst stellen Sie im Programm ein. Wenn Sie nichts eingeben haben lautet das Password einfach „password“. Es gibt noch ein weiteres Element, nämlich das Push-Widget. Über dieses werden Push-Nachrichten direkt an das Handy gesendet. Push bedeutet, dass die Nachricht direkt als Meldung auf Ihrem Smartphone erscheint. In dem Widget können Sie auswählen zwischen Normal oder High Priority. Bei High Priority (Hohe Priorität) wird die Nachricht sofort angezeigt, es wird aber auch deutlich mehr Akku verbraucht. Wenn nun jemand Ihren NanoESP entwenden möchte, bekommen Sie direkt eine Meldung auf das Handy.\nJemand hat am Board gewackelt ","permalink":"https://iot.fkainka.de/day13-2016/","summary":"\u003cp\u003eBei dem Projekt des heutigen Tages handelt es sich um eine einfache, stille Alarmanlage mit Passwort-Eingabe zum Resetten des Alarms. Damit man von dem stillen Alarm überhaupt etwas mitbekommt, sendet das Board eine Push-Nachricht zum Smartphone. Der sich hinter dem heutigen Türchen befindenden Tiltsensor setzen wir hier als Bewegungssensor ein. Er kann über Erschütterungen informieren und somit Bescheid geben, wenn jemand das NanoESP-Board kippt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day13_Tilt_Steckplatine.jpg\"\u003e\u003cimg class=\"size-large wp-image-1366\" src=\"/images/2016/09/Day13_Tilt_Steckplatine.jpg\" alt=\"Aufbau mit Tiltsensor\" width=\"616\" height=\"301\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eAufbau mit Tiltsensor\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cdetails class=\"spoiler\"\u003e\n  \u003csummary\u003eDas Programm: A16_P13_Blynk9_PushAlarm.ino\u003c/summary\u003e\n  \u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e/*\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  Blnky9: PushAlarm\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e  Change ssid, password and token\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e*/\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003essid\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourSSID\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourPassword\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003etoken\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourToken\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003epasswordAlarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;password\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eString\u003c/span\u003e  \u003cspan class=\"n\"\u003ealarmMsg\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Alarm! Someone touched the NanoESP!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BLYNK_DEBUG\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BLYNK_PRINT Serial    \u003c/span\u003e\u003cspan class=\"c1\"\u003e// Comment this out to disable prints and save space\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;ESP8266_SoftSer.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;SimpleTimer.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// Set ESP8266 Serial object\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;SoftwareSerial.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eSoftwareSerial\u003c/span\u003e \u003cspan class=\"nf\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e11\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e12\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e// RX, TX\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eESP8266\u003c/span\u003e \u003cspan class=\"nf\"\u003ewifi\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eSimpleTimer\u003c/span\u003e \u003cspan class=\"n\"\u003etimer\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eWidgetTerminal\u003c/span\u003e \u003cspan class=\"nf\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV1\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eboolean\u003c/span\u003e \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003esetup\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// Set console baud rate\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etoken\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ewifi\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003essid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//push msg\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003enotify\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Alarm active\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003epinMode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eINPUT_PULLUP\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//timer for blinking led on alarm\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003etimer\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esetInterval\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e1000L\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eblinkAlarm\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eloop\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erun\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003etimer\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erun\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"n\"\u003edigitalWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e13\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eLOW\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e//blink if alarm active\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003edigitalRead\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"c1\"\u003e//read tilt sensor\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003enotify\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarmMsg\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e//push msg on alarm\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Alarm! Type in Password:\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eflush\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_CONNECTED\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncAll\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Blynk v\u0026#34;\u003c/span\u003e \u003cspan class=\"n\"\u003eBLYNK_VERSION\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;: Device started\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;-------------\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eflush\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV1\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e//Terminal\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//type in password on alarm\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ealarm\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eString\u003c/span\u003e \u003cspan class=\"n\"\u003epassInput\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003easStr\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003epasswordAlarm\u003c/span\u003e \u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"n\"\u003epassInput\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003ealarm\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Alarm deaktivated\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eflush\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"k\"\u003eelse\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eprintln\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Wrong password!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"n\"\u003eterminal\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eflush\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e//timer function for blinking led on alarm\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eblinkAlarm\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003edigitalWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e13\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003edigitalRead\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e13\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\n\u003cp\u003e\u003cem\u003e(Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\u003c/em\u003e\u003c/p\u003e","title":"Tag 13: Alarmanlage mit Push Nachrichten"},{"content":"Hinter dem Türchen des heutigen Tages finden Sie einen Phototransistor. Dabei handelt es sich um einen Sensor, mit dem Helligkeit gemessen werden kann. Dies werden Sie heute auch tun, aber neben dem einfachen Messen gibt das heutige Projekt auch über verschiedene Kanäle Alarm, sobald per App einstellbare Grenzwerte überschritten werden. Damit dies alles auch funktioniert, müssen Sie den Sensor mit einer Spannungsteilerschaltung an den Pin A0 anschließen, wie auf dem unteren Bild zu sehen ist. Beachten Sie die richtige Polung des Phototransistors (kurzes Beinchen an VCC). Andersherum funktioniert er zwar auch, aber lange nicht so empfindlich.\nDer Phototransistor in Spannungsteilerschaltung mit einem 10 kOhm Widerstand Die Blynk-Oberfläche sieht heute ziemlich voll aus. Viele verschiedene Funktionen sind durch die Widgets realisiert. Über eines dieser Widgets, dargestellt durch den Twitter Vogel, können Sie Ihren Twitter Account mit dem Projekt verknüpfen. Hierbei handelt es sich um den einen Kanal über den eine Alarmmeldung gesendet wird.\nDas Programm: A16_P12_Blynk8_LightSensor.ino /* Blynk 8: LightSensor Change ssid, password, token and email */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; char email[] = \u0026#34;Your@Email.com\u0026#34;; char subject[] = \u0026#34;Alarm NanoESP\u0026#34;; String alarmMsg = \u0026#34;Alarm! #NanoESP\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); int alarmValueMin; int alarmValueMax; boolean alTwitter; boolean alEmail; boolean alarm = false; WidgetTerminal terminal(V1); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); } void loop() { Blynk.run(); compValue(); } BLYNK_CONNECTED() { //Sync all values and write MSG to terminal widget Blynk.syncAll(); terminal.println(F(\u0026#34;Blynk v\u0026#34; BLYNK_VERSION \u0026#34;: Device started\u0026#34;)); terminal.println(\u0026#34;-------------\u0026#34;); terminal.println(\u0026#34;Type in Alarmmessage.\u0026#34;); terminal.println(\u0026#34;Current message:\u0026#34;); terminal.println(alarmMsg); terminal.flush(); } BLYNK_WRITE(V1) //Terminal: get new alarm msg { alarmMsg = param.asStr(); terminal.println(\u0026#34;Message saved: \u0026#34;) ; terminal.println(alarmMsg) ; terminal.flush(); } BLYNK_WRITE(V2) //AlarmValueMin { alarmValueMin = param.asInt(); } BLYNK_WRITE(V3) //AlarmValueMax { alarmValueMax = param.asInt(); } void compValue() { //compare values to max/min int currValue = analogRead(A0); if (alarm == false) { if ((currValue \u0026lt; alarmValueMin) || (currValue \u0026gt; alarmValueMax)) { //Alarm terminal.println(\u0026#34;Alarm!!!\u0026#34;) ; //Twitter if twitter alarm active if (alTwitter) { Blynk.tweet(alarmMsg + \u0026#34; \u0026#34; + currValue); terminal.println(\u0026#34;Tweet send\u0026#34;); } //E-mail if E-mail alarm active if (alEmail) { Blynk.email(email, subject, alarmMsg + \u0026#34; Value: \u0026#34; + currValue); terminal.println(\u0026#34;Email send\u0026#34;); } terminal.flush(); alarm = true; } } else { if ((currValue \u0026gt; alarmValueMin) \u0026amp;\u0026amp; (currValue \u0026lt; alarmValueMax)) { //deactivate alarm terminal.println(\u0026#34;No alarm\u0026#34;) ; terminal.flush(); alarm = false; } } } BLYNK_WRITE(V4) { //Email alarm activation alEmail = param.asInt(); Blynk.virtualWrite(V7, param.asInt() * 255); // LED on/off } BLYNK_WRITE(V5) // Twitter alarm activation { alTwitter = param.asInt(); Blynk.virtualWrite(V6, param.asInt() * 255); // LED on/off } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nAuch im Arduino Programm gibt es heute etwas mehr zu tun. Neben WLAN-Daten und Token können Sie heute außerdem eine E-Mail, Adresse eingeben. Dies ist der andere Kanal über den eine Alarmmeldung versendet wird.\nWenn Sie die Oberfläche nun starten sehen Sie schon eine Reihe von Messwerten über das oberste Element wandern. Anhand der Linie können Sie den Verlauf der Werte eindeutig verfolgen. Wenn Sie mit der Hand über den Sensor fahren, werden die Messerwerte deutlich kleiner. Mit den Schiebereglern direkt unter den Messwerten können Sie Grenzwerte einstellen, die nicht unter oder überschritten werden dürfen. Unten gibt es noch einen blauen und einen weißen Button. Mit Ihnen wird die Meldung über Twitter oder über E-Mail aktiviert oder deaktiviert. Die LED neben dem jeweiligen Symbol zeigt den aktuellen Zustand an. Wird nun der erlaubte Bereich von einem Messwert verlassen, geht das System in einen Alarmzustand über und je nach gewähltem Kanal oder Kanälen, wird eine Meldung versendet. Ein Terminal in der Mitte informiert zusätzlich über aktuelle Ereignisse. Über das Terminal können Sie auch einen neuen Benachrichtigungstext festlegen. So sind Sie immer auf dem Laufenden ob z.B. Ihre Pflanzen genug Licht bekommen.\nEin Alarm wurde ausgelöst ","permalink":"https://iot.fkainka.de/day12-2016/","summary":"\u003cp\u003eHinter dem Türchen des heutigen Tages finden Sie einen Phototransistor. Dabei handelt es sich um einen Sensor, mit dem Helligkeit gemessen werden kann. Dies werden Sie heute auch tun, aber neben dem einfachen Messen gibt das heutige Projekt auch über verschiedene Kanäle Alarm, sobald per App einstellbare Grenzwerte überschritten werden. Damit dies alles auch funktioniert, müssen Sie den Sensor mit einer Spannungsteilerschaltung an den Pin A0 anschließen, wie auf dem unteren Bild zu sehen ist. Beachten Sie die richtige Polung des Phototransistors (kurzes Beinchen an VCC).  Andersherum funktioniert er zwar auch, aber lange nicht so empfindlich.\u003c/p\u003e","title":"Tag 12: Lichtwächter"},{"content":"Hi,\nI am looking for a Nano ESP forum in English. I purchased the Franzis Maker Kit this past summer from Elektor. I finely have had some time to experiment with the board. However, I have not had any success with AT+CWLIF, AT+CWLAP, ATCWJAP= reading my IP. I did have the CWLIF work once 192.168.4.2 work once but was not able to complete the rest of the steps in Chap 1.1 of the book on pages 14 and 15 of the English version of the book. Attached is a screen shot\n4 Antworten Pokes – 11.12.2016\nAdditional info the AT+CWMODE=1 and AT+CWMODE=2 see attached When MODE= 2 IP of the controller equals 0.0.0.0\nsumero – 14.12.2016\nHi Pokes,\nfirst of all, I do not own the Franzis Maker Kit and unfortunately I do not see any attachments.\nPlease provide your Firmware version: AT+GMR\nWhat is the output when you try:\nAT+CWMODE=1\nAT+CWLAP\nPokes – 20.12.2016\nCWMODE=1 and CWLAP = see attached\nPokes – 21.12.2016\nHi Sermo,\nUnfortunately I am unable to attach photos to bc of their size and I have been unsuccessful clipping and pasting. As for the firmware GMR it is the most recent from the site, The CWMODE = 1 is 1 and the CWLAP sees everything except my device when it is MODE is 1, I can see my device on my IPhone but not on the computer through the USB port. I am able to make make MODe changes to the device and download the new firmware and have it repeat on screen commends but it does see the IP address on the wireless network through CWLAP. Isn\u0026rsquo;t that strange?\nI will post more when I get back from vacation. Thanks for trying to help. I wish somebody owned the kit then I could refer to the instructions. However, you may be able to help me determine whether the device is working properly. I wish the owner of the device or Franzis would comment here.\nThanks again, I will right back when I get back home in Jan. 8th.\n","permalink":"https://iot.fkainka.de/forum/topic/nano-esp-forum-in-english/","summary":"\u003cp\u003eHi,\u003cbr\u003e\nI am looking for a Nano ESP forum in English. I purchased the Franzis Maker Kit this past summer from Elektor. I finely have had some time to experiment with the board. However, I have not had any success with AT+CWLIF, AT+CWLAP, ATCWJAP= reading my IP. I did have the CWLIF work once 192.168.4.2 work once but was not able to complete the rest of the steps in Chap 1.1 of the book on pages 14 and 15 of the English version of the book. Attached is a screen shot\u003c/p\u003e","title":"Nano ESP Forum in English"},{"content":"Wenn ich bei tag 17 den Sketch auf das NanoESP-Board laden möchte kommt \u0026ldquo;\u0026lsquo;setSyncProvider\u0026rsquo; was not declared in this scope\u0026rdquo;\nwas kann ich tun b.z.w was mache ich falsch?\nbitte um hilfe\nGrüße GHOST_5482\n5 Antworten fk – 13.12.2016\nHallo,\nich habe das Programm nochmal getestet und \u0026ldquo;glücklicherweise\u0026rdquo; ist bei mir der Fehler auch aufgetreten. Es scheint mit einem Arduino und Time-Library Update zusammenzuhängen. Die Lösung war,\n#include Time.h\nin\n#include TimeLib.h\numzubenennen. Die Klammern um den Lib-Namen ist auch wichtig, kann ich hier aber aufgrund von Wordpress Formatierungen nicht darstellen.\nViele Grüße,\nFabian\npaulaner – 16.12.2016\nKönnt ihr Beiträge welche \u0026lsquo;Probleme\u0026rsquo; besprechen per PN klären.\nEs ist nicht im Sinne eine Kalenders vorzugreifen, kleine Kinder würde man auf die Finger haun\u0026rsquo;.\nEs soll doch eine Überraschung für jeden Tag sein und kein Kurs.\nsumero – 17.12.2016\nPaulaner sag deiner Mutti bitte, dass der Adventskalender dich emotional zu sehr aufwühlt und sie deinen Account löschen soll.\nhaben sie ja gar nichts verraten steht schon im Betreff, dass hier ein Problem von Tag 17 diskutiert wird. Wenn du das nicht lesen möchtest, musst du es nicht anklicken. habe ich hier noch nirgends eine PN-Funktion gesehen kannst du froh sein das Ghost den Fehler gefunden hat, sonst würdest du an Tag 17 weinen weil der code nicht läuft. paulaner – 17.12.2016\n@sumero\nIch könnt mich auf dein Niveau herunterlassen.\nDu hast sicher in all der Zeit, nicht den Sinn eines Adventkalender erfasst.\nsumero – 18.12.2016\nnicht traurig sein paulaner, wer dummes schreibt, muss auch mit der Antwort klar kommen.\nWo dein Niveau liegt habe ich hier schon gesehen:\nhttp://iot.fkainka.de/forum/topic/bauteilliste-kalender-2016#post-1772\n","permalink":"https://iot.fkainka.de/forum/topic/tag-17-setsyncprovider-was-not-declared-in-this-scope/","summary":"\u003cp\u003eWenn ich bei tag 17 den Sketch auf das NanoESP-Board laden möchte kommt \u0026ldquo;\u0026lsquo;setSyncProvider\u0026rsquo; was not declared in this scope\u0026rdquo;\u003cbr\u003e\nwas kann ich tun b.z.w was mache ich falsch?\u003c/p\u003e\n\u003cp\u003ebitte um hilfe\u003c/p\u003e\n\u003cp\u003eGrüße GHOST_5482\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"5-antworten\"\u003e5 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 13.12.2016\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe das Programm nochmal getestet und \u0026ldquo;glücklicherweise\u0026rdquo; ist bei mir der Fehler auch aufgetreten. Es scheint mit einem Arduino und Time-Library Update zusammenzuhängen. Die Lösung war,\u003cbr\u003e\n#include Time.h\u003cbr\u003e\nin\u003cbr\u003e\n#include TimeLib.h\u003cbr\u003e\numzubenennen. Die Klammern um den Lib-Namen ist auch wichtig, kann ich hier aber aufgrund von Wordpress Formatierungen nicht darstellen.\u003c/p\u003e","title":"Tag 17: 'setSyncProvider' was not declared in this scope"},{"content":"\u0026hellip; läuft nun mit einem Ersatzpoti aus der Ramschkiste, 250k. Wie ist der Wert original? Bei dem Steckpoti aus dem Kalender kann ich nichts mehr messen, zwei Beinchen baumeln \u0026hellip;\n1 Antwort paulaner – 16.12.2016\nDas ist einfach.\nAuf der Rückseite jedes Kalendertags (fach) steht es.\n10K 10mm\n","permalink":"https://iot.fkainka.de/forum/topic/tag-8/","summary":"\u003cp\u003e\u0026hellip; läuft nun mit einem Ersatzpoti aus der Ramschkiste, 250k. Wie ist der Wert original? Bei dem Steckpoti aus dem Kalender kann ich nichts mehr messen, zwei Beinchen baumeln \u0026hellip;\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003epaulaner\u003c/strong\u003e – 16.12.2016\u003c/p\u003e\n\u003cp\u003eDas ist einfach.\u003cbr\u003e\nAuf der Rückseite jedes Kalendertags (fach) steht es.\u003c/p\u003e\n\u003cp\u003e10K 10mm\u003c/p\u003e","title":"Tag 8"},{"content":"Hinter dem heutigen Türchen befindet sich ein 10 kOhm Widerstand den wir heute aber noch nicht benötigen werden. Stattdessen funktioniert der Aufbau des gestrigen Versuchs auch heute. In diesem Projekt werden Sie eine Tag/Nacht Lampe basteln, die zu bestimmten Uhrzeiten die Farbe wechselt. So können Sie Tagsüber ein helles Licht leuchten lassen, während in der Nacht nur ein dunkles Rot als Notbeleuchtung für etwas Orientierung sorgt.\nDer Aufbau von Tag 10 Das Programm: A16_P11_Blynk7_DayNight.ino /* Blynk 7: DayNight Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); boolean isDay; void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); } void loop() { //all events are handled by functions below Blynk.run(); } BLYNK_CONNECTED() { //Sync all states when reconnected Blynk.syncAll(); } BLYNK_WRITE(V1) //DayTimer { if (param.asInt()== 1){ Blynk.virtualWrite(V0,1); Blynk.virtualWrite(V7,0); isDay = true; Blynk.syncVirtual(V3); } } BLYNK_WRITE(V4) //NightTimer { if (param.asInt()== 1){ Blynk.virtualWrite(V0,0); Blynk.virtualWrite(V7,1); isDay = false; Blynk.syncVirtual(V8); } } BLYNK_WRITE(V0) //Day { if(param.asInt()==1) { Blynk.virtualWrite(V7,0); isDay = true; Blynk.syncVirtual(V3); } } BLYNK_WRITE(V7){ //Night if(param.asInt()==1) { Blynk.virtualWrite(V0,0); isDay = false; Blynk.syncVirtual(V8); } } BLYNK_WRITE(V3) // change color Day { if (isDay){ analogWrite(3, param[0].asInt()); // getting first value analogWrite(5, param[1].asInt()); // getting second value analogWrite(6, param[2].asInt()); // getting N value } } BLYNK_WRITE(V8) // change color Night { if (!isDay){ analogWrite(3, param[0].asInt()); // getting first value analogWrite(5, param[1].asInt()); // getting second value analogWrite(6, param[2].asInt()); // getting N value } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nWenn Sie die Blynk-Oberfläche per QR-Code übertragen und das heutige Programm runtergeladen, verändert und schließlich auf den Controller geladen haben, kann es auch schon losgehen. In der gestarteten Blynk Oberfläche sehen Sie zwei ZeRGBa -Elemente, die jeweils mit DayLight oder NightLight beschriftet sind. Wenn Sie unten mit den äußeren Buttons auf Tag oder Nachtmodus umschalten, wird die entsprechende Farbe des zeRGBa-Elements angezeigt. Sie können das Umschalten zwischen Tag und Nachtmodus aber auch automatisieren. Dazu klicken Sie eines der beiden Timer-Elemente direkt unter den Farbauswahlelementen an. Hier können Sie, während die Oberfläche nicht gestartet ist, eine Start-Zeit auswählen, zu dem der Modus umgeschaltet werden soll. Sie müssen nur die Startzeit anpassen. Das gleiche gilt für das andere Timer-Element. Zu den gewählten Zeiten springt der Modus schließlich um und die LED wechselt von der Tag- zur Nachtfarbe oder andersherum. Die App müssen Sie übrigens zu den Zeitpunkten nicht offen haben. Der Blynk Server regelt das Umschalten automatisch.\nDie Oberfläche des Tag/Nacht Lichts ","permalink":"https://iot.fkainka.de/day11-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein 10 kOhm Widerstand den wir heute aber noch nicht benötigen werden. Stattdessen funktioniert der Aufbau des gestrigen Versuchs auch heute. In diesem Projekt werden Sie eine Tag/Nacht Lampe basteln, die zu bestimmten Uhrzeiten die Farbe wechselt. So können Sie Tagsüber ein helles Licht leuchten lassen, während in der Nacht nur ein dunkles Rot als Notbeleuchtung für etwas Orientierung sorgt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day10_1_RGB-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1352\" src=\"/images/2016/09/Day10_1_RGB-1.jpg\" alt=\"Der Aufbau von Tag 10\" width=\"616\" height=\"362\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau von Tag 10\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cdetails class=\"spoiler\"\u003e\n  \u003csummary\u003eDas Programm: A16_P11_Blynk7_DayNight.ino\u003c/summary\u003e\n  \u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e/*\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003eBlynk 7: DayNight\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003eChange ssid, password and token\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cm\"\u003e*/\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003essid\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourSSID\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourPassword\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003etoken\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;YourToken\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BLYNK_DEBUG\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#define BLYNK_PRINT Serial    \u003c/span\u003e\u003cspan class=\"c1\"\u003e// Comment this out to disable prints and save space\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;ESP8266_SoftSer.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e// Set ESP8266 Serial object\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#include\u003c/span\u003e \u003cspan class=\"cpf\"\u003e\u0026lt;SoftwareSerial.h\u0026gt;\u003c/span\u003e\u003cspan class=\"cp\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eSoftwareSerial\u003c/span\u003e \u003cspan class=\"nf\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e11\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e12\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \u003cspan class=\"c1\"\u003e// RX, TX\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eESP8266\u003c/span\u003e \u003cspan class=\"nf\"\u003ewifi\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eboolean\u003c/span\u003e \u003cspan class=\"n\"\u003eisDay\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003esetup\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e// Set console baud rate\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eEspSerial\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e19200\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebegin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003etoken\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003ewifi\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003essid\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003epassword\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003evoid\u003c/span\u003e \u003cspan class=\"nf\"\u003eloop\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"c1\"\u003e//all events are handled by functions below\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erun\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_CONNECTED\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"c1\"\u003e//Sync all states when reconnected\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncAll\u003c/span\u003e\u003cspan class=\"p\"\u003e();\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV1\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e//DayTimer\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV7\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eisDay\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncVirtual\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV3\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV4\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e//NightTimer\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e==\u003c/span\u003e \u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV7\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eisDay\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncVirtual\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV8\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV0\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e//Day\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e==\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV7\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e    \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eisDay\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003etrue\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncVirtual\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV3\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV7\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e \u003cspan class=\"c1\"\u003e//Night\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eif\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e==\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003evirtualWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eisDay\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003efalse\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eBlynk\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003esyncVirtual\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV8\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV3\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e// change color Day\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eisDay\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting first value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting second value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e6\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting N value  \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eBLYNK_WRITE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eV8\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e//  change color Night\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e   \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003eif\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e!\u003c/span\u003e\u003cspan class=\"n\"\u003eisDay\u003c/span\u003e\u003cspan class=\"p\"\u003e){\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting first value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e5\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting second value\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e     \u003cspan class=\"n\"\u003eanalogWrite\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e6\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003eparam\u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e].\u003c/span\u003e\u003cspan class=\"n\"\u003easInt\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getting N value  \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/details\u003e\n\n\u003cp\u003e\u003cem\u003e(Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\u003c/em\u003e\u003c/p\u003e","title":"Tag 11: Tag/Nacht Licht"},{"content":"Hinter dem heutigen Türchen befindet sich der Grund für die vielen 1 kOhm Widerstände. Sie finden dort nämlich eine sogenannte RGB-LED. RGB steht für Rot Grün Blau, denn bei dieser LED handelt es sich eigentlich um drei LEDs, die über eine gemeinsame Kathode angeschlossen werden können. Durch Variation der Helligkeit der einzelnen LEDs mittels PWM lassen sich so nahezu alle denkbaren Farben generieren.\nDer Aufbau der heutigen Schaltung können Sie auf dem unteren Bild sehen. Beachten Sie dass das etwas längere Beinchen (die Kathode) in die GND Kontaktleiste gesteckt werden muss.\nDie RGB LED mit allen drei Vorwiderständen In der Blynk-App kommt heute wieder ein ganz neues Element zum Einsatz, nämlich das ZeRGBa-Element (Mischung aus Zebra und RGB). An der bunten Gestaltung können Sie schon ungefähr sehen, wie es funktioniert. Sie können entweder das Element in Ihr eigenes, neues Projekt einfügen und die Pins manuell einstellen (Rot an D3, Grün an D5 und Blau an D6) oder Sie laden wie gewohnt die Oberfläche des heutigen Versuchs per QR-Code. Für welchen Weg Sie sich auch entscheiden, vergessen Sie nicht den neuen Token ist das Programm einzufügen, welches Sie wie gewohnt hier herunterladen können:\nDas Programm: A16_P10_Blynk6_RGB.ino /* Blynk 6: RGB Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;7c5cc35bf1b54058b232f6392b847519\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); } void loop() { //the controll of the RGB-LED is done by Blynk automatically Blynk.run(); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nhttp://tinyurl.com/hve4zlu Wenn Sie das Programm mit Ihren Daten hochgeladen und die Oberfläche in der APP gestartet haben, können Sie den Kreis in dem ZeRGBa-Widget bewegen. Sie sehen, dass sich die Farbe des Kreises verändert. Gleichzeitig ändert sich auch die Farbe der RGB-LED auf dem Board. So können Sie lustig rumspielen und verschiedene Farben ausprobieren. Auch Weiß geht, wenn Sie den Kreis oben links in die Ecke ziehen. Die drei Zahlen oben geben zudem den aktuellen PWM Wert der einzelnen Pins D3, D5 und D6 an. Auch diesmal ist der Einsatz als per App steuerbare Wohnzimmerlampe mit Stimmungslicht denkbar.\nDas ZeRGBa-Element ","permalink":"https://iot.fkainka.de/day10-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich der Grund für die vielen 1 kOhm Widerstände. Sie finden dort nämlich eine sogenannte RGB-LED. RGB steht für Rot Grün Blau, denn bei dieser LED handelt es sich eigentlich um drei LEDs, die über eine gemeinsame Kathode angeschlossen werden können. Durch Variation der Helligkeit der einzelnen LEDs mittels PWM lassen sich so nahezu alle denkbaren Farben generieren.\u003c/p\u003e\n\u003cp\u003eDer Aufbau der heutigen Schaltung können Sie auf dem unteren Bild sehen. Beachten Sie dass das etwas längere Beinchen (die Kathode) in die GND Kontaktleiste gesteckt werden muss.\u003c/p\u003e","title":"Tag 10: RGB-LED"},{"content":"Hinter dem heutigen Türchen befindet sich ein weiterer 1 kOhm Widerstand. Allerdings muss heute nichts am Hardwareaufbau vom gestrigen Tag verändert werden. Es wird lediglich eine Kleinigkeit an der Oberfläche variiert.\nDer gestrige Aufbau Auch das Programm müssen Sie nicht erneut hochladen, wenn Sie einfach die Oberfläche von gestern manuell anpassen. Falls Sie die Oberfläche sicherheitshalber dennoch in die App laden möchten, finden Sie hier wie immer den QR-Code. Allerdings müssen Sie dann auch den Token neu in Ihr Programm eintragen.\nhttp://tinyurl.com/zmu9dnk Um die Änderungen manuell vorzunehmen, müssen Sie zunächst den Button, der vorher für die LED an D9 zuständig war, löschen. Dazu klicken Sie kurz auf den Button, während die Oberfläche nicht gestartet ist, und klicken unten den Punkt delete an. Dort wird auch die Energie angezeigt, die Sie „recyceln“. Nun müssen Sie statt dem Button einen Slider einfügen. Klicken Sie dazu oben rechts auf das Plus und wählen Sie Slider_L aus. Der Slider erscheint auf der Oberfläche. Mit kurzem Klick auf das Element gelangen Sie in dessen Einstellungen. Dort stellen Sie Output auf Digital D9 ein. Beachten Sie, dass hinter D9 in rot und klein PWM steht, ein kleiner Hinweis um was es heute geht. Nach diesen Änderungen können Sie die Oberfläche mit Klick auf den Play-Button oben rechts starten.\nWas vorher nur mit der virtuellen LED möglich war ist nun auch mit realen Objekten möglich. Durch Verändern der Slider Position ändern Sie die Helligkeit der LED an D9. Sie könnten nun also z.B. eine dimmbare Wohnzimmerlampe bauen, die sich per App steuern lässt. Das Stichwort zu diesem Thema heißt PWM (Puls Weite Modulation). Denn anders als beispielsweise eine Glühlampe kann man bei einer LED nicht einfach mit weniger Spannung die Helligkeit verändern. Das Verfahren ist hier durchaus komplizierter und funktioniert über schnelles An- und Ausschalten des Ports. Die An- und Auszeiten variieren so, dass es den Anschein hat, dass die LED heller oder dunkler wird. Je länger die An-Zeit im Vergleich zu Auszeit, desto heller die LED. Dass das Flackern der LED nicht oder kaum zu sehen ist liegt an der hohen Geschwindigkeit, mit der der Port geschaltet wird. Mit diesem Verfahren lassen sich übrigens auch Motoren steuern oder Audio Signale generieren.\nDas Programm: A16_P09_Blynk5_PWM.ino /* Blynk 5: PWM No Change to previous programm Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX #define BUTTON 7 ESP8266 wifi(EspSerial); WidgetLED led1(V0); WidgetLED led2(V1); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); pinMode(BUTTON, INPUT_PULLUP); } void loop() { Blynk.run(); checkPin(); checkPoti(); } boolean currState = false ; void checkPin() { if (!digitalRead(BUTTON)) { currState = !currState; //write current state to virtual LED if (currState){ led1.on(); } else{ led1.off(); } //wait till button is released while (!digitalRead(BUTTON)){ } } } int lastValue = 0; void checkPoti() { //read A0 and convert it to values 0-255 int currValue = map(analogRead(A0), 0, 1023, 0, 255); //if values have changed write to virtual led2 if (!(currValue == lastValue)){ lastValue = currValue; Blynk.virtualWrite(V1, currValue); } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\n","permalink":"https://iot.fkainka.de/day9-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein weiterer 1 kOhm Widerstand. Allerdings muss heute nichts am Hardwareaufbau vom gestrigen Tag verändert werden. Es wird lediglich eine Kleinigkeit an der Oberfläche variiert.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day8_AnalogButtonLED_Steckplatine-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1340\" src=\"/images/2016/09/Day8_AnalogButtonLED_Steckplatine-1.jpg\" alt=\"Der Aufbau von gestern\" width=\"616\" height=\"301\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer gestrige Aufbau\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eAuch das Programm müssen Sie nicht  erneut hochladen, wenn Sie einfach die Oberfläche von gestern manuell anpassen. Falls Sie die Oberfläche sicherheitshalber dennoch in die App laden möchten, finden Sie hier wie immer den QR-Code. Allerdings müssen Sie dann auch den Token neu in Ihr Programm eintragen.\u003c/p\u003e","title":"Tag 9: Helligkeit der realen LED"},{"content":"Guten Abend Leute,\nich hoffe ihr könnt mir helfen, dass mich mein Adventspretzel wieder versteht\u0026hellip;\nBis am 2.Dezember das Beispielprogramm \u0026ldquo;Blink\u0026rdquo; hochgeladen war, hat alles wie beschrieben funktioniert. D3 blinkte wunschgemäß im Sekundentakt.\nDanach habe ich vermutlich einen falschen Sketch hochgeladen. Seitdem sah ich D3 nie wieder flackern/blinken/leuchten. Es leuchten nur D2 und D6 dauerhaft. Beim Hochladen werden immer die gleichen Fehler gemeldet:\nDer Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.\nGlobale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2.039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.\nC:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avrdude -CC:\\Program Files\\Arduino\\hardware\\tools\\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM9 -b57600 -D -Uflash:w:C:\\Users\\dirk\\AppData\\Local\\Temp\\arduino_build_968077/sketch_dec08b.ino.hex:i\navrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16\nCopyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/\nCopyright (c) 2007-2014 Joerg Wunsch\nSystem wide configuration file is \u0026ldquo;C:\\Program Files\\Arduino\\hardware\\tools\\avr/etc/avrdude.conf\u0026rdquo;\nUsing Port : COM9\nUsing Programmer : arduino\nOverriding Baud Rate : 57600\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xde\n\u0026hellip;\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xde\navrdude done. Thank you.\nProblem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.\nDas NanoESP - WLAN ist noch aktiv, jedoch komme ich über die IP nicht mehr auf die Board-Website.\nHabe den NanoESP an anderem PC, mit anderem USB-Kabel, neu installiertem Treiber und IDE versucht zu erreichen -\u0026gt; keine Chance.\nKann man das Board irgendwie in den Auslieferungszustand zurückbeamen? Habt ihr sonstige Ideen? Was kann ich versuchen?\nDanke für Eure Hilfe.\nGrüße Findus\n1 Antwort sumero – 11.12.2016\nDie Sketche die wir hochladen setzen alle eine Baudrate von 19200.\nDeine IDE scheint aber die Baudrate bei der übertragung auf 57600 zu setzen.\n","permalink":"https://iot.fkainka.de/forum/topic/bekomme-keine-verbindung-mehr-zum-pretzel-kein-hochladen-moeglich/","summary":"\u003cp\u003eGuten Abend Leute,\u003cbr\u003e\nich hoffe ihr könnt mir helfen, dass mich mein Adventspretzel wieder versteht\u0026hellip;\u003cbr\u003e\nBis am 2.Dezember das Beispielprogramm \u0026ldquo;Blink\u0026rdquo; hochgeladen war, hat alles wie beschrieben funktioniert. D3 blinkte wunschgemäß im Sekundentakt.\u003cbr\u003e\n\u003cstrong\u003eDanach\u003c/strong\u003e habe ich vermutlich einen falschen Sketch hochgeladen. Seitdem sah ich D3 nie wieder flackern/blinken/leuchten. Es leuchten nur D2 und D6 dauerhaft. Beim Hochladen werden immer die gleichen Fehler gemeldet:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eDer Sketch verwendet 444 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 30.720 Bytes.\u003cbr\u003e\nGlobale Variablen verwenden 9 Bytes (0%) des dynamischen Speichers, 2.039 Bytes für lokale Variablen verbleiben. Das Maximum sind 2.048 Bytes.\u003cbr\u003e\nC:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avrdude -CC:\\Program Files\\Arduino\\hardware\\tools\\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM9 -b57600 -D -Uflash:w:C:\\Users\\dirk\\AppData\\Local\\Temp\\arduino_build_968077/sketch_dec08b.ino.hex:i\u003c/em\u003e\u003c/p\u003e","title":"Bekomme keine Verbindung mehr zum Pretzel - kein Hochladen möglich"},{"content":"Hallo zusammen,\nich bin unsicher, ob ich hier fragen darf, denn ich nutze nicht den NanoESP. Ich wollte auf dem MacBook den Treiber nicht ändern und versuche es mit einer Anpassung der Sketche auf den NodeMCU. Das hat bisher auch gut geklappt.\nHeute habe ich allerdings Probleme mit der Umsetzung des Sketches auf NodeMCU. In der Übung sollen auf dem Board zwei LED über virtuelle Buttons in Blynk ein- und ausgeschaltet werden. Zusätzlich soll auf dem umgekehrten Weg über einen Button, d.h. Taster, auf dem Board eine virtuelle LED in Blynk ein- und ausgeschaltet werden. Eine weitere virtuelle LED soll über ein Potentiometer vom Board aus heller bzw. dunkler geschaltet werden.\nWenn ich den an NodeMCU angepassten Sketch starte erfolgt ein Login Timeout. Ich habe mit dem Sketch experimentiert und herausgefunden, dass der Fehler weg ist, wenn ich das Unterprogramm checkPoti() ausschalte. Dann kann ich beide LED über die virtuellen Buttons schalten und auch die eine virtuelle LED lässt sich über den Taster schalten.\nDas Poti ist verständlicherweise ohne Funktion. Doch warum macht das Login Probleme???\n1 Antwort hosi1709 – 08.12.2016\nAlso eine Lösung habe ich gerade selbst gefunden. Eine Pause mit delay(1000); macht die Sache etwas träger. Dafür klappt es aber so wie sicher geplant.\nint lastValue = 0;\nvoid checkPoti()\n{\n//read A0 and convert it to values 0-255\nint currValue = map(analogRead(A0), 0, 1023, 0, 255);\n//if values have changed write to virtual led2\nif (!(currValue == lastValue)){\nlastValue = currValue;\nBlynk.virtualWrite(V1, currValue);\ndelay(1000);\n}\n}\n","permalink":"https://iot.fkainka.de/forum/topic/tag-8-login-timeout/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich bin unsicher, ob ich hier fragen darf, denn ich nutze nicht den NanoESP. Ich wollte auf dem MacBook den Treiber nicht ändern und versuche es mit einer Anpassung der Sketche auf den NodeMCU. Das hat bisher auch gut geklappt.\u003c/p\u003e\n\u003cp\u003eHeute habe ich allerdings Probleme mit der Umsetzung des Sketches auf NodeMCU. In der Übung sollen auf dem Board zwei LED über virtuelle Buttons in Blynk ein- und ausgeschaltet werden. Zusätzlich soll auf dem umgekehrten Weg über einen Button, d.h. Taster, auf dem Board eine virtuelle LED in Blynk ein- und ausgeschaltet werden. Eine weitere virtuelle LED soll über ein Potentiometer vom Board aus heller bzw. dunkler geschaltet werden.\u003c/p\u003e","title":"Tag 8 Login Timeout"},{"content":"In dem Versuch des sechsten Tages haben Sie gesehen, wie Sie einen Tastschalter auf der Hardwareseite auf einen Button in der App abbilden können. Ein anderes Widget, nämlich das LED Widget ist für diesen Fall allerdings viel eindeutiger. Wie man dieses Widget richtig einsetzt und welche Möglichkeiten das bietet sehen Sie in dem heutigen Versuch.\nHinter dem heutigen Türchen befindet sich wieder ein 1 kOhm Widerstand, der für spätere Versuche wichtig wird. Heute wird allerdings die Schaltung von gestern mit einem zusätzlichen Taster verwendet.\nDer Aufbau des heutigen Projekts Die Oberfläche des heutigen Tages können Sie wieder per QR-Code einfügen. Vermutlich wird die Blynk-App aber dann einen Hinweis ausgeben, dass Sie nicht genug Energie haben. Wie am Tag 6 erwähnt, können Sie das Problem umgehen, indem Sie die alten Projekte löschen. Schon haben Sie wieder genug Energie für das heutige Projekt.\nhttp://tinyurl.com/h68em5v Das Programm des Tages finden Sie weiter unten. Fügen Sie Ihre WLAN-Daten und den Token-Code ein und schon können Sie das Programm uploaden.\nDas Programm: A16_P08_Blynk4_VirtualLEDs.ino /* Blynk 4: Virtual LEDs Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; #define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); #define BUTTON 7 //Virtual LED Widgets WidgetLED led1(V0); WidgetLED led2(V1); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); pinMode(BUTTON, INPUT_PULLUP); } void loop() { Blynk.run(); checkPin(); checkPoti(); } boolean currState = false ; void checkPin() { if (!digitalRead(BUTTON)) { currState = !currState; //write current state to virtual LED if (currState){ led1.on(); } else{ led1.off(); } //wait till button is released while (!digitalRead(BUTTON)){ } } } int lastValue = 0; void checkPoti() { //read A0 and convert it to values 0-255 int currValue = map(analogRead(A0), 0, 1023, 0, 255); //if values have changed write to virtual led2 if (!(currValue == lastValue)){ lastValue = currValue; Blynk.virtualWrite(V1, currValue); } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nDas Programm vereint jetzt mehrere Hardware- und Softwareaktoren und Buttons. Drücken Sie beispielsweise in der App auf den ersten Button, beginnt die LED an D9 zu leuchten. Der zweite Button schaltet die LED D3, die fest auf dem Board verbaut ist. Mit dem Taster auf dem Steckboard verändern Sie den Zustand der ersten App LED. Mit dem Poti können Sie die Helligkeit der zweiten LED beeinflussen. Viele verschiedene Ansteuerungsmöglichkeiten für viele verschiedene Elemente also.\nDie heutige Oberfläche ","permalink":"https://iot.fkainka.de/day8-2016/","summary":"\u003cp\u003eIn dem Versuch des sechsten Tages haben Sie gesehen, wie Sie einen Tastschalter auf der Hardwareseite auf einen Button in der App abbilden können. Ein anderes Widget, nämlich das LED Widget ist für diesen Fall allerdings viel eindeutiger. Wie man dieses Widget richtig einsetzt und welche Möglichkeiten das bietet sehen Sie in dem heutigen Versuch.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich wieder ein 1 kOhm Widerstand, der für spätere Versuche wichtig wird. Heute wird allerdings die Schaltung von gestern mit einem zusätzlichen Taster verwendet.\u003c/p\u003e","title":"Tag 8: Virtuelle LEDs"},{"content":"Hinter dem heutigen Türchen befindet sich ein Potentiometer (kurz Poti). Mit diesem Poti können Sie analoge Messungen an die Blynk App übertragen. Dazu müssen Sie die Schaltung auf dem unteren Bild nachbauen.\nDas Poti benutzt heute die untere Leitung für die Verbindung mit A0 Es kann beim Aufbauen etwas eng mit dem MicroUSB-Kabel werden. Damit alles klappt müssen Sie das Board zunächst vom Kabel trennen und die Drahtbrücken möglichst flach platzieren. Zu beachten ist außerdem, dass diesmal nicht VCC auf die im Bild untere Bahn gelegt wurde, sondern die Bahn für den Anschluss an Pin A0 gedacht ist.\nDas Programm: A16_P07_Blynk3_AnalogIn.ino /* Blynk3: AnalogIn Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; //#define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set ESP8266 Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); } void loop() { //Analog read and LED toogle are done here automatically by Blynk //No need for special programming Blynk.run(); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nDie Blynk-Oberfläche können Sie wie gewohnt mit dem QR-Code importieren. Das Programm finden Sie oben. Vergessen Sie nicht den neuen Token und Ihre WLAN-Daten einzutragen, bevor Sie das Programm auf das NanoESP-Board hochladen.\nDie heutige Oberfläche http://tinyurl.com/zepurnu Die Messdaten werden nun ca. einmal die Sekunde empfangen und in dem Graph-Widget dargestellt. Durch Drehen am Poti können Sie die Messwerte beeinflussen. Beachten Sie, dass der Maximalwert bei 1023 liegt. Das liegt daran, dass der NanoESP die Spannung mit einer Auflösung von 10 Bit liest. Diese 10 Bit werden abgebildet auf einen Spannungsbereich zwischen 0 und +5 V. Das Poti dient hierbei als Spannungsteiler, sodass am mittleren Pin Spannungen zwischen 0 und 5 V eingestellt werden können.\nDie Blynk App mit den gemessenen Werten ","permalink":"https://iot.fkainka.de/day7-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen befindet sich ein Potentiometer (kurz Poti). Mit diesem Poti können Sie analoge Messungen an die Blynk App übertragen. Dazu müssen Sie die Schaltung auf dem unteren Bild nachbauen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day7_1_AnalogIn_Steckplatine.jpg\"\u003e\u003cimg class=\"size-large wp-image-1325\" src=\"/images/2016/09/Day7_1_AnalogIn_Steckplatine.jpg\" alt=\"Das Poti benutzt heute die untere Leitung für die Verbindung mit A0\" width=\"616\" height=\"301\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDas Poti benutzt heute die untere Leitung für die Verbindung mit A0\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eEs kann beim Aufbauen etwas eng mit dem MicroUSB-Kabel werden. Damit alles klappt müssen Sie das Board zunächst vom Kabel trennen und die Drahtbrücken möglichst flach platzieren. Zu beachten ist außerdem, dass diesmal nicht VCC auf die im Bild untere Bahn gelegt wurde, sondern die Bahn für den Anschluss an Pin A0 gedacht ist.\u003c/p\u003e","title":"Tag 7: Analog Write"},{"content":"In dem gestrigen Versuchen haben Sie eine einfache Steuerung einer LED über die Blynk-App realisiert. Heute werden Sie sehen, dass die Steuerung in beide Richtungen funktioniert. Dafür kommt der Tastschalter hinter dem heutigen Türchen gerade recht. Mit ihm lässt sich die gestrige Schaltung zur folgenden erweitern:\nDer neue Aufbau mit Tastschalter an D7 Die Oberfläche des heutigen Tages können Sie hier scannen:\nDer QR-Code von Tag 6 http://tinyurl.com/z99macn In der Blynk App gibt es eine virtuelle Währung, als Energie bezeichnet. Diese verhindert, dass man sehr umfangreiche oder viele kleinere Projekte gleichzeitig in der App benutzt. Für Sie heißt das, dass Sie vermutlich ab Tag 8 alte Projekte löschen müssen. Allerdings können Sie Ihr angepasstes Projekt retten, indem Sie einen QR-Code erstellen und diesen irgendwo abspeichern.\nDas Programm des heutigen Tages finden Sie wie immer hier:\nDas Programm: A16_P06_Blynk2_Button.ino /* Blynk 2: Button Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; //#define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; #define BUTTON 7 // Set NanoESP Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); pinMode(BUTTON, INPUT_PULLUP); } void loop() { Blynk.run(); checkPin(); } boolean currState = false ; void checkPin() { if (!digitalRead(BUTTON)) { //toggle state currState = !currState; Blynk.virtualWrite(V0, currState); //Wait till button is released while (!digitalRead(BUTTON)){ } } } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nAuch heute müssen wieder die WLAN-Daten sowie der AUTH TOKEN des heutigen Projekts in das Programm übertragen werden. Jedes Projekt hat einen eigenen Token, deswegen müssen Sie sich den Code neu zuschicken lassen oder per Hand in das Programm übertragen. Nach dem Start der Oberfläche mit dem Play Button können Sie erneut die LED auf dem Steckboard mit dem Klick auf den Button zum Leuchten bringen. Doch auch wenn Sie den Taster auf dem Steckboard betätigen, sehen Sie eine Veränderung in der App. Die Verbindung ist also in beide Richtungen möglich.\n","permalink":"https://iot.fkainka.de/day6-2016/","summary":"\u003cp\u003eIn dem gestrigen Versuchen haben Sie eine einfache Steuerung einer LED über die Blynk-App realisiert. Heute werden Sie sehen, dass die Steuerung in beide Richtungen funktioniert. Dafür kommt der Tastschalter hinter dem heutigen Türchen gerade recht. Mit ihm lässt sich die gestrige Schaltung zur folgenden erweitern:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/09/Day6_1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1321\" src=\"/images/2016/09/Day6_1.jpg\" alt=\"Der neue Aufbau mit Tastschalter an D7\" width=\"616\" height=\"301\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer neue Aufbau mit Tastschalter an D7\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDie Oberfläche des heutigen Tages können Sie hier scannen:\u003c/p\u003e","title":"Tag 6: Der Hardware Button"},{"content":"Hallo WELT\u0026hellip;\n[0] Blynk v0.3.4\n[499] Connecting to GastNetz\n[3636] IP: +CIFSR:STAIP,\u0026ldquo;192.168.3.160\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:67:64\u0026rdquo;\nOK\n[3665] Connected to WiFi\n[10212] Ready (ping: 20ms).\nso die Ausgabe vom seriellen Monitor. Die Taste auf dem Smartfone habe ich inzwischen zum Schalter gemacht, aber auch nicht besser\u0026hellip;\nWo kann der Fehler liegen? Wie kann ich die LED \u0026ldquo;örtlich\u0026rdquo; einschalten, so zum Test der Verdrahtung? Kann ich die WLAN-Verbindung mit einer Meldung quittieren lassen?\n3 Antworten holzmann – 06.12.2016\nHallo,\ndu kannst mit:\n/* Blynk 1: LED Change ssid, password and token */ char ssid[] = \u0026#34;\u0026#34;; char password[] = \u0026#34;\u0026#34;; char token[] = \u0026#34;\u0026#34;; //#define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include #include // Set NanoESP Serial object #include SoftwareSerial EspSerial(11, 12); // RX, TX #define RED_LED 9 ESP8266 wifi(EspSerial); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); pinMode(RED_LED, OUTPUT); Blynk.begin(token, wifi, ssid, password); } void loop() { digitalWrite(RED_LED, HIGH); // turn the LED on (HIGH is the voltage level) delay(100); // wait Blynk.run(); digitalWrite(RED_LED, LOW); // turn the LED off by making the voltage LOW delay(100); // wait } die rote LED schnell bliinken lassen.\nAnsonsten mal die LED um 180° drehen.\nBurkhard – 06.12.2016\nDanke \u0026ldquo;Holzmann\u0026rdquo;, die LED steckte richtig, aber der Widerstand nicht in D09\u0026hellip;\nWo/wie kann ich lernen, wie man diese Programmchen schreibt? So ab nach Weihnachten?\nholzmann – 06.12.2016\nKonkret zum Board kann ich dir leider auch nichts empfehlen - ist auch für mich neu.\nIch bin nur \u0026ldquo;vorbelastet\u0026rdquo; - ich programmiere in \u0026ldquo;C\u0026rdquo;.\n","permalink":"https://iot.fkainka.de/forum/topic/led-bleibt-dunkel/","summary":"\u003cp\u003eHallo WELT\u0026hellip;\u003c/p\u003e\n\u003cp\u003e[0] Blynk v0.3.4\u003cbr\u003e\n[499] Connecting to GastNetz\u003cbr\u003e\n[3636] IP: +CIFSR:STAIP,\u0026ldquo;192.168.3.160\u0026rdquo;\u003cbr\u003e\n+CIFSR:STAMAC,\u0026ldquo;18:fe:34:cf:67:64\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eOK\u003cbr\u003e\n[3665] Connected to WiFi\u003cbr\u003e\n[10212] Ready (ping: 20ms).\u003c/p\u003e\n\u003cp\u003eso die Ausgabe vom seriellen Monitor. Die Taste auf dem Smartfone habe ich inzwischen zum Schalter gemacht, aber auch nicht besser\u0026hellip;\u003cbr\u003e\nWo kann der Fehler liegen? Wie kann ich die LED \u0026ldquo;örtlich\u0026rdquo; einschalten, so zum Test der Verdrahtung? Kann ich die WLAN-Verbindung mit einer Meldung quittieren lassen?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"3-antworten\"\u003e3 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eholzmann\u003c/strong\u003e – 06.12.2016\u003c/p\u003e","title":"LED bleibt dunkel"},{"content":"Eine erste Verbindung vom Board zum Internet haben Sie gestern bereits hergestellt. In den nächsten Tagen soll diese Verbindung nun auch effektiv genutzt werden. Dabei beschäftigen wir uns mit der Online-Plattform Blynk, über die kurze Kommandos, Messdaten oder Nachrichten zwischen den NanoESP-Board und Ihrem Smartphone ausgetauscht werden können.\nKommunikationswege mit Blynk Blynk ermöglicht die einfache Ansteuerung von verschiedenen IoT-Boards, wie z.B. dem Rapsberry Pi oder unserem NanoESP, über eine App. Die grafische Oberfläche kann man sich völlig selbständig zusammenstellen, und auch die Programmierung ist denkbar einfach. Als wäre dies noch nicht genug, lässt sich die Steuerung des Boards auch noch von überall auf der Welt vornehmen. Ganz im Sinne des Internet of Things also.\nFür Ihren ersten Versuch benötigen Sie zunächst einmal die LED, die sich hinter dem heutigen Türchen befindet. Diese wollen wir heute über das Smartphone oder Tablet schalten. Zusammen mit dem Widerstand von gestern können Sie nun folgende Schaltung auf dem Steckboard aufbauen. Achten Sie dabei auf die richtige Polung der LED (kurzes Beinchen an GND).\nDie LED wird an Pin D9 angeschlossen Im nächsten Schritt müssen Sie nun die Blynk-Library installieren. Die Quelle für die verwendete Library-Version finden Sie hier:\nhttps://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\nEs handelt sich um die Version 0.3.4. Das Einbinden dieser Library ist etwas komplizierter, denn in dem Zip-Ordner befinden sich gleich mehrere Library-Dateien. Das heißt Sie müssen diese manuell installieren. Dies ist aber nicht besonders schwierig. Öffnen Sie einfach Ihren Sketchdateien-Ordner. Wenn Sie nicht genau wissen, wo sich dieser befindet, schauen Sie unter Datei-\u0026gt;Voreinstellungen nach.\nIn dem Sketchordner befindet sich ein Ordner mit dem Namen libraries. In diesen Ordner müssen Sie die in der Zip-Datei enthaltenden Ordner hinein kopieren. Dies sind im Grunde die Schritte, die die Arduino IDE am Tag 2 beim Installieren der NanoESP-Library automatisch gemacht hat. Deswegen finden Sie in dem libraries Ordner auch einen Unterordnet mit dem Namen NanoESP.\nNun ist Blink in Ihrer Arduino IDE integriert, allerdings haben Sie noch nicht die passende App auf dem Smartphone. Um das zu ändern laden Sie die App je nach Betriebssystem aus Ihrem App-Store herunter oder gehen Sie auf www.blynk.cc und folgen dort dem Link.\nÖffnen Sie nun die App. Sie werden mit den beiden Optionen \u0026ldquo;Login\u0026rdquo; und \u0026ldquo;Create New Account\u0026rdquo; begrüßt. Erstellen Sie einen neuen Account. Dazu sind nicht mehr als die Angabe einer E-Mail Adresse und eines Passworts notwendig. Anschließend können Sie sich einloggen.\nUm die Oberfläche des heutigen Tages auf Ihr Smartphone zu bekommen gibt es in der App eine besonders praktische Funktion. Klicken Sie dazu auf das Symbol oben rechts, das sich zwischen dem Plus und dem i Befindet. Es öffnet sich ein QR-Code Scanner, denn Sie einfach auf das untere Bild halten müssen. Schon erscheint die Oberfläche auf Ihrem Gerät.\nDer QR-Code zum heutigen Projekt Als nächstes müssen Sie sich auf das sechseckige Symbol oben rechts klicken und sich den unter AUTH TOKEN stehenden Code abschreiben, oder, besonders praktisch, an Ihre E-Mail Adresse schicken lassen. Dieser Code gehört nämlich in das Arduino Programm.\nDas heutige Arduino Programm muss nun zunächst wieder von Webseite heruntergeladen und in der Arduino IDE geöffnet werden. Anschließend müssen Sie, genau wie gestern, die WLAN-Daten oben im Programm hinter ssid und password eintragen. Zusätzlich müssen Sie heute aber auch den eben erwähnten Code hinter dem Stichwort token eintragen. Erst dann können Sie das Programm auf den NanoESP uploaden. Sie können nach dem Upload ein paar Meldungen im Seriellen Monitor verfolgen und so sicher gehen, dass der Verbindungsaufbau geklappt hat.\nDas Programm: A16_P05_Blynk1_LED.ino /* Blynk 1: LED Change ssid, password and token */ char ssid[] = \u0026#34;YourSSID\u0026#34;; char password[] = \u0026#34;YourPassword\u0026#34;; char token[] = \u0026#34;YourToken\u0026#34;; //#define BLYNK_DEBUG #define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include \u0026lt;ESP8266_SoftSer.h\u0026gt; #include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; // Set NanoESP Serial object #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial EspSerial(11, 12); // RX, TX ESP8266 wifi(EspSerial); void setup() { // Set console baud rate Serial.begin(19200); EspSerial.begin(19200); Blynk.begin(token, wifi, ssid, password); } void loop() { Blynk.run(); } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nNun wieder zurück zum Smartphone oder Tablet. Starten Sie Ihre Oberfläche mit dem Klick auf den Play-Button oben rechts. Sie können nun den Button in der Mitte Ihrer Oberfläche drücken, und immer wenn Sie den Button berühren, leuchtet die LED auf dem Steckboard. Sie können zum Test die Buttonart ändern, indem Sie das Programm mit Druck auf den Stop-Button beenden und den Button kurz anklicken. Dort stellen Sie die Button Art von Push auf Switch, und drücken in der Oberflächenansicht wieder Play. Nun genügt ein einfacher klick, um die LED dauerhaft leuchten zu lassen.\nDie Oberfläche in der Blynk App mit QR-Code-Symbol oben rechts ","permalink":"https://iot.fkainka.de/day5-2016/","summary":"\u003cp\u003eEine erste Verbindung vom Board zum Internet haben Sie gestern bereits hergestellt. In den nächsten Tagen soll diese Verbindung nun auch effektiv genutzt werden. Dabei beschäftigen wir uns mit der Online-Plattform Blynk, über die kurze Kommandos, Messdaten oder Nachrichten zwischen den NanoESP-Board und Ihrem Smartphone ausgetauscht werden können.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/08/Day5_1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1299\" src=\"/images/2016/08/Day5_1.jpg\" alt=\"Kommunikationswege mit Blynk\" width=\"616\" height=\"375\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eKommunikationswege mit Blynk\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eBlynk ermöglicht die einfache Ansteuerung von verschiedenen IoT-Boards, wie z.B. dem Rapsberry Pi oder unserem NanoESP, über eine App. Die grafische Oberfläche kann man sich völlig selbständig zusammenstellen, und auch die Programmierung ist denkbar einfach. Als wäre dies noch nicht genug, lässt sich die Steuerung des Boards auch noch von überall auf der Welt vornehmen. Ganz im Sinne des Internet of Things also.\u003c/p\u003e","title":"Tag 5: Blynk"},{"content":"Hallo Gemeinde,\nhab nur Probleme:\nmein eigenes WLAN kann ich im seriellen Monitor nicht sehen, sollte der von mir vergebene Name dort nicht erscheinen? Auch ein offenes WLAN mit dem Namen NanoESP in Reichweite ist nicht zu sehen? Ich seh es nur unter den Internetverbindungen am Rechner. wenn ich die geänderte WiFi Connect hochlade erlischt die LED 3, die Verbindung in der Anzeige am Rechner verschwindet und ich kann keine Internetverbindung herstellen. 1 Antwort Fletcher901 – 04.12.2016\nMoinMoin,\nirgendwie stelle ich mich zu dumm an. Der Arduino ist bei mir per USB 3 Hub an den PC angeschlossen. Im Windows Geräte Manager wird er auch angezeigt. Mein Betriebssystem ist Win7 64 Bit. Ich habe aber kein WLAN am PC. Der PC ist normal per Netzwerkkabel mit dem Router verbunden.\nIch komme nicht auf den Arduino rauf. Dies ist ja auch logisch.\nGibt es eine Möglichkeit ohne WLAN auf den Arduino per USB zu kommen?\nMein Smartphone, wie auch mein Tablet erkennen den Arduino ohne Probleme. Ich möchte aber die Arbeiten per PC durchführen.\nGruß\nChristian\n","permalink":"https://iot.fkainka.de/forum/topic/wifi-connect/","summary":"\u003cp\u003eHallo Gemeinde,\u003cbr\u003e\nhab nur Probleme:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003emein eigenes WLAN kann ich im seriellen Monitor nicht sehen, sollte der von mir vergebene Name dort nicht erscheinen? Auch ein offenes WLAN mit dem Namen NanoESP in Reichweite ist nicht zu sehen? Ich seh es nur unter den Internetverbindungen am Rechner.\u003c/li\u003e\n\u003cli\u003ewenn ich die geänderte WiFi Connect hochlade erlischt die LED 3, die Verbindung in der Anzeige am Rechner verschwindet und ich kann keine Internetverbindung herstellen.\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFletcher901\u003c/strong\u003e – 04.12.2016\u003c/p\u003e","title":"WiFi Connect"},{"content":"Hinter dem heutigen Türchen verbirgt sich ein 1 kOhm Widerstand. Heute ist noch nicht viel damit anzufangen aber morgen wird er wichtig. In dem heutigen Versuch wollen wir eine erste Verbindung zu Ihrem Heim WLAN Netzwerk einrichten. Dazu müssen Sie, wie an vielen folgenden Tagen, Ihre WLAN-Daten in das Programm eintragen.\nDas Board pingt den Google Server an Doch zunächst müssen Sie das heutige Programm herunterladen. Dies können Sie tun, indem Sie in dem unteren Fenster auf das rechte Symbol klicken. Bei diesem Fenster handelt es sich um ein Iframe der Arduino Create Webseite. Arduino Create ist ein von den Machern von Arduino bereitgestellter online Compiler. Mit Ihm können können Sie direkt im Browser Arduino Programme schreiben und auf ein Board hochladen. Ebenso können Sie die hier vorgestellten Programme in Ihren online Programmordner importieren und vor dem Hochladen anpassen. Dazu benötigen Sie allerdings einen kostenlosen Account und ein passendes Plugin. Ich benutze diese Funktion vor allem, da Sie vor dem Programmdownload einen Blick in den Code werfen können und es für mich einfacher ist, den Code nachträglich zu verändern und einzubinden.\nDas Programm: A16_P04_WiFiConnect.ino /* Test for Wifi connection and ping-time Change SSID and PASSWORD. */ #include \u0026lt;NanoESP.h\u0026gt; #include \u0026lt;SoftwareSerial.h\u0026gt; //Change SSID and PASSWORD here: #define SSID \u0026#34;YourSSID\u0026#34; #define PASSWORD \u0026#34;YourPassword\u0026#34; #define LED_WLAN 13 NanoESP nanoesp = NanoESP(); void setup() { Serial.begin(19200); nanoesp.init(); //Station Mode, Connect to WiFi if (!nanoesp.configWifi(STATION, SSID, PASSWORD)) { Serial.println(F(\u0026#34;Error: WLAN not Connected\\n\u0026#34;)); } else { Serial.println(F(\u0026#34;WLAN Connected\\n\u0026#34;)); digitalWrite(LED_WLAN, HIGH); } //Print IP in Terminal Serial.println(nanoesp.getIp()); //Time for Ping int vTime = nanoesp.ping(\u0026#34;www.google.de\u0026#34;); if (vTime \u0026gt; 0 ){ Serial.println(\u0026#34;Internet Connection OK\\nPing: \u0026#34; + String(vTime) + \u0026#34;ms\u0026#34;); } else { Serial.println(F(\u0026#34;Error: Internet Connection\u0026#34;)); } } void loop() { } (Die frühere Einbettung über Arduino Create ist nicht mehr verfügbar; der Code stammt aus dem Download aller Programme.)\nWenn Sie das Programm in der Arduino IDE geöffnet haben, sehen Sie gleich zu Beginn zwei DEFINES. An diese Stelle müssen Sie Ihren WLAN-Namen und das Passwort eintragen. Dann erst können Sie das Programm hochladen. In dem Seriellen Monitor können Sie nun den Status der WLAN-Verbindung überprüfen. Im Idealfall steht dort „WLAN Connected“. Zusätzlich leuchtet die LED D3. Sollten Sie auf Probleme stoßen, finden Sie Hilfe auf der Webseite.\nNach dem Verbinden erscheinen noch weitere Meldungen im Seriellen Monitor. Zunächst einmal wird IP des Boards ausgegeben. Die IP wurde dem NanoESP vom Router zugeteilt und ist dessen Adresse im lokalen Netzwerk. Danach pingt das Board einen Server im Internet an um zu testen, ob das Board auch mit dem Internet verbunden ist. Wenn alles funktioniert, erscheint eine passende Meldung im Seriellen Monitor und die Antwortzeit in Millisekunden, die vom Senden des Pings bis zum Empfangen der Antwort vergangen sind. Sie kennen diese Ping-Werte eventuell aus Online-Spielen. Die Verbindung zum Internet steht nun, Sie sind bereit größere Schritte mit dem Board zu wagen.\nVerbindung erfolgreich hergestellt ","permalink":"https://iot.fkainka.de/day4-2016/","summary":"\u003cp\u003eHinter dem heutigen Türchen verbirgt sich ein 1 kOhm Widerstand. Heute ist noch nicht viel damit anzufangen aber morgen wird er wichtig. In dem heutigen Versuch wollen wir eine erste Verbindung zu Ihrem Heim WLAN Netzwerk einrichten. Dazu müssen Sie, wie an vielen folgenden Tagen, Ihre WLAN-Daten in das Programm eintragen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/08/Day4_1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1295\" src=\"/images/2016/08/Day4_1.jpg\" alt=\"Das Board pingt den Google Server an\" width=\"616\" height=\"359\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDas Board pingt den Google Server an\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDoch zunächst müssen Sie das heutige Programm herunterladen. Dies können Sie tun, indem Sie in dem unteren Fenster auf das rechte Symbol klicken. Bei diesem Fenster handelt es sich um ein Iframe der \u003ca href=\"https://create.arduino.cc/\"\u003eArduino Create Webseite.\u003c/a\u003e \u003ca href=\"https://create.arduino.cc/\"\u003eArduino Create\u003c/a\u003e ist ein von den Machern von Arduino bereitgestellter online Compiler. Mit Ihm können können Sie direkt im Browser Arduino Programme schreiben und auf ein Board hochladen. Ebenso können Sie die hier vorgestellten Programme in Ihren online Programmordner importieren und vor dem Hochladen anpassen. Dazu benötigen Sie allerdings einen kostenlosen Account und ein passendes Plugin. Ich benutze diese Funktion vor allem, da Sie vor dem Programmdownload einen Blick in den Code werfen können und es für mich einfacher ist, den Code nachträglich zu verändern und einzubinden.\u003c/p\u003e","title":"Tag 4: Verbindung mit dem Internet aufbauen"},{"content":"Hallo,\nTag 3 soll uns zeigen, wie wir einen AP konfigurieren.\nDabei habe ich das Kommando boolean configWifiAP(String ssid, String password, int channel, int crypt); in der Referenztabelle gesehen.\nHier wäre es hilfreich, wenn die möglichen Werte und ihre Bedeutung in der Kommentarspalte gelistet wären. Leider hat auch ein erstes Wühlen im Github-Sourcecode einem Nicht-Programmierer wie mir keine Antwort geliefert.\nKann das wohl noch kurzfristig ergänzt werden?\nVielen Dank,\nArduinowallah\n4 Antworten Michel2016 – 03.12.2016\nFände auch ein paar Erklärungen zu den einzelnen Programmen und Funktionen ganz gut. Bin auch Neuling auf dem Gebiet. Habe zwar Programmiererfahrung von vor 25 Jahren mit Basic und VB in Excel aber C++???? und Elektronik Erfahrung habe ich nur von den Conrad-Adventskalender (die einfachen :-) mit LEDS und Widerstände und Transistoren\u0026hellip;\nTekki – 04.12.2016\nWeiß zwar nicht, ob eventuell später im Kalender noch detaillierte Erklärungen kommen, aber habe selbst mal bissl recherchiert, weils mich auch interessiert hat.\nIm Source Code der NanoESP Library findet man in der configWifiAP Funktion folgende Code-Zeile:\nsuccess \u0026amp;= (sendCom(at+cw+\u0026quot;SAP=\\\u0026quot;\u0026quot; + String(ssid) + \u0026quot;\\\u0026quot;,\\\u0026quot;\u0026quot; + String(password) + \u0026quot;\\\u0026quot;,\u0026quot; + String(channel) + \u0026quot;,\u0026quot; + String(crypt), ok));\nAuf dem Board ist ein ESP8266EX Wifi Chip.\nAlso habe ich mal nach den AT-Kommandos dieses Chips gegoogelt und folgendes Datenblatt gefunden:\nhttp://www.espressif.com/sites/default/files/4a-esp8266_at_instruction_set_en_v1.5.4_0.pdf\nDort findet man auf der PDF-Seite 30 (aufgedruckte Seitennummer 27) das AT Kommando AT+CWSAP und in der Tabelle dann auch die Erklärung, wofür der enc Parameter des AT Kommandos ist, der über den crypt Parameter der Funktion übergeben wird:\n0 OPEN\n2 WPA_PSK\n3 WPA2_PSK\n4 WPA_WPA2_PSK\nHoffe das hilft weiter :)\nVG\nTekki\narduinowallah – 04.12.2016\nHallo Tekki,\nja, danke. ich habe das jetzt auch hier gefunden: https://github.com/espressif/esp8266_at/wiki/CWSAP\nIch hoffe, Fabian liest das hier und übernimmt es in die Seite auf http://iot.fkainka.de/library .\nIst es eigentlich ein optionaler Parameter? Wenn ja, was ist default? 4?\nTekki – 04.12.2016\nGanz klares Jain! ;)\nBeim AT+CWSAP Kommando muss der Parameter zunächst zwingend angegeben werden.\nDie NanoESP Library bietet zwei configWifiAP Funktionen an, die das AT+CWSAP Kommando entsprechend absenden:\nboolean configWifiAP(String ssid, String password): Hier kann man den Parameter für die Verschlüsselung nicht angeben, daher wird er auf 0 (=OPEN) gesetzt, wenn das angegebene Passwort leer ist (also \u0026quot;\u0026quot;) bzw. auf 4 (=WPA_WPA2_PSK), wenn ein Passwort angegeben wurde.\nboolean configWifiAP(String ssid, String password, int channel, int crypt): Hier muss der Parameter zwingend angegeben werden.\n","permalink":"https://iot.fkainka.de/forum/topic/werte-fuer-parameter-crypt-von-configwifiap/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eTag 3 soll uns zeigen, wie wir einen AP konfigurieren.\u003cbr\u003e\nDabei habe ich das Kommando \u003ccode\u003eboolean configWifiAP(String ssid, String password, int channel, int crypt);\u003c/code\u003e in der Referenztabelle gesehen.\u003cbr\u003e\nHier wäre es hilfreich, wenn die möglichen Werte und ihre Bedeutung in der Kommentarspalte gelistet wären. Leider hat auch ein erstes Wühlen im Github-Sourcecode einem Nicht-Programmierer wie mir keine Antwort geliefert.\u003c/p\u003e\n\u003cp\u003eKann das wohl noch kurzfristig ergänzt werden?\u003c/p\u003e\n\u003cp\u003eVielen Dank,\u003c/p\u003e\n\u003cp\u003eArduinowallah\u003c/p\u003e","title":"Werte für Parameter \"crypt\" von configWifiAP"},{"content":"mein eigenes WLAN kann ich im Monitor nicht sehen, sollte der von mir vergebene Name dort nicht erscheinen? Auch ein offenes WLAN mit dem Namen NanoESP in Reichweite ist nicht zu sehen?\n","permalink":"https://iot.fkainka.de/forum/topic/access-point-modus/","summary":"\u003cp\u003emein eigenes WLAN kann ich im Monitor nicht sehen, sollte der von mir vergebene Name dort nicht erscheinen? Auch ein offenes WLAN mit dem Namen NanoESP in Reichweite ist nicht zu sehen?\u003c/p\u003e","title":"Access-Point-Modus"},{"content":"ich bin den Anweisungen von Tag 2 gefolgt. Alles kein Problem.\nWenn ich in der Kopfleiste auf Werkzeuge klicke, passiert nichts.\n","permalink":"https://iot.fkainka.de/forum/topic/arduino-1-7-10-werkeuge-leer/","summary":"\u003cp\u003eich bin den Anweisungen von Tag 2 gefolgt. Alles kein Problem.\u003cbr\u003e\nWenn ich in der Kopfleiste auf Werkzeuge klicke, passiert nichts.\u003c/p\u003e","title":"Arduino 1.7.10 Werkeuge leer"},{"content":"Hinter dem dritten Türchen befindet sich der für viele Versuche wichtige Schaltdraht. Als Vorbereitung für spätere Versuche können Sie die Versorgungsleitungen GND und VCC auf die äußeren Bahnen legen. Dadurch haben Sie später einen besseren Zugriff auf diese wichtigen Leitungen.\nDie Drahtbrücken an GND und VCC In dem Projekt des heutigen Tages kommen Sie nun dazu, auch selbst etwas in dem Programm zu verändern. Als Grundlage dient uns dabei das Beispielprogramm:\nDatei \u0026gt; Beispiele \u0026gt; NanoESP \u0026gt; Basics \u0026gt; AccesPoint\nWenn Sie dieses Programm hochlanden sehen Sie zunächst keine Veränderung. Noch immer ist ein offenes WLAN mit dem Namen NanoESP in Reichweite. Wenn Sie nun aber im Programm die Zeile 16 mit dem configWifi-Befehl verändern, ändern sich auch die AccesPoint Einstellungen. Sie können das NanoESP in Anführungszeichen durch einen anderen WLAN-Namen ersetzen oder Sie können sogar ein Passwort für das Netzwerk definieren, in dem Sie den letzten Parameter der Funktion anpassen. Das Passwort muss aber mindestens 8 Zeichen haben. Ein mögliches Beispiel lautet:\nnanoesp.configWifi(ACCESSPOINT, \u0026ldquo;MyNanoESP\u0026rdquo;, \u0026ldquo;MyPassword\u0026rdquo;);\nDann müssen Sie das Programm erneut hochladen. Wenn die Konfiguration erfolgreich war, leuchtet die LED D3 zur Bestätigung. Gab es einen Fehler, leuchtet die LED nicht und Sie müssen die Einstellungen überprüfen. So einfach war es noch nie sein eigenes WLAN zu erstellen.\n","permalink":"https://iot.fkainka.de/day3-2016/","summary":"\u003cp\u003eHinter dem dritten Türchen befindet sich der für viele Versuche wichtige Schaltdraht. Als Vorbereitung für spätere Versuche können Sie die Versorgungsleitungen GND und VCC auf die äußeren Bahnen legen. Dadurch haben Sie später einen besseren Zugriff auf diese wichtigen Leitungen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/08/Day3_0.jpg\"\u003e\u003cimg class=\"size-large wp-image-1290\" src=\"/images/2016/08/Day3_0.jpg\" alt=\"Die Drahtbrücken an GND und VCC\" width=\"616\" height=\"306\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDie Drahtbrücken an GND und VCC\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eIn dem Projekt des heutigen Tages kommen Sie nun dazu, auch selbst etwas in dem Programm zu verändern. Als Grundlage dient uns dabei das Beispielprogramm:\u003c/p\u003e","title":"Tag 3: Der NanoESP im AccesPoint-Modus"},{"content":"Gibt es in diesem Jahr wieder irgendwo eine Liste mit den einzelnen Teilen? Das fand ich beim letzten Mal gut, da wusste man wenigstens was drin ist und was man für den Fall nachbestellen muss.\n7 Antworten paulaner – 16.12.2016\nMach alle Tage auf oder warte bis zum 24..\nklaus – 17.12.2016\nWas würde alles auf machen bringen? Ist im 24. eine Liste drin? Oder was würde das bis 24. warten bringen? Wird dann die Liste veröffentlicht?\nsumero – 17.12.2016\neine Bauteilliste scheint es für dieses Jahr leider (noch) keine zu geben.\nIch habe mal angefangen eine zu schreiben, siehe csv-Datei im Anhang.\nAllerdings finde ich für manche Teile kein vergleichbares Bauteil bei Conrad.\nVielleicht hat der ein oder andere da eine Idee?\nAnhänge:\nBauteile.csv\npaulaner – 17.12.2016\n@Klaus\ndumme Frage!!!\nklaus – 17.12.2016\n@paulaner\nNein, keine dumme Frage! Nur dumme Antwort von Dir.\n@sumero\nDanke! Genau sowas hatte ich gemeint. Auch wenn mit Lücken, aber immerhin schon mehr als gar nichts.\nsumero – 03.01.2017\nFür alles hab ich leider kein passendes Bauteil gefunden.\nVorallem kann ich es mir nicht vorstellen, dass der Tilt Sensor und die IR Reflexschranke nicht günstiger zu haben sind.\nAnhänge:\nBauteile.csv\nklaus – 03.01.2017\nWie gesagt, das ist schon viel mehr als gar nichts. Vielen Dank für Deine Mühe!\nIch hätte mir gewünscht, dass da von offizieller Stelle was kommt.\n","permalink":"https://iot.fkainka.de/forum/topic/bauteilliste-kalender-2016/","summary":"\u003cp\u003eGibt es in diesem Jahr wieder irgendwo eine Liste mit den einzelnen Teilen? Das fand ich beim letzten Mal gut, da wusste man wenigstens was drin ist und was man für den Fall nachbestellen muss.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"7-antworten\"\u003e7 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003epaulaner\u003c/strong\u003e – 16.12.2016\u003c/p\u003e\n\u003cp\u003eMach alle Tage auf oder warte bis zum 24..\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 17.12.2016\u003c/p\u003e\n\u003cp\u003eWas würde alles auf machen bringen? Ist im 24. eine Liste drin? Oder was würde das bis 24. warten bringen? Wird dann die Liste veröffentlicht?\u003c/p\u003e","title":"Bauteilliste Kalender 2016"},{"content":"Hallo,\nimmer wenn ich die Platine auf das Breadboard aufstecke, kann ich keine verbindung zum Internet über WLan herstellen. Ich habe es mit drei Steckbretter versucht. Keine Chance. Wenn ich den NanoESP abnehme funktioniert alles wie es soll. Jedenfalls der Wifi Scanner, das Ping-Testprogramm etc.\nWoran kann das liegen\n1 Antwort sumero – 11.12.2016\nwie rum steckst du denn das Board auf das Steckbrett?\nin der Mitte des Steckbrett ist eine Linie, diese symbolisiert die Trennung der steckplätze. Achte darauf, dass die zwei Steckreihen des Boards durch die Mittellinie getrennt werden, sonst fließt ggf. zwischen den falschen pins strom, es kann zu einem fehlverhalten und evtl. sogar zu einer Beschädigung des Boards kommen.\n","permalink":"https://iot.fkainka.de/forum/topic/nanoesp-funktioniert-nicht-auf-breadboard/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eimmer wenn ich die Platine auf das Breadboard aufstecke, kann ich keine verbindung zum Internet über WLan herstellen. Ich habe es mit drei Steckbretter versucht. Keine Chance. Wenn ich den NanoESP abnehme funktioniert alles wie es soll. Jedenfalls der Wifi Scanner, das Ping-Testprogramm etc.\u003c/p\u003e\n\u003cp\u003eWoran kann das liegen\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003esumero\u003c/strong\u003e – 11.12.2016\u003c/p\u003e\n\u003cp\u003ewie rum steckst du denn das Board auf das Steckbrett?\u003cbr\u003e\nin der Mitte des Steckbrett ist eine Linie, diese symbolisiert die Trennung der steckplätze. Achte darauf, dass die zwei Steckreihen des Boards durch die Mittellinie getrennt werden, sonst fließt ggf. zwischen den falschen pins strom, es kann zu einem fehlverhalten und evtl. sogar zu einer Beschädigung des Boards kommen.\u003c/p\u003e","title":"NanoESP funktioniert nicht auf Breadboard"},{"content":"Hallo zusammen!\nIch startete gerade das erste Testprogramm (LED D3 blinkt im Sekundentakt\u0026hellip;).\nJetzt frage ich mich, ob und ggf. wie ich das laufende Programm beenden muß, bevor ich das nächste starte?\n4 Antworten sumero – 02.12.2016\nEntweder speicherst du einen neuen Sketch (Tag2) über die Arduino IDE auf das Board oder du steckst du den USB-Port ab, dann wird das Board stromlos.\nIn jedem Fall führt das Board, wenn es mit Strom versorgt wird, das gespeicherte Programm in einer Schleife aus\nEl_Barto – 02.12.2016\nWird also bei jedem neuen Hochladevorgang der Speicher komplett überschrieben?\nIch probiere es gleich einmal aus!\nVielen Dank für die schnelle Antwort!\nsumero – 02.12.2016\nEinfache Antwort: Ja\nDer relevante Speicher, in dem das eigentliche Programm liegt wird einfach überschrieben.\nTechnische Antwort: Nein\nDas Board besteht aus mehren Microcontrollern, die jeweils ihren eigenen Speicher haben. Du schreibst mit der Arduino IDE aktuell in den Speicher des großen Microcontrollers auf dem Atmel Mega 328 steht.\nDer Speicher des Arduino Microcontrollers ist in mehrere Bereiche geteilt. Ein Teil des Speichers ist für den sogenannten Booloader reserviert ist. Der Bootloader kümmert sich darum, dass das Board beim starten eine Verbindung mit dem PC aufbauen und ein neues Programm in den restlichen Speicher geschrieben werden kann. Man kann den Speicherbereich in dem der Bootloader liegt zum Glück nicht versehentlich überschreiben. Benne – 02.12.2016\nBei mir war\u0026rsquo;s so, dass sich der USB-Port umgestellt hat nachdem ich das Board ausgesteckt hatte, dann ist Upload natürlich nicht möglich und das Blinken geht weiter :-)\n","permalink":"https://iot.fkainka.de/forum/topic/wie-beende-ich-ein-laufendes-programm/","summary":"\u003cp\u003eHallo zusammen!\u003c/p\u003e\n\u003cp\u003eIch startete gerade das erste Testprogramm (LED D3 blinkt im Sekundentakt\u0026hellip;).\u003cbr\u003e\nJetzt frage ich mich, ob und ggf. wie ich das laufende Programm beenden muß, bevor ich das nächste starte?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"4-antworten\"\u003e4 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003esumero\u003c/strong\u003e – 02.12.2016\u003c/p\u003e\n\u003cp\u003eEntweder speicherst du einen neuen Sketch (Tag2) über die Arduino IDE auf das Board oder du steckst du den USB-Port ab, dann wird das Board stromlos.\u003cbr\u003e\nIn jedem Fall führt das Board, wenn es mit Strom versorgt wird, das gespeicherte Programm in einer Schleife aus\u003c/p\u003e","title":"Wie beende ich ein laufendes Programm?"},{"content":"Diesmal beﬁndet sich hinter dem Türchen ein Steckbrett. Darauf lassen sich schnell und einfach die Hardwareaufbauten des Adventskalenders zusammenstecken. Da bis jetzt nur der NanoESP zur Verfügung steht, fangen wir mit diesem an.\nNanoESP auf dem Steckboard Am besten ist es, wenn Sie den Controller wie auf dem Bild gezeigt auf das Steckboard stecken. Dadurch bleibt der meiste Platz für Experimente, das WLAN-Modul ragt hinten über das Steckboard hinaus. Das Micro-USB-Kabel hängt dann zwischen den Kontaktseiten und stört nur minimal. Das Board muss mit sanfter Gewalt und bis zum Anschlag in die Kontakte gepresst werden.\nAm heutigen Tag wollen wir uns außerdem mit der Software beschäftigen, mit der das Board programmiert werden kann. Es handelt sich um die Arduino-Entwicklungsumgebung (kurz Arduino-IDE). Sie können die neuste Version unter http://www.arduino.cc/en/Main/software für Ihr individuelles System herunterladen und anschließend installieren. Beachten Sie, dass Sie mindestens mit Arduino-Version 1.6.5 arbeiten sollten.\nProgrammiert wird hier in einem etwas vereinfachtem C/C++. Sie können nun ein erstes Beispielprogramm in der IDE öffnen, indem Sie auf Datei \u0026gt; Beispiele \u0026gt; 01.Basics \u0026gt; Blink klicken. Es handelt sich um ein Programm, welches die LED D3 auf dem Board im Sekundentackt blinken lässt. Damit Sie nun dieses Programm auf dem NanoESP ausführen können, müssen Sie es zunächst über die USB-Schnittstelle auf das Board übertragen. Vorher müssen Sie allerdings in der Software das richtige Board und den richtigen Kommunikationsport (Kurz COM) auswählen:\nUnter Tools \u0026gt; Board Arduino Nano auswählen Unter Tools \u0026gt; Prozessor \u0026gt; ATmega328 auswählen Unter Tools \u0026gt; Serieller Port den entsprechenden COM-Port wählen Anschließend klicken Sie den Upload-Button. Das Programm wird nun kompiliert und auf den NanoESP übertragen. Sie können den Fortschritt unten in der Leiste verfolgen. Während des Uploads können Sie außerdem die beiden mittleren LEDs (TX1 und RX1) schnell blinken sehen. Wenn alles erfolgreich war, beginnt die LED D3 auf dem Board im Sekundentakt zu blinken. Sie haben soeben Ihr erstes Arduino-Programm erfolgreich hochgeladen.\nDies war allerdings nur ein Test, ob das Board prinzipiell richtig funktioniert. Der IoT-Teil des heutigen Versuchs kommt nun erst. Zunächst müssen Sie allerdings noch etwas herunterladen, nämlich die Library, die Ihnen den Umgang mit dem Board enorm erleichtert. Sie finden die aktuelle Version auf der Library Seite verlinkt:\nZur Library-Seite\nDiese Zip-Datei müssen Sie nun in Arduino einbinden, indem Sie unter\nSketch –\u0026gt; Bibliothek einbinden -\u0026gt; .ZIP-Bibliothek einbinden\ndie eben heruntergeladene Datei auswählen. Eventuell müssen Sie die Arduino IDE noch einmal neustarten, damit Sie das Beispielprogramm unter\nDatei \u0026gt; Beispiele \u0026gt; NanoESP \u0026gt; Basics \u0026gt; Wifi_Scanner\nfinden und öffnen können. Dieses Programm müssen Sie nun erneut hochladen. Öffnen Sie dann den Seriellen Monitor und stellen Sie die Baudrate 19200 ein. Nach kurzer Zeit sehen Sie zunächst Informationen über die Firmware und schließlich eine Liste aller WLAN-Netzwerke in Reichweite Ihres NanoESP-Boards.\nDie Ausgabe im Seriellen Monitor (WLAN-Namen unkenntlich gemacht) ","permalink":"https://iot.fkainka.de/day2-2016/","summary":"\u003cp\u003eDiesmal beﬁndet sich hinter dem Türchen ein Steckbrett. Darauf lassen sich schnell und einfach die Hardwareaufbauten des Adventskalenders zusammenstecken. Da bis jetzt nur der NanoESP zur Verfügung steht, fangen wir mit diesem an.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/08/Day2_1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1286\" src=\"/images/2016/08/Day2_1.jpg\" alt=\"NanoESP auf dem Steckboard\" width=\"616\" height=\"309\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eNanoESP auf dem Steckboard\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eAm besten ist es, wenn Sie den Controller wie auf dem Bild gezeigt auf das Steckboard stecken. Dadurch bleibt der meiste Platz für Experimente, das WLAN-Modul ragt hinten über das Steckboard hinaus. Das Micro-USB-Kabel hängt dann zwischen den Kontaktseiten und stört nur minimal. Das Board muss mit sanfter Gewalt und bis zum Anschlag in die Kontakte gepresst werden.\u003cbr\u003e\nAm heutigen Tag wollen wir uns außerdem mit der Software beschäftigen, mit der das Board programmiert werden kann. Es handelt sich um die Arduino-Entwicklungsumgebung (kurz Arduino-IDE). Sie können die neuste Version unter \u003ca href=\"http://www.arduino.cc/en/Main/software\"\u003ehttp://www.arduino.cc/en/Main/software\u003c/a\u003e für Ihr individuelles System herunterladen und anschließend installieren. Beachten Sie, dass Sie mindestens mit Arduino-Version 1.6.5 arbeiten sollten.\u003c/p\u003e","title":"Tag 2: Die Arduino IDE"},{"content":"Ich habe heute den Treiber unter WIN10/64 installiert, die Erfolgsmeldung kam, das Modul über USB angesteckt, kein Fehler\nDann WLAN umgestellt und im Browser die genannte URL eingegeben.\nFehlermeldung:\nInteressting\u0026hellip;\nYou weren\u0026rsquo;t supposed to find this page.\nSince you seem to be a curios person\nreconnect to your WLAN and click the link below\nto find out if you are the only one\u0026hellip;.\nDer genannte Link brachte auch keine Hilfe\nWer kennt das Problem und kann helfen?\n2 Antworten xEggi85x – 01.12.2016\nIch habe leider das selbe Problem\nsumero – 02.12.2016\nDie Webseite hat mich im ersten Moment auch etwas verwirrt,aber das ist die richtige Webseite.\nAls kleines Easter Egg ist der Link mit dem Passwort auf den Blog. Der Link funktioniert jedoch nur, wenn man die WLAN verbindung mit dem Board trennt und sich wieder mit dem Hauseigenen WLAN/Internet verbindet.\n","permalink":"https://iot.fkainka.de/forum/topic/probleme-die-web-site-aufzurufen/","summary":"\u003cp\u003eIch habe heute den Treiber unter WIN10/64 installiert, die Erfolgsmeldung kam, das Modul über USB angesteckt, kein Fehler\u003cbr\u003e\nDann WLAN umgestellt und im Browser die genannte URL eingegeben.\u003c/p\u003e\n\u003cp\u003eFehlermeldung:\u003cbr\u003e\nInteressting\u0026hellip;\u003cbr\u003e\nYou weren\u0026rsquo;t supposed to find this page.\u003c/p\u003e\n\u003cp\u003eSince you seem to be a curios person\u003cbr\u003e\nreconnect to your WLAN and click the link below\u003cbr\u003e\nto find out if you are the only one\u0026hellip;.\u003c/p\u003e\n\u003cp\u003eDer genannte Link brachte auch keine Hilfe\u003c/p\u003e","title":"Probleme, die Web-Site aufzurufen"},{"content":"Hallo Community!\nIch beschäftige mich aktuell mit dem senden von UDP-Paketen über einen vom NanoESP ausgesendeten Hotspot.\nAllerdings kann sich jedes beliebige Gerät ohne Erlaubnis in den offenen Hotspot einwählen. Gibt es eine Möglichkeit statt einem offfenem Hotspot einen Passwortgeschützten Hotspot zu erstellen?\nAls Beispiele habe ich die UDP-Programme vom Adventskalender 2015 benutzt.\nDanke für eure Hilfe :D\n","permalink":"https://iot.fkainka.de/forum/topic/hotspot-passwortgeschuetzt/","summary":"\u003cp\u003eHallo Community!\u003cbr\u003e\nIch beschäftige mich aktuell mit dem senden von UDP-Paketen über einen vom NanoESP ausgesendeten Hotspot.\u003cbr\u003e\nAllerdings kann sich jedes beliebige Gerät ohne Erlaubnis in den offenen Hotspot einwählen. Gibt es eine Möglichkeit statt einem offfenem Hotspot einen Passwortgeschützten Hotspot zu erstellen?\u003cbr\u003e\nAls Beispiele habe ich die UDP-Programme vom Adventskalender 2015 benutzt.\u003cbr\u003e\nDanke für eure Hilfe :D\u003c/p\u003e","title":"Hotspot Passwortgeschützt"},{"content":"Es ist der erste Dezember und damit Zeit, das erste Türchen zu öffnen. Dahinter beﬁ ndet sich das wohl wichtigste Element des Kalenders: Das NanoESP-Board. Dieser Arduino-kompatible Controller mit WLANFunktion steht im Mittelpunkt der 24 Versuche.\nDas NanoESP Board Kurz zusammengefasst lässt sich sagen, dass das Board am ehesten eine Kreuzung aus einem Arduino-Nano-ähnlichen Board und einem WLAN-Modul mit dem Namen ESP8266 ist. Die Kommunikation zwischen beiden Elementen läuft über eine per Software generierte serielle Schnittstelle, die an den Pins D11 und D12 angeschlossen ist. Diese Pins sollten Sie also bei eigenen Projekten meiden.\nDamit Sie Ihr Board erfolgreich programmieren können, müssen Sie zunächst den Treiber installieren. Sie ﬁnden ihn auf der Seite:\nhttp://iot.fkainka.de/driver\nEs gibt dort Versionen für verschiedene Betriebssysteme. In der Windows-Version beﬁndet sich im Zip-Ordner eine Setup.exe-Datei, die Sie ausführen müssen. Im dann erscheinenden Fenster klicken Sie einfach auf »Install«.\nNach der Installation können Sie das Board nun zum ersten Mal mit dem PC verbinden. Der PC sollte automatisch den Treiber ﬁnden, während auf dem Board die beiden Power-LEDs (D6 und D2) leuchten. Die dritte LED (D3) blinkt zunächst. Wenn die LEDs leuchten, aber der PC keine neue Hardware erkennt, prüfen Sie, ob Sie wirklich ein USB-Datenkabel verwenden. Es gibt nämlich auch Kabel, die nur zum Laden von z. B. Smartphones gedacht sind, aber keine Datenkommunikation ermöglichen. Sie können sich auch im Gerätemanager anzeigen lassen, ob das Gerät richtig erkannt und installiert wurde.\nDer Treiber ist nun installiert, und mittlerweile sollte die dritte LED ebenfalls aufgehört haben zu blinken und durchgehend leuchten. Das ist das Zeichen, dass die Initialisierung des Boards erfolgreich war. Sie sollten nun noch etwas erkennen können, und zwar dass sich ein neues, offenes WLAN in Ihrer Reichweite beﬁndet. Das WLAN trägt den Namen NanoESP. Im heutigen praktischen Versuch sollen Sie sich mit diesem WLAN verbinden. Wenn der PC nach der Art der Verbindung fragt, sollten Sie die Option »Heimnetzwerk« wählen. Dadurch wird die Kommunikation mit anderen Geräten nicht geblockt. Wenn Sie mit dem WLAN verbunden sind, können Sie einen Browser Ihrer Wahl öffnen und in die Adressleiste Folgendes eingeben:\n192.168.4.1\nDas ist die IP-Adresse Ihres Boards. Die Seite, die Sie nun zu sehen bekommen, ist eine kleine Webseite, die vom Board an Ihren PC gesendet wurde. Es handelt sich um ein Easter Egg, also eine versteckte Funktion. Der erste Versuch ist ein Funktionstest und bietet zugleich einen Ausblick auf eine mögliche Verwendung des Boards als Webserver. Doch dazu später mehr.\n","permalink":"https://iot.fkainka.de/day1-2016/","summary":"\u003cp\u003eEs ist der erste Dezember und damit Zeit, das erste Türchen zu öffnen. Dahinter beﬁ ndet sich das wohl wichtigste Element des Kalenders: Das NanoESP-Board. Dieser Arduino-kompatible Controller mit WLANFunktion steht im Mittelpunkt der 24 Versuche.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/08/Day1_1.jpg\"\u003e\u003cimg class=\"size-large wp-image-1280\" src=\"/images/2016/08/Day1_1.jpg\" alt=\"Das NanoESP Board\" width=\"616\" height=\"186\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDas NanoESP Board\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eKurz zusammengefasst lässt sich sagen, dass das Board am ehesten eine Kreuzung aus einem Arduino-Nano-ähnlichen Board und einem WLAN-Modul mit dem Namen ESP8266 ist. Die Kommunikation zwischen beiden Elementen läuft über eine per Software generierte serielle Schnittstelle, die an den Pins D11 und D12 angeschlossen ist. Diese Pins sollten Sie also bei eigenen Projekten meiden.\u003c/p\u003e","title":"Tag 1: Das NanoESP-Board"},{"content":"Hallo,\nwas ist das für eine Fehlermeldung.\nWer kann mir Helfen\nDanke\nGrüße rudolf32328\n1 Antwort sumero – 02.12.2016\nWo bekommst du denn diese Fehlermeldung?\nVon der Arduino IDE?\nBeschreibe mal was du machst, bevor du die Fehlermeldung bekommst.\n","permalink":"https://iot.fkainka.de/forum/topic/fehlermeldung-1514-failed-to-disable-echo/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ewas ist das für eine Fehlermeldung.\u003c/p\u003e\n\u003cp\u003eWer kann mir Helfen\u003c/p\u003e\n\u003cp\u003eDanke\u003cbr\u003e\nGrüße rudolf32328\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003esumero\u003c/strong\u003e – 02.12.2016\u003c/p\u003e\n\u003cp\u003eWo bekommst du denn diese Fehlermeldung?\u003cbr\u003e\nVon der Arduino IDE?\u003cbr\u003e\nBeschreibe mal was du machst, bevor du die Fehlermeldung bekommst.\u003c/p\u003e","title":"Fehlermeldung [1514] Failed to disable Echo"},{"content":"Ich habe vergeblich versucht, 01.Basics \u0026gt; Blink auf den NanoESP hochzuladen, und weiß mir nicht zu helfen.\nInstalliert auf Win7 ist Arduino 1.6.13.\nWerkzeuge \u0026gt; Board: Arduino/Genuino Uno\nWerkzeuge \u0026gt; Prozessor: Den Eintrag hat mein Menü nicht.\nWerkzeuge \u0026gt; Port: COM5 (Der heißt im Gerätemanagager USB-SERIA CH340)\nWerkzeuge \u0026gt; Bordinformationen holen ergibt:\nBN: Unbekanntes Board\nVID: 1A86\nPID: 7523\nSN: Laden Sie irgendeinen Sketch hoch, um sie abzurufen\nFehlermeldung beim Hochladen siehe Themen-Titel.\n1 Antwort OT – 28.11.2016\nWie peinlich!\nIn der Anleitung steht:\nWerkzeuge \u0026gt; Board: Arduino Nano\nDamit läuft alles nach Plan.\n","permalink":"https://iot.fkainka.de/forum/topic/avrdude-stk500_getsync-attempt-10-of-10-not-in-sync-resp0xe0/","summary":"\u003cp\u003eIch habe vergeblich versucht, 01.Basics \u0026gt; Blink auf den NanoESP hochzuladen, und weiß mir nicht zu helfen.\u003c/p\u003e\n\u003cp\u003eInstalliert auf Win7 ist Arduino 1.6.13.\u003cbr\u003e\nWerkzeuge \u0026gt; Board: Arduino/Genuino Uno\u003cbr\u003e\nWerkzeuge \u0026gt; Prozessor: Den Eintrag hat mein Menü nicht.\u003cbr\u003e\nWerkzeuge \u0026gt; Port: COM5 (Der heißt im Gerätemanagager USB-SERIA CH340)\u003cbr\u003e\nWerkzeuge \u0026gt; Bordinformationen holen ergibt:\u003cbr\u003e\nBN: Unbekanntes Board\u003cbr\u003e\nVID: 1A86\u003cbr\u003e\nPID: 7523\u003cbr\u003e\nSN: Laden Sie irgendeinen Sketch hoch, um sie abzurufen\u003cbr\u003e\nFehlermeldung beim Hochladen siehe Themen-Titel.\u003c/p\u003e","title":"avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0"},{"content":"Hallo,\nwer kann mir helfen, beim aufspielen des Sketches Tag 5, sagt mir eine Meldung unten in der Leiste das er die libaries\n#include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; nicht findet aber ich habe im Ordner der libaries geschaut und sie steht da auch.\nwas mache ich fahlsch ?\noder wo gibt es eine Neue Zip zum Runderladen, es war schon schwer überhaupt eine zu finden.\nDanke für die hilfe.\nbin halt neu in diesen Geschäft und habe nicht die kanns große Ahnung vom Programmieren.\nGrüße rudolf32328\n1 Antwort Kacki – 29.11.2016\nGuck mal hier: http://iot.fkainka.de/forum/topic/tag-5-fehler-kann-esp8266_softser-h-nicht-finden\n","permalink":"https://iot.fkainka.de/forum/topic/libraries-nicht-gefunden-include/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ewer kann mir helfen, beim aufspielen des Sketches Tag 5, sagt mir eine Meldung unten in der Leiste das er die libaries\u003cbr\u003e\n#include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt; nicht findet aber ich habe im Ordner der libaries geschaut und sie steht da auch.\u003cbr\u003e\nwas mache ich fahlsch ?\u003cbr\u003e\noder wo gibt es eine Neue Zip zum Runderladen, es war schon schwer überhaupt eine zu finden.\u003c/p\u003e\n\u003cp\u003eDanke für die hilfe.\u003cbr\u003e\nbin halt neu in diesen Geschäft und habe nicht die kanns große Ahnung vom Programmieren.\u003c/p\u003e","title":"libraries nicht gefunden   #include"},{"content":"Hallo,\nbei meinen NanoESP wird der Baustein ESP8266EX richtig Warm ca. 70 -80 grad\nist das Normal oder liegt ein Defekt vor ???\nBei anschluss am PC kann ich das W-LAN NanoESP auf meinen Smartfon sehen aber nach ca.5 Sekunden ist es weg und ich sehe nurnoch Ausserhalb der Reichweite.\nKann mir einer Helfen, den so kann ich nichts machen und das Geld war fürm Ar\u0026hellip;\u0026hellip; ausgegeben.\nDanke für Hilfe Gruß rudolf32328\n1 Antwort Kacki – 27.11.2016\nHallo Rudolf,\ngibt es im Bereich der Antenne auf der Leiterplatte Verschmutzungen? Sie könnten parasitäre Kapazitäten bilden und das führt zum Energieverlust. Vielleicht hilft es, die Platine mit (Wasch-)Benzin, Isopropanal oder (ganz vorsichtig:) Aceton zu reinigen?\n","permalink":"https://iot.fkainka.de/forum/topic/ic-esp8266ex/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ebei meinen NanoESP wird der Baustein ESP8266EX richtig Warm ca. 70 -80 grad\u003cbr\u003e\nist das Normal oder liegt ein Defekt vor ???\u003cbr\u003e\nBei anschluss am PC kann ich das W-LAN NanoESP auf meinen Smartfon sehen aber nach ca.5 Sekunden ist es weg und ich sehe nurnoch Ausserhalb der Reichweite.\u003cbr\u003e\nKann mir einer Helfen, den so kann ich nichts machen und das Geld war fürm Ar\u0026hellip;\u0026hellip; ausgegeben.\u003c/p\u003e\n\u003cp\u003eDanke für Hilfe Gruß rudolf32328\u003c/p\u003e","title":"IC ESP8266EX"},{"content":"liefert folgende im Serial Monitor:\n[0] Blynk v0.3.4\n[499] Connecting to \u0026hellip;..\nFehlermeldung:\n[1514] Failed to disable Echo;\nKann mir bitte jemand weiterhelfen?\n1 Antwort Kacki – 27.11.2016\nHallo petfield,\ndas Problem ist in dem Thread \u0026ldquo;Tag 5\u0026rdquo; diskutiert worden.\n","permalink":"https://iot.fkainka.de/forum/topic/tag6/","summary":"\u003cp\u003eliefert folgende im Serial Monitor:\u003cbr\u003e\n[0] Blynk v0.3.4\u003cbr\u003e\n[499] Connecting to \u0026hellip;..\u003cbr\u003e\nFehlermeldung:\u003cbr\u003e\n[1514] Failed to disable Echo;\u003cbr\u003e\nKann mir bitte jemand weiterhelfen?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 27.11.2016\u003c/p\u003e\n\u003cp\u003eHallo petfield,\u003c/p\u003e\n\u003cp\u003edas Problem ist in dem Thread \u0026ldquo;Tag 5\u0026rdquo; diskutiert worden.\u003c/p\u003e","title":"Tag6:"},{"content":"Servus,\nich war etwas voreilige und habe den Blink Test direkt auf den NanoESP geladen. Nun komme ich nicht mehr auf die Easter Egg Website ( 192.168.4.1 ). Ich vermute, dass ich erst wider den richtigen Sketch hochladen muss, richtig?\nGibt es den default Sketch irgendwo zum laden? :)\nWeihnachtliche Grüße\n","permalink":"https://iot.fkainka.de/forum/topic/tag-01-easter-eggs-website/","summary":"\u003cp\u003eServus,\u003c/p\u003e\n\u003cp\u003eich war etwas voreilige und habe den Blink Test direkt auf den NanoESP geladen. Nun komme ich nicht mehr auf die Easter Egg Website ( 192.168.4.1 ). Ich vermute, dass ich erst wider den richtigen Sketch hochladen muss, richtig?\u003c/p\u003e\n\u003cp\u003eGibt es den default Sketch irgendwo zum laden? :)\u003c/p\u003e\n\u003cp\u003eWeihnachtliche Grüße\u003c/p\u003e","title":"Tag 01 - Easter Eggs Website"},{"content":"Frage in die Runde\nGibt es eine Beschreibung zu den einzelnen Befehlen ?\nzB. Blynk_debug, BLYNK_PRINT Serial , SoftwareSerial, WidgetLED, Blynk.begin, Blynk.run usw.\nwie muss der Syntax sein , was machen die Befehle und wo ?\nvielleicht gibts links.\n","permalink":"https://iot.fkainka.de/forum/topic/befehlsliste-beschreibung-der-anweisungen/","summary":"\u003cp\u003eFrage in die Runde\u003cbr\u003e\nGibt es eine Beschreibung zu den einzelnen Befehlen ?\u003cbr\u003e\nzB. Blynk_debug, BLYNK_PRINT Serial , SoftwareSerial, WidgetLED, Blynk.begin, Blynk.run usw.\u003cbr\u003e\nwie muss der Syntax sein , was machen die Befehle und wo ?\u003c/p\u003e\n\u003cp\u003evielleicht gibts links.\u003c/p\u003e","title":"Befehlsliste, Beschreibung der Anweisungen"},{"content":"kann das Verzeichnis und file ESP8266_SoftSer.h nicht finden .\nWas mache ich falsch ?\n4 Antworten Kacki – 20.11.2016\nHast Du die Blynk-Library (unbedingt Version 0.3.4) runtergeladen und in das richtige Vznis entpackt?\nDie Blynk-Library ist hier (https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4) verlinkt.\nZip öffnen und alle Verzeichnisse daraus in Dein \u0026ldquo;libraries\u0026rdquo;- Verzeichnis kopieren. Siehe screenshot:\nAnhänge:\nKacki – 20.11.2016\nWenn Du wie ich vorher z.B. von blynk.cc eine neuere Version (die 0.4.0 hatte ich) installiert hast, solltest Du die zunächst restlos(!) wieder aus dem Library-Verzeichnis löschen, denn ein „Überkopieren“ der 0.3.4 führt zu Fehlern beim Compilieren.\nmlampl – 21.11.2016\nHI\nDanke für die Info , habe die library laut deinem link geladen und habe folgendes im Verzeichniss.\nDatum stimmt mit deinem Screenshot nicht zusammen .\nist es ein alter link ?\nbitte um überprüfung\nDanke im vorraus.\nAnhänge:\nmlampl – 21.11.2016\nEs funktioniert\nHabe alles noch einmal deinstalliert und wieder neu installiert und mit deinem link die Library geladen und siehe da es funktioniert.\nDanke für deine Hilfe.\n","permalink":"https://iot.fkainka.de/forum/topic/tag-5-fehler-kann-esp8266_softser-h-nicht-finden/","summary":"\u003cp\u003ekann das Verzeichnis und file ESP8266_SoftSer.h nicht finden .\u003cbr\u003e\nWas mache ich falsch ?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"4-antworten\"\u003e4 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 20.11.2016\u003c/p\u003e\n\u003cp\u003eHast Du die Blynk-Library (unbedingt Version 0.3.4) runtergeladen und in das richtige Vznis entpackt?\u003cbr\u003e\nDie Blynk-Library ist hier (\u003ca href=\"https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\"\u003ehttps://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\u003c/a\u003e) verlinkt.\u003cbr\u003e\nZip öffnen und alle Verzeichnisse daraus in Dein \u0026ldquo;libraries\u0026rdquo;- Verzeichnis kopieren. Siehe screenshot:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Capture-1.jpg\" loading=\"lazy\" src=\"/images/2016/11/Capture-1.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 20.11.2016\u003c/p\u003e\n\u003cp\u003eWenn Du wie ich vorher z.B. von blynk.cc eine neuere Version (die 0.4.0 hatte ich) installiert hast, solltest Du die zunächst restlos(!) wieder aus dem Library-Verzeichnis löschen, denn ein „Überkopieren“ der 0.3.4 führt zu Fehlern beim Compilieren.\u003c/p\u003e","title":"Tag 5 , Fehler: kann ESP8266_SoftSer.h nicht finden ?"},{"content":"Hallo,\nhabe mir die blynk.zip 0.3.4 geladen.\nAber wo soll ich die hinkopieren, als *.zip oder entzippt?\nWer kann mir die Schritte sagen, denn wie beschrieben klappt es nicht bei mir?\nIch finde sie nicht wieder.\nDanke\nHF\n2 Antworten Kacki – 20.11.2016\nHallo HF,\ndu hast ein Verzeichnis unter ~\\Dokumente\\Arduino\\libraries oder so ähnlich. Notfalls suche einfach nach allen Unterverzeichnissen namens \u0026ldquo;libraries\u0026rdquo;, die es auf Deiner Platte gibt. Du wird es erkennen, dort müsste schon das Unterverzeichnis ~\\libraries\\NanoESP-1.1 von Tag 2 darin angelegt worden sein.\nIn dieses Verzeichnis ~\\libraries kopierst Du alle Unterverzeichnisse, die sich im ZIP befinden. Natürlich entpackt.\nSieht bei mir so aus (es könnte sein, dass bei mir das ein oder andere Verzeichnis \u0026ldquo;zuviel\u0026rdquo; drin ist\u0026hellip;)\nAnhänge:\nHF – 22.11.2016\nHallo Kacki,\nvielen Dank für Deine Hilfe. Es hat geklappt!\nManchmal sinds eben die kleinen Dinge die nicht klappen.\nViele Grüsse, bis zum nächsten Mal ;)\nHF\n","permalink":"https://iot.fkainka.de/forum/topic/wohinnmit-blynk-zip/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nhabe mir die blynk.zip 0.3.4 geladen.\u003cbr\u003e\nAber wo soll ich die hinkopieren, als *.zip oder entzippt?\u003cbr\u003e\nWer kann mir die Schritte sagen, denn wie beschrieben klappt es nicht bei mir?\u003cbr\u003e\nIch finde sie nicht wieder.\u003cbr\u003e\nDanke\u003cbr\u003e\nHF\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 20.11.2016\u003c/p\u003e\n\u003cp\u003eHallo HF,\u003c/p\u003e\n\u003cp\u003edu hast ein Verzeichnis unter ~\\Dokumente\\Arduino\\libraries oder so ähnlich. Notfalls suche einfach nach allen Unterverzeichnissen namens \u0026ldquo;libraries\u0026rdquo;, die es auf Deiner Platte gibt. Du wird es erkennen, dort müsste schon das Unterverzeichnis ~\\libraries\\NanoESP-1.1 von Tag 2 darin angelegt worden sein.\u003cbr\u003e\nIn dieses Verzeichnis ~\\libraries kopierst Du alle Unterverzeichnisse, die sich im ZIP befinden. Natürlich entpackt.\u003cbr\u003e\nSieht bei mir so aus (es könnte sein, dass bei mir das ein oder andere Verzeichnis \u0026ldquo;zuviel\u0026rdquo; drin ist\u0026hellip;)\u003c/p\u003e","title":"Wohinnmit blynk.zip"},{"content":"On day 3 I successfully uploaded the program and changed my wifi accesspoint name\nnanoesp.configWifi(ACCESSPOINT, “MyNanoESP”, “MyPassword”);\nAnd I was able to connect to it, using the specified password. Serial monitor gave successful result.\nOn day 4 I opened the program and modified the WLAN-name and password in the defines to the new values. But when I upload the program to the board, the D3 led goes on (that\u0026rsquo;s good), but the serial monitor gives (eventually) \u0026ldquo;Error, no connection\u0026rdquo;. Also the WLAN-name is not visible anymore in the available WLAN list (and before uploading it sure was visible).\nI have tried this on two computers, both with the same result.\nIn summary: when I upload the program of day 3, I see the WLAN-name of my NanoESP in the WLAN-list. Then when I upload the program of day 4, the WLAN-name disappears of the WLAN-list.\nDoes anyone have this problem also? Anyone have a clue how to solve this issue?\nThanks in advance!\n2 Antworten Kacki – 20.11.2016\nWell, this is not a problem or an issue, but this is the goal - what did you expect?!\nOn day 3 you use the NanoESP as an AP, i.e. your ESP is \u0026ldquo;a router\u0026rdquo;.\nOn day 4, your NanoESP is working as a WLAN Client that should connect to your existing local WLAN Network you provide e.g. via Fritzbox or an equivalent router.\nThese 2 network modes are totally different and I guess that is the intention of the 2 excercises.\nYou shoud read carefully the text ;-)\nTychoNano – 20.11.2016\nKacki,\nYou\u0026rsquo;ve been a great help. I get \u0026ldquo;WLAN connected\u0026rdquo; now. I thought I had to use the name/password combination I\u0026rsquo;ve entered on day 3, but I should use the name/password of my own local WLAN. Of course!\nNote that I\u0026rsquo;m using the Dutch translation, and the text is not always really clear\u0026hellip;\nMany thanks for your help!\n","permalink":"https://iot.fkainka.de/forum/topic/day-4-problem-wlan-name-disappears-of-the-wlan-list-connection-error/","summary":"\u003cp\u003eOn day 3 I successfully uploaded the program and changed my wifi accesspoint name\u003cbr\u003e\n\u003ccode\u003enanoesp.configWifi(ACCESSPOINT, “MyNanoESP”, “MyPassword”);\u003c/code\u003e\u003cbr\u003e\nAnd I was able to connect to it, using the specified password. Serial monitor gave successful result.\u003c/p\u003e\n\u003cp\u003eOn day 4 I opened the program and modified the WLAN-name and password in the defines to the new values. But when I upload the program to the board, the D3 led goes on (that\u0026rsquo;s good), but the serial monitor gives (eventually) \u0026ldquo;Error, no connection\u0026rdquo;. Also the WLAN-name is not visible anymore in the available WLAN list (and before uploading it sure was visible).\u003c/p\u003e","title":"Day 4 problem: WLAN-name disappears of the WLAN-list | connection error"},{"content":"Hi,\nI just bought \u0026quot; the Internet of thinks Profi Lernpaket from Conrad with the NanoESP.\nThe handbook is refering to the Advent Calender 2015 with examples i can use to learn about the IOT.\nThe problem is, i cannot find the Advent Calender 2015 to download, maybe becouse i am new here and German is not my native language.\nAdvent Calender 2016 is easy to download, but is not the same examples.\nMy question is , were can i download the Advent Calender 2015 ?\nThanks in advance\n1 Antwort Gerrit5 – 16.11.2016\nI found it, now i can start learning.\n","permalink":"https://iot.fkainka.de/forum/topic/advent-calender-2015/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eI just bought \u0026quot; the Internet of thinks Profi Lernpaket from Conrad with the NanoESP.\u003cbr\u003e\nThe handbook is refering to the Advent Calender 2015 with examples i can use to learn about the IOT.\u003c/p\u003e\n\u003cp\u003eThe problem is, i cannot find the Advent Calender 2015 to download, maybe becouse i am new here and German is not my native language.\u003c/p\u003e\n\u003cp\u003eAdvent Calender 2016 is easy to download, but is not the same examples.\u003c/p\u003e","title":"Advent Calender 2015"},{"content":"Beim Hochladen erhalte ich folgende Fehlermeldung:\navrdude: no programmer has been specified on the command line or the config file\nSpecify a programmer using the -c option and try again\nWie kann der Fehler beseitigt werden ?\n(Software Arduino auf 1.6.8 aktualisiert, Libraries eingebunden)\nLetztes Jahr (Adventskalender IOT 2015) hatte alles reibungslos geklappt.\n1 Antwort Hans – 14.11.2016\nProblem ist gelöst !\nMit der Neuinstallation der IDE-Software 1.6.12 tritt das Problem nicht mehr auf.\n(Entscheidender Hinweis steht im Arduino-Forum)\n","permalink":"https://iot.fkainka.de/forum/topic/fehler-beim-hochladen/","summary":"\u003cp\u003eBeim Hochladen erhalte ich folgende Fehlermeldung:\u003cbr\u003e\navrdude: no programmer has been specified on the command line or the config file\u003cbr\u003e\nSpecify a programmer using the -c option and try again\u003c/p\u003e\n\u003cp\u003eWie kann der Fehler beseitigt werden ?\u003c/p\u003e\n\u003cp\u003e(Software Arduino auf 1.6.8 aktualisiert, Libraries eingebunden)\u003cbr\u003e\nLetztes Jahr (Adventskalender IOT 2015) hatte alles reibungslos geklappt.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eHans\u003c/strong\u003e – 14.11.2016\u003c/p\u003e\n\u003cp\u003eProblem ist gelöst !\u003c/p\u003e\n\u003cp\u003eMit der Neuinstallation der IDE-Software 1.6.12 tritt das Problem nicht mehr auf.\u003c/p\u003e","title":"Fehler beim Hochladen"},{"content":"IoT Handbuch Seite 29 AT+CWLIF gibt keine IP und MAC auf den seriell Monitor aus aber OK, die Nachricht wird nicht durch den Packetsender übertragen(Settings wie im Handbuch vorgegeben)\nKann mir bitte jemand helfen?\nDanke\n","permalink":"https://iot.fkainka.de/forum/topic/udp/","summary":"\u003cp\u003eIoT Handbuch Seite 29 AT+CWLIF gibt keine IP und MAC auf den seriell Monitor aus aber OK, die Nachricht wird nicht durch den Packetsender übertragen(Settings wie im Handbuch vorgegeben)\u003c/p\u003e\n\u003cp\u003eKann mir bitte jemand helfen?\u003cbr\u003e\nDanke\u003c/p\u003e","title":"UDP"},{"content":"Hallo liebe Adventsbastelgemeinde ;-)\ndiese Blynk-App scheint ja sehr komfortabel zu sein.\nUm \u0026ldquo;Energie\u0026rdquo; zu sparen, muss man seine Projekte immer mal wieder löschen. Aber wie tut man das überhaupt?\nIch habe es hinbekommen, die Controls/Widgets alle einzeln zu löschen, aber das leere Projekt bleibt dann scheinbar in der App zurück.\nKann man die nicht wieder loswerden?\nGruß,\nKacki\n3 Antworten Crafting_Time – 13.11.2016\nHallo,\ndu kannst in der Blynk-App im Projekt auf das Sechseck klicken (dort wird dir auch der Auth Token angezeigt).\nDann scrollst du ganz nach unten und klickst dort auf delete.\nSchon ist das Projekt gelöscht und du bekommst die Energie wieder.\nMfG,\nCrafting_Time\nKacki – 13.11.2016\nAh - vielen Dank! Jetzt wundere ich mich gerade, warum ich da nicht selbst drauf gekommen bin.\nMit dem Umschalten zwischen Programm und Editor habe ich offenbar noch ein kleines Problem\u0026hellip;\nxEggi85x – 20.12.2016\nIch habe das Problem dass ich alle Projekte gelöscht habe trotzdem habe ich nicht genug Energie um ein neues Projekt zu erstellen.\n","permalink":"https://iot.fkainka.de/forum/topic/blynk-app/","summary":"\u003cp\u003eHallo liebe Adventsbastelgemeinde ;-)\u003c/p\u003e\n\u003cp\u003ediese Blynk-App scheint ja sehr komfortabel zu sein.\u003cbr\u003e\nUm \u0026ldquo;Energie\u0026rdquo; zu sparen, muss man seine Projekte immer mal wieder löschen. Aber wie tut man das überhaupt?\u003cbr\u003e\nIch habe es hinbekommen, die Controls/Widgets alle einzeln zu löschen, aber das leere Projekt bleibt dann scheinbar in der App zurück.\u003cbr\u003e\nKann man die nicht wieder loswerden?\u003c/p\u003e\n\u003cp\u003eGruß,\u003cbr\u003e\nKacki\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"3-antworten\"\u003e3 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eCrafting_Time\u003c/strong\u003e – 13.11.2016\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003edu kannst in der Blynk-App im Projekt auf das Sechseck klicken (dort wird dir auch der Auth Token angezeigt).\u003cbr\u003e\nDann scrollst du ganz nach unten und klickst dort auf delete.\u003cbr\u003e\nSchon ist das Projekt gelöscht und du bekommst die Energie wieder.\u003c/p\u003e","title":"Blynk-App"},{"content":"Seite 15 im Handbuch Franzis MAKER KIT IOT: AT+CWJAP=\u0026quot; \u0026ldquo;,\u0026rdquo; \u0026quot; liefert immer +CWJAP:3 FAIL und AT+CIFSR liefert STAIP,\u0026ldquo;0.0.0.0\u0026rdquo; oder\n\u0026ldquo;10.0.0.21\u0026rdquo; CWMODE=1\nWas mache ich falsch?\n2 Antworten saasemer – 15.01.2017\nHallo petfield,\nich recht neu das Conrad Lernpaket - Aufbau auch im Buch anscheinend identisch, aber weniger Komponenten dabei.\nBei hat es auch einige Versuche gebraucht. In diversen Foren stand, man muss unbedingt noch die Parameter ,5,3 hintendran hängen (warum schreibt aber keiner so genau), in anderen wieder du sollst vorher auf CWMODE=3 schalten oder den Befehl CWJAP_CUR benutzen.\nBei mir ging es auf einmal. Wichtig ist zwischen den Anführungszeichen \u0026ldquo;deinWLAN-Name\u0026rdquo;,\u0026ldquo;deinWLAN-Passwort\u0026rdquo; zu schreiben - OHNE irgendwelche Leerzeichen auch nicht nach dem letzten Anführungszeichen.\nGruß\nder Saasemer\njodebrezel – 22.04.2017\nhallo saasemer\n\u0026hellip;vieleicht hast es übesehen im Fanzis Handbuch Seite 14\nganz oben steht zB. Kanalnummer 1-13\nzB. Verschlüsselungsmodus 1-4\n","permalink":"https://iot.fkainka.de/forum/topic/atcwjap/","summary":"\u003cp\u003eSeite 15 im Handbuch Franzis MAKER KIT IOT: AT+CWJAP=\u0026quot; \u0026ldquo;,\u0026rdquo; \u0026quot; liefert immer +CWJAP:3 FAIL und AT+CIFSR liefert STAIP,\u0026ldquo;0.0.0.0\u0026rdquo; oder\u003cbr\u003e\n\u0026ldquo;10.0.0.21\u0026rdquo; CWMODE=1\u003c/p\u003e\n\u003cp\u003eWas mache ich falsch?\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003esaasemer\u003c/strong\u003e – 15.01.2017\u003c/p\u003e\n\u003cp\u003eHallo petfield,\u003c/p\u003e\n\u003cp\u003eich recht neu das Conrad Lernpaket - Aufbau auch im Buch anscheinend identisch, aber weniger Komponenten dabei.\u003cbr\u003e\nBei hat es auch einige Versuche gebraucht. In diversen Foren stand, man muss unbedingt noch die Parameter ,5,3 hintendran hängen (warum schreibt aber keiner so genau), in anderen wieder du sollst vorher auf CWMODE=3 schalten oder den Befehl CWJAP_CUR benutzen.\u003cbr\u003e\nBei mir ging es auf einmal. Wichtig ist zwischen den Anführungszeichen \u0026ldquo;deinWLAN-Name\u0026rdquo;,\u0026ldquo;deinWLAN-Passwort\u0026rdquo; zu schreiben - OHNE irgendwelche Leerzeichen auch nicht nach dem letzten Anführungszeichen.\u003c/p\u003e","title":"AT+CWJAP"},{"content":"Hallo,\nich habe heute (ja ich bin etwas früh dran ;-) ) das Piano einmal getestet.\nDas Programm funktioniert an sich gut.\nAllerdings kommt manchmal hinter dem tone=\u0026hellip;\u0026hellip; noch ein Anhang\nNew Request from id :0, method: POST, ressource: /dataonly parameter: tone=3921,CONNECT\nWie kann man das verhindern?\nEbenso werden zwischendurch weitere Informationen geschickt (siehe Datei)\nWas hat das zu bedeuten?\nKann das Board nicht durchgehend verbunden bleiben?\nAnhänge:\nPiano.rtf\n","permalink":"https://iot.fkainka.de/forum/topic/tag-16/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe heute (ja ich bin etwas früh dran ;-) ) das Piano einmal getestet.\u003cbr\u003e\nDas Programm funktioniert an sich gut.\u003cbr\u003e\nAllerdings kommt manchmal hinter dem tone=\u0026hellip;\u0026hellip; noch ein Anhang\u003cbr\u003e\nNew Request from id :0, method: POST, ressource: /dataonly parameter: tone=3921,CONNECT\u003cbr\u003e\nWie kann man das verhindern?\u003cbr\u003e\nEbenso werden zwischendurch weitere Informationen geschickt (siehe Datei)\u003cbr\u003e\nWas hat das zu bedeuten?\u003cbr\u003e\nKann das Board nicht durchgehend verbunden bleiben?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2016/11/Piano.rtf\"\u003ePiano.rtf\u003c/a\u003e\u003c/p\u003e","title":"Tag 16"},{"content":"Servus,\nSeit geraumer Zeit gibt es ja libraries speziell für den ESP8266 z.B.\nhttps://github.com/esp8266/Arduino\nIst es möglich diese Libraries mit dem NanoESP zu verwenden? Falls ja wie stellt man das dann?\nSoweit ich das verstanden hab muss man dazu die libraries direkt auf den ESP8266 laden und nicht in den Arduino Chip und alles läuft nur auf dem ESP8266?!\nlg\n1 Antwort Terra – 17.11.2016\nFalls das noch wer ließt, ich bin inzwischen auf einen NodeMCU ESP8266 umgestiegen der auch mit der Arduino IDE programmiert werden kann, sehr viele gute ESP8266 Libraries unterstützt, mehr Speicher hat und weitaus billiger ist als der NanoESP.\nBisher bin ich sehr zufrieden mit diesem Setup.\n","permalink":"https://iot.fkainka.de/forum/topic/benutzung-von-esp8266-libraries/","summary":"\u003cp\u003eServus,\u003c/p\u003e\n\u003cp\u003eSeit geraumer Zeit gibt es ja libraries speziell für den ESP8266 z.B.\u003cbr\u003e\n\u003ca href=\"https://github.com/esp8266/Arduino\"\u003ehttps://github.com/esp8266/Arduino\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIst es möglich diese Libraries mit dem NanoESP zu verwenden? Falls ja wie stellt man das dann?\u003cbr\u003e\nSoweit ich das verstanden hab muss man dazu die libraries direkt auf den ESP8266 laden und nicht in den Arduino Chip und alles läuft nur auf dem ESP8266?!\u003c/p\u003e\n\u003cp\u003elg\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eTerra\u003c/strong\u003e – 17.11.2016\u003c/p\u003e\n\u003cp\u003eFalls das noch wer ließt, ich bin inzwischen auf einen NodeMCU ESP8266 umgestiegen der auch mit der Arduino IDE programmiert werden kann, sehr viele gute ESP8266 Libraries unterstützt, mehr Speicher hat und weitaus billiger ist als der NanoESP.\u003c/p\u003e","title":"Benutzung von ESP8266 Libraries?"},{"content":"Hallo,\ndas Programm Tag5 zeigt:\n[0] Blynk v0.3.4\n[499] Connecting to xxxx\n[1514] Failed to disable Echo\nWoran kann das liegen?\nGruß Ding\n10 Antworten viot – 06.11.2016\nBei mir taucht das gleiche Problem auf.\nKacki – 11.11.2016\nHabt Ihr denn die Blynk-Library schon?\nKacki – 12.11.2016\nOk, verstehe\u0026hellip; Die Blynk-Library ist ja hier (https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4) verlinkt. Leider aber noch nicht zu finden unter http://iot.fkainka.de/day5-2016, wie in der Anleitung beschrieben. Wenn man dann wie ich aus Ungeduld vorher selbst auf der Suche war und z.B. von blynk.cc bereits eine neuere Version (die 0.4.0 hatte ich) installiert hat, diese aber nicht funktioniert, sollte man die zunächst restlos(!) wieder aus dem Library-Verzeichnis löschen, denn ein \u0026ldquo;Überkopieren\u0026rdquo; der 0.3.4 führt zu Fehlern beim Compilieren.\nNach erfolgreicher Installation und Ermittlung des Tokens kommt bei mir jetzt:\n[0] Blynk v0.3.4\n[499] Connecting to xxxx\n[5639] IP: +CIFSR:STAIP,\u0026ldquo;192.168.178.29\u0026rdquo;\n+CIFSR:STAMAC,\u0026ldquo;xx:xx:xx:xx:xx:xx\u0026rdquo;\nOK\n[5668] Connected to WiFi\n[10830] Ready (ping: 11ms).\nKacki – 12.11.2016\nAha!\n[1514] Failed to disable Echo\nkommt, wenn das WLAN-Passwort nicht stimmt!\nGerade mal ausprobiert. Dumme Fehlermeldung, oder?\nviot – 12.11.2016\nVielen Dank für den Hinweis mit der Blynk Version.\nviot – 12.11.2016\nDa ich mit der alten Blynk Version dann doch einige weitere Probleme hatte, habe ich das Programm auf die Version 0.4.0 angepasst. Es läuft jetzt, genauso wie das Program für Tag 6\nDazu müssen die includes\n//#include \u0026lt;ESP8266_SoftSer.h\u0026gt;\n//#include \u0026lt;BlynkSimpleShieldEsp8266_SoftSer.h\u0026gt;\nder alten Verision durch folgende ersetzt werden\n#include \u0026lt;ESP8266_Lib.h\u0026gt;\n#include \u0026lt;BlynkSimpleShieldEsp8266.h\u0026gt;\nWeiterhin hatte ich das Problem, das die WLAN Verbindung nicht immer zustande kam - ein\ndelay(100);\nnach den Serial.begins scheint da zu helfen, warum ?\nviot – 12.11.2016\nund die WiFi initialisierung muss auf\nESP8266 wifi(\u0026amp;EspSerial);\ngeändert werden\nKacki – 14.11.2016\nMeine IDE meldet jedesmal nach dem Start, dass es Updates gibt. Gerne würde ich alles updaten, allerdings ist dann auch die Blynk Library dabei und die IDE will sie genau wieder auf 0.4.0 updaten. Vermutlich muss ich dann auch genau das machen (Antwort #1577), oder?\nDein letzter Beitrag, Antwort #1578 - die WIFI-Initialisierung - muss das im Rahmen der neuen Library gemacht werden, oder wegen Deines Problemes mit dem WLAN Connect?\nviot – 19.11.2016\nJa, das scheint eine Änderung in der neuen Library zu sein, mein Programm sieht jetzt so aus:\n/*\nBlynk 1: LED\nChange ssid, password and token\n*/\nchar ssid[] = “XXXX”;\nchar password[] = “XXXX”;\nchar token[] = “XXXX”;\n#define BLYNK_DEBUG\n#define BLYNK_PRINT Serial // Comment this out to disable prints and save space\n#include \u0026lt;ESP8266_Lib.h\u0026gt;\n#include \u0026lt;BlynkSimpleShieldEsp8266.h\u0026gt;\n// Set NanoESP Serial object\n#include \u0026lt;SoftwareSerial.h\u0026gt;\nSoftwareSerial EspSerial(11, 12); // RX, TX\nESP8266 wifi(\u0026amp;EspSerial);\nvoid setup()\n{\n// Set console baud rate\nSerial.begin(19200);\ndelay(100);\nEspSerial.begin(19200);\ndelay(100);\nBlynk.begin(token, wifi, ssid, password);\n}\nvoid loop()\n{\nBlynk.run();\n}\nMST – 06.02.2017\nHallo,\nmit den angegebenen Programmänderungen funktioniert auch die neue Android App V2.8.3 in Verbindung mit der Blynk Library 0.4.4\nGruß MST\n","permalink":"https://iot.fkainka.de/forum/topic/tag-5/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\ndas Programm Tag5 zeigt:\u003c/p\u003e\n\u003cp\u003e[0] Blynk v0.3.4\u003cbr\u003e\n[499] Connecting to xxxx\u003cbr\u003e\n[1514] Failed to disable Echo\u003c/p\u003e\n\u003cp\u003eWoran kann das liegen?\u003c/p\u003e\n\u003cp\u003eGruß Ding\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"10-antworten\"\u003e10 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eviot\u003c/strong\u003e – 06.11.2016\u003c/p\u003e\n\u003cp\u003eBei mir taucht das gleiche Problem auf.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 11.11.2016\u003c/p\u003e\n\u003cp\u003eHabt Ihr denn die Blynk-Library schon?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eKacki\u003c/strong\u003e – 12.11.2016\u003c/p\u003e\n\u003cp\u003eOk, verstehe\u0026hellip; Die Blynk-Library ist ja hier (\u003ca href=\"https://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\"\u003ehttps://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\u003c/a\u003e) verlinkt. Leider aber noch nicht zu finden unter \u003ca href=\"http://iot.fkainka.de/day5-2016\"\u003ehttp://iot.fkainka.de/day5-2016\u003c/a\u003e, wie in der Anleitung beschrieben. Wenn man dann wie ich aus Ungeduld vorher selbst auf der Suche war und z.B. von blynk.cc bereits eine neuere Version (die 0.4.0 hatte ich) installiert hat, diese aber nicht funktioniert, sollte man die zunächst restlos(!) wieder aus dem Library-Verzeichnis löschen, denn ein \u0026ldquo;Überkopieren\u0026rdquo; der 0.3.4 führt zu Fehlern beim Compilieren.\u003c/p\u003e","title":"Tag 5"},{"content":"Hallo,\nwo kann ich das Programm für Tag 4 (VErbindung mit den Internet aufbauen, Ping Request) finden?\n\u0026ldquo;..müssen Sie das heutige Programm von der Webseite www.iot.fkainka.de herunterladen\u0026rdquo;\nDanke\nErik\n1 Antwort fk – 27.10.2016\nHi,\ndie Programme wurden jetzt unter\nhttp://iot.fkainka.de/tag-0-alle-programm-von-kalender-2016\nveröffentlicht.\nViel Spaß,\nFabian\n","permalink":"https://iot.fkainka.de/forum/topic/iot-kalender-2016-tag-4-wo-ist-das-program/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ewo kann ich das Programm für Tag 4 (VErbindung mit den Internet aufbauen, Ping Request) finden?\u003c/p\u003e\n\u003cp\u003e\u0026ldquo;..müssen Sie das heutige Programm von der Webseite \u003ca href=\"https://www.iot.fkainka.de\"\u003ewww.iot.fkainka.de\u003c/a\u003e herunterladen\u0026rdquo;\u003c/p\u003e\n\u003cp\u003eDanke\u003cbr\u003e\nErik\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 27.10.2016\u003c/p\u003e\n\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003edie Programme wurden jetzt unter\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://iot.fkainka.de/tag-0-alle-programm-von-kalender-2016\"\u003ehttp://iot.fkainka.de/tag-0-alle-programm-von-kalender-2016\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003everöffentlicht.\u003c/p\u003e\n\u003cp\u003eViel Spaß,\u003cbr\u003e\nFabian\u003c/p\u003e","title":"IOT-Kalender 2016: Tag 4 wo ist das Program?"},{"content":"Hallo zusammen,\nich habe wir Inder Anleitung angegeben den Treiber für das Wifi-Board bei http://iot.fkainka.de/driver heruntergeladen (am 6.10.2016, ich glaube die Version war CH34x).\nDamit ist mein MacBook Pro (macOS Sierra) gecrasht, und lies sich nicht mehr booten solange das Board per USB verbunden war.\nGlücklicherweise ging das booten nachdem ich das Board vom USB-Port genommen hatte.\nDie Anleitung (auf Englisch) unter https://www.simplicate.info/2016/09/16/ch340-drama-osx-10-12-sierra-16a313a/ zeigt wie man den Treiber wieder los wird und auf https://tzapu.com/ch340-ch341-serial-adapters-macos-sierra/ habe ich die Info gefunden wie ein funktionierender Treiber zu installieren ist.\nAuch für solche eher technischen Produkte sollten funktionierende Treiber bereitgestellt werden, oder zumindest eine Warnung zu finden sein, wenn es solche Treiber nicht gibt.\n7 Antworten thymjan – 13.10.2016\nDas Selbe ist mir hier mit meinem MacMini mit macOS Sierra passiert. Board eingesteckt und einige Sekunden später schwarzer Bildschirm und rien ne va plus. Ganz, ganz unangenehmes Erlebnis! Zum Glück ist der Spuk nach Abziehen des Moduls wieder vorbei.\nHabe auch wie von @seasidetesting beschrieben die bestehenden Treiber entfernt und den Neuen installiert und nun kann ich mit dem NanoESP wie gewohnt arbeiten.\nEin auffälliger Hinweis für macOS Sierra Anwender wäre angebracht um bösen Überraschungen am 1. Dezember vorzubeugen, oder?\nSonst fängt das ganze mit einer großen Enttäuschung an.\nhosi1709 – 19.11.2016\nHabe gerade den Conrad-Adventskalender IoT erhalten und das 1 Fenster vorzeitig geöffnet. Sobald ich jetzt das NanoESP in die USB-Buchse stecke, stürzt der Mac mit macOS Sierra ab. Das hat sich auch nicht geändert, nachdem ich den o.a. Treiber für Mac installiert habe.\nIch nutze sonst mein MaccBook Air und Arduino IDE mit dem NodeMCU 12E und dem Arduino UNO. Treiber habe ich hier gefunden:\nhttps://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx\nKeine Probleme!\nIch suche also einen Treiber, der für NodeMCU, Arduino UND nanoESP läuft. Wo finde ich den??????\nthymjan – 19.11.2016\n@hosi1709: hast du auch wie in der Anleitung beschrieben den alten Treiber entfernt?\nhttps://www.simplicate.info/2016/09/16/ch340-drama-osx-10-12-sierra-16a313a/\nEs handelt sich hier speziell um den Treiber für den ch340 Chipsatz. NodeMCU und Arduino sollten davon nicht beeinträchtigt sein. Die haben andere Chipsätze die die Kommunikation zwischen USB und RX/TX der Mikroprozessoren managen.\nAlso wie gesagt, den alten wie in der Anleitung beschrieben löschen (der ist für das Absturzszenario verantwortlich) und dann den neuen installieren.\nhosi1709 – 21.11.2016\nDanke schon mal für die Hilfe. Mir ist die Sache etwas unklar, denn der Absturz passierte bereits ohne Installation des Treibers. Nach der Installation war es dann nixht besser.\nIch habe es in meinem bisherigen Computerleben vermieden Dateien aus dem Betriebssystem zu löschen. Besonders freue ich mixh dass mein MacBook mit Arduino UNO und NodeMCU klar kommt. Ich verabschiede mich daher ohne Groll vom NanoESP.\nthymjan – 21.11.2016\nDer Treiber für den Chipsatz ch340 ist bei macOS sierra schon mit dabei. Dieser ist aber fehlerhaft. Deshalb der radikale Absturz sobald du ein Modul mit ch340-Chipsatz anschließt. Die Lösung ist wie schon oben gesagt, den vorhandenen Treiber nach der Schritt-für-Schritt Anleitung zu entfernen. Und dann den neuen Treiber installieren. Theoretisch kannst Du die Dateien auch mit dem Finder suchen und umbenennen oder in ein anderes Verzeichnis verschieben, dann kannst Du auch alles wieder rückgängig machen.\nAber ich kann dich verstehen, hatte auch ein mulmiges Gefühl dabei.\nDas Ding soll ja Spaß bringen und kein Ärger.\nlewina – 24.11.2016\nHallo,\nich benutze macOS Sierra 10.12.1 und habe den Treiber für das NanoESP und Arduino installiert und stoße nun auf dieses Problem (siehe Screenshot). Kann nicht nachvollziehen was ich falsch gemacht habe??\nDer serielle Monitor gibt mir nur eine Abfolge von Zeichen, auf dem Board leuchten eine blaue und zwei rote LEDs.\nAnhänge:\nfk – 24.11.2016\nHi,\ndas Problem ist mittlerweile bei mehreren Leuten aufgetreten. Auf dieser Seite gibt es Hilfe:\nhttps://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver\nAuf der Hauptseite zum Treiber ( iot.fkainka.de/Driver ) tauschen sich Nutzer auch über die Kommentarfunktion zu dem Problem aus.\n","permalink":"https://iot.fkainka.de/forum/topic/wifi-board-macos-sierra/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich habe wir Inder Anleitung angegeben den Treiber für das Wifi-Board bei \u003ca href=\"http://iot.fkainka.de/driver\"\u003ehttp://iot.fkainka.de/driver\u003c/a\u003e heruntergeladen (am 6.10.2016, ich \u003cem\u003eglaube\u003c/em\u003e die Version war CH34x).\u003cbr\u003e\nDamit ist mein MacBook Pro (macOS Sierra) gecrasht, und lies sich nicht mehr booten solange das Board per USB verbunden war.\u003cbr\u003e\nGlücklicherweise ging das booten nachdem ich das Board vom USB-Port genommen hatte.\u003c/p\u003e\n\u003cp\u003eDie Anleitung (auf Englisch) unter \u003ca href=\"https://www.simplicate.info/2016/09/16/ch340-drama-osx-10-12-sierra-16a313a/\"\u003ehttps://www.simplicate.info/2016/09/16/ch340-drama-osx-10-12-sierra-16a313a/\u003c/a\u003e zeigt wie man den Treiber wieder los wird und auf \u003ca href=\"https://tzapu.com/ch340-ch341-serial-adapters-macos-sierra/\"\u003ehttps://tzapu.com/ch340-ch341-serial-adapters-macos-sierra/\u003c/a\u003e habe ich die Info gefunden wie ein funktionierender Treiber zu installieren ist.\u003c/p\u003e","title":"WiFi-Board \u0026 macOS Sierra"},{"content":"Habe im Vorjahr den Kalender gekauft und alle Übungen erfolgreich durchgeführt.\nMacht es jetzt Sinn das Paket um 49 Euro nochmals zu kaufen ?\nOder kann ich die neuen Übungen mit dem alten Baukasten machen ?\nViele Grüße\nMartin Klein\n2 Antworten Martin Klein – 11.10.2016\nHabe jetzt schon erfahren - JA es gibt neue Bauteile und JA wenn man alle Experimente machen will sollte man den NEUEN Kalender kaufen.\nViele Grüße\nMartin Klein\nklaus – 20.10.2016\nGibt es auch dieses Mal eine Liste der Teile, die drin sind? So wie letztes Jahr? Wäre interessant.\nDesweiteren wäre interessant, ob diesmal mal jemand Bescheid weiß, welche LED im Kalender ist? Letztes Jahr wusste das ja leider niemand.\n","permalink":"https://iot.fkainka.de/forum/topic/gibt-es-auch-neue-bauteile-im-vergleich-zum-vorjahr/","summary":"\u003cp\u003eHabe im Vorjahr den Kalender gekauft und alle Übungen erfolgreich durchgeführt.\u003cbr\u003e\nMacht es jetzt Sinn das Paket um 49 Euro nochmals zu kaufen ?\u003c/p\u003e\n\u003cp\u003eOder kann ich die neuen Übungen mit dem alten Baukasten machen ?\u003c/p\u003e\n\u003cp\u003eViele Grüße\u003cbr\u003e\nMartin Klein\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eMartin Klein\u003c/strong\u003e – 11.10.2016\u003c/p\u003e\n\u003cp\u003eHabe jetzt schon erfahren - JA es gibt neue Bauteile und JA wenn man alle Experimente machen will sollte man den NEUEN Kalender kaufen.\u003c/p\u003e\n\u003cp\u003eViele Grüße\u003cbr\u003e\nMartin Klein\u003c/p\u003e","title":"Gibt es auch neue Bauteile (im Vergleich zum Vorjahr) ??"},{"content":"Auch dieses Jahr gibt es wieder die Vorabversion aller Programme zum Ausprobieren.\nWie bereits in dem Handbuch erwähnt wurde speziell für den letzten Teil des Adventskalenders ein eigener Server gemietet und konfiguriert. Dieser ist nun soweit eingestellt, dass auch die letzten Versuche funktionieren. Es kann allerdings immer noch sein, dass es bis zum offiziellen Start im Dezember zu kurzen Downzeiten kommt.\nEin Problem gibt es derzeit noch mit dem Cheerlights Projekt am Tag 23. Ich hoffe, dass ich dieses Problem in den nächsten Tagen lösen kann.\nSonstige Bugs oder Fragen können gerne als Kommentar auf dieser Seite gepostet werden.\nViel Spaß beim Basteln!\nDownload: Alle Programme ","permalink":"https://iot.fkainka.de/tag-0-alle-programm-von-kalender-2016/","summary":"\u003cp\u003eAuch dieses Jahr gibt es wieder die Vorabversion aller Programme zum Ausprobieren.\u003c/p\u003e\n\u003cp\u003eWie bereits in dem Handbuch erwähnt wurde speziell für den letzten Teil des Adventskalenders ein eigener Server gemietet und konfiguriert. Dieser ist nun soweit eingestellt, dass auch die letzten Versuche funktionieren. Es kann allerdings immer noch sein, dass es bis zum offiziellen Start im Dezember zu kurzen Downzeiten kommt.\u003c/p\u003e\n\u003cp\u003eEin Problem gibt es derzeit noch mit dem Cheerlights Projekt am Tag 23. Ich hoffe, dass ich dieses Problem in den nächsten Tagen lösen kann.\u003c/p\u003e","title":"Tag 0: Alle Programm von Kalender 2016"},{"content":"Hallo,\nich bekomme immer, beim Installieren des Treibers (/images/2015/09/CH341SER.zip) die Fehlermeldung: „Driver install failure“.\nBetriebssystem W10x64\nDie Meldung kommt auf allen Computern mit Windows 10.\nGruß Ding\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/treiber-installation-fehler-w10x64/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nich bekomme immer, beim Installieren des Treibers (/images/2015/09/CH341SER.zip) die Fehlermeldung: „Driver install failure“.\u003cbr\u003e\nBetriebssystem W10x64\u003cbr\u003e\nDie Meldung kommt auf allen Computern mit Windows 10.\u003cbr\u003e\nGruß Ding\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"esp_treiber_fehler.png\" loading=\"lazy\" src=\"/images/2016/10/esp_treiber_fehler.png\"\u003e\u003c/p\u003e","title":"Treiber Installation Fehler W10x64"},{"content":"Hallo,\nnachdem ich mit AT+RESTORE und AT+UART_CUR \u0026ldquo;gespielt\u0026rdquo; habe, bekomme ich keinen Kontakt\nmehr zum ESP. Der Rest des Pretzel Boards funktioniert noch.\nVermutlich habe ich \u0026ldquo;enable both RTS and CTS\u0026rdquo; gesetzt.\nWoher bekomme ich nun die Original-Firmware für den ESP-Controller?\nSuche schon locker einen Tag im Netz :-(\nVielen Dank für die Hilfe\nGruß\nUwe\n2 Antworten fk – 04.10.2016\nHallo,\ndas Problem liegt vermutlich darin, dass die Baudrate des Moduls sich verändert hat.\nHier findest du ein Programm, welches automatisch die richtige Baudrate und ein paar andere Parameter einstellt:\n/images/2015/12/ConfigTest2.zip\nIch hoffe das hilft.\nUweS – 04.10.2016\nHallo,\ndanke für den link.\nAllerdings führte das nicht zum Erfolg.\nIch fürchte immer noch es kommt von:\nAT+UART_DEF=XXXX,8,0,0,3 = „enable both RTS and CTS“\nDann empfängt der ESP doch nichts ohne Hardwaresteuerung?\nGruß\nUwe\nHier die Ausgabe\nESP SEND ERROR: AT Expec. wrong Baudrate ESP SEND ERROR: AT+UART_DEF=19200,8,1,0,0 ESP SEND ERROR: AT ESP SEND ERROR: AT+UART_DEF=19200,8,1,0,0 ESP SEND ERROR: AT ESP SEND ERROR: AT+UART_DEF=19200,8,1,0,0 ESP SEND ERROR: AT ESP SEND ERROR: AT+UART_DEF=19200,8,1,0,0 ESP SEND ERROR: AT ESP SEND ERROR: AT+UART_DEF=19200,8,1,0,0 ESP SEND ERROR: AT Baudrate ERROR ESP SEND ERROR: AT+CWSAP? ESP SEND ERROR: AT+CWMODE_DEF=2 ESP SEND ERROR: AT+CWSAP_DEF=\u0026#34;NanoESP\u0026#34;,\u0026#34;\u0026#34;,5,0 Configuration ERROR, please retry ESP SEND ERROR: AT+CIPMUX=1 ESP SEND ERROR: AT+CIPSERVER=1,80 ","permalink":"https://iot.fkainka.de/forum/topic/esp8266-gebrickt/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nnachdem ich mit AT+RESTORE und AT+UART_CUR \u0026ldquo;gespielt\u0026rdquo; habe, bekomme ich keinen Kontakt\u003cbr\u003e\nmehr zum ESP. Der Rest des Pretzel Boards funktioniert noch.\u003cbr\u003e\nVermutlich habe ich \u0026ldquo;enable both RTS and CTS\u0026rdquo; gesetzt.\u003cbr\u003e\nWoher bekomme ich nun die Original-Firmware für den ESP-Controller?\u003cbr\u003e\nSuche schon locker einen Tag im Netz :-(\u003cbr\u003e\nVielen Dank für die Hilfe\u003cbr\u003e\nGruß\u003cbr\u003e\nUwe\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 04.10.2016\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003edas Problem liegt vermutlich darin, dass die Baudrate des Moduls sich verändert hat.\u003c/p\u003e","title":"ESP8266 gebrickt?"},{"content":"Ich habe die arduino IDE 1.6.11 instaliert.\nIn das buch \u0026ldquo;Conrad Internet of Things\u0026rdquo; (Profi Lernpaket) ist das erste Programmdatei zum testen \u0026ldquo;P01_SoftwareSerial.ino\u0026rdquo;.\nUnter file \u0026gt; examples \u0026gt; 10.StarterKit_basickit gibt es P02_spaceshiptinterface bis P15_hackingbuttons aber nicht P01_softwareserial.ino\u0026hellip;\nEs gelingt mir nicht die grundlegende AT-Befehle zu verwenden.\nKonnen Sie mich hilfen?\nTjarda (NL)\n2 Antworten John – 22.10.2016\nHi Tjarda,\nYou got one step further then I did!\nI tried to download the P-command software from the website www.buch.cd but I failed.\nThe code 10215-5 results in an error. Could this be because I try to download from NL?\nHow did you manage to download the P-commands?\nThanks,\nJohn\nJohn – 22.10.2016\nI found it!\n/images/2015/09/Day1_SoftwareSerial.zip\nTry iot.fkainka.de/Day-1 etc for all the trainings.\nJohn\n","permalink":"https://iot.fkainka.de/forum/topic/wo-ist-po1_softwareserial/","summary":"\u003cp\u003eIch habe die arduino IDE 1.6.11 instaliert.\u003cbr\u003e\nIn das buch \u0026ldquo;Conrad Internet of Things\u0026rdquo; (Profi Lernpaket) ist das erste Programmdatei zum testen \u0026ldquo;P01_SoftwareSerial.ino\u0026rdquo;.\u003cbr\u003e\nUnter file \u0026gt; examples \u0026gt; 10.StarterKit_basickit gibt es P02_spaceshiptinterface bis P15_hackingbuttons aber nicht P01_softwareserial.ino\u0026hellip;\u003c/p\u003e\n\u003cp\u003eEs gelingt mir nicht die grundlegende AT-Befehle zu verwenden.\u003c/p\u003e\n\u003cp\u003eKonnen Sie mich hilfen?\u003c/p\u003e\n\u003cp\u003eTjarda (NL)\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJohn\u003c/strong\u003e – 22.10.2016\u003c/p\u003e\n\u003cp\u003eHi Tjarda,\u003c/p\u003e\n\u003cp\u003eYou got one step further then I did!\u003cbr\u003e\nI tried to download the P-command software from the website \u003ca href=\"https://www.buch.cd\"\u003ewww.buch.cd\u003c/a\u003e but I failed.\u003cbr\u003e\nThe code 10215-5 results in an error. Could this be because I try to download from NL?\u003cbr\u003e\nHow did you manage to download the P-commands?\u003c/p\u003e","title":"Wo ist Po1_softwareserial?"},{"content":"Im Kontext des neues IoT Adventskalenders 2016 wurde die Library zum NanoESP um einige Funktionen erweitert. Neben den klassischen Befehlen zum Steuern des Moduls, gibt es in dieser Version auch zwei Sub-Libraries, die das Übermitteln von Webseiten erleichtern oder die Verwendung des beliebten MQTT(http://mqtt.org/) IoT-Protokolls ermöglichen.\ndownload-151556_640 Download Link auf Github: https://github.com/FKainka/NanoESP\nUnter den Beispielen befindet sich außerdem ein Programm, welches Blynk-Projekte (http://www.blynk.cc/) ermöglicht. Damit Sie das Programm verwenden können, benötigen Sie eine zusätzliche Library:\nhttps://github.com/blynkkk/blynk-library/releases/tag/v0.3.4\nAuf dieser Seite möchte ich die einzelnen Funktionen und Methoden etwas detaillierter erläutern sowie auf etwaige Neuerungen eingehen. Die Basis der Library bildet die SoftwareSerial-Library, die bereits in Arduino integriert ist. Aufgrund dessen können Befehle wie find() und findUntil() auch mit dieser Library genutzt werden.\nInhalt Basics (NanoESP)Webserver (NanoESP_HTTP)MQTT (NanoESP_MQTT) - Datentyp mqtt_msg. - Abonnieren mit Funktions-Verknüpfung:\nBasics (NanoESP) Funktion Erläuterung boolean init(boolean vDebug=false); Initialisiert das Board und stellt default Werte ein (Transfermode = 0, Multiple Connections = 1) Wenn der Debug-Parameter true ist, wird bei einem fehlerhaften Befehl Zusatzinformationen über den Seriellen Monitor ausgegeben String sendCom(String command); Sendet ein AT-Kommando an das ESP-Modul || boolean sendCom(String command, char respond[]); | s.o.; Zusätzlich wird überprüft, ob das Modul eine Antwort sendet, die dem Respond-Parameter entspricht. |\n| boolean setMultipleConnections(); | Erlaubt Mehrfachverbindungen (AT+CIPMUX=1) |\n| boolean setTransferMode() ; | Setzt den Transfermodus auf transparent (AT+CIPMODE=0) |\n| boolean reset(); | Resetet das Board und wartet, bis es wieder bereit ist |\n| | |\n| boolean configWifiMode(int modus); | Stellt den WLAN Modus ein (STATION, ACCESSPOINT, DUAL) |\n| boolean configWifi(int modus, String ssid, String password); | Stellt das WLAN ein mit Modus, SSID und Password |\n| boolean configWifiStation(String ssid, String password); | Stellt eine Verbindung zu einem WLAN-Router her |\n| boolean configWifiAP(String ssid, String password); | Stellt einen eignen AccesPoint zur Verfügung (Password darf leer sein, sonst min sechs Zeichen) |\n| boolean configWifiAP(String ssid, String password, int channel, int crypt); |\nS.o. |\nZusätzliche Parameter: WLAN-Kanal, Verschlüsselungsmodus\nboolean disconnectWifi(); Trennt die WLAN-Verbindung bool wifiConnected(); Überprüft, ob automatisch eine WLAN-Verbindung zu einer Station hergestellt wurde (Zeitersparnis gegenüber neue Verbindung bei bekannter Station) bool getIpMac(String \u0026amp;ip, String \u0026amp;mac); Liefert IP und MAC-Adresse des Boards. Parameter werden als Referenz übergeben String getIp(); Ermittelt die IP/IPs des Boards (AT+CIFSR) boolean newConnection(int id, String type, String ip , unsigned int port); Baut eine neue Verbindung (TCP oder UDP) auf. Parameter: Verbindungs-ID (0-4), Typ (TCP/UDP), IP (Ziel IP oder Adresse), Port\nboolean closeConnection(int id) ; Trennt die Verbindung mit der angegebenen Verbindungs-ID boolean startUdpServer(int id, String ip , unsigned int port, unsigned int recvport, int mode=0); Öffnet eine UDP-Verbindung |\nDer Empfangs-Port kann ein anderer sein als der Sende-Port. Modus 0: Die Ziel IP ändert sich nicht; Modus 1: die Ziel IP ändert sich einmal, wenn das Board eine Nachricht von einer anderen IP erhält; Modus 2: Das Board ändert die Ziel IP immer, wenn es eine neue Nachricht von einer anderen IP erhalten hat.\nboolean endUdpServer(int id); Beendet die UDP-Verbindung mit der angegeben ID || boolean startTcpServer(unsigned int port) ; | Startet einen TCP-Server unter dem angegeben Port. Es kann nur ein TCP-Server aktiviert sein |\n| boolean endTcpServer(); |\nBeendet den TCP-Server || boolean sendData(int id, String msg); | Sendet Text über die angegebene Verbindung |\n| boolean sendDataClose(int id, String msg); | Sendet Text und schließt danach die Verbindung |\n| bool sendRaw(int id, unsigned char data[], int LenChar); | Sendet binäre Daten (kein String) |\n| int getId(); | Gibt die Verbindungs-ID bei Datenempfang an. Wenn keine Daten empfangen wurden ist der Wert -1 |\n| bool recvData(int \u0026amp;id,int \u0026amp;len); | Wird true, wenn Daten empfangen wurden. ID und Länge werden per Referenz zurückgegeben |\n| int ping(String adress); | Pingt den Server unter der angegebenen Adresse an. Die Antwort-Zeit in ms wird zurückgegeben. Ist die Zeit 0 wurde keine Antwort empfangen. |\n| | |\n| void serialDebug(); |\nStellt eine direkte Verbindung zwischen Software und Hardware Serieller Schnittstelle her. Kann zum Testen von AT-Kommandos verwendet werden. |\nWebserver (NanoESP_HTTP) Funktion Erläuterung bool recvRequest(int \u0026amp;id, String \u0026amp;method, String \u0026amp;ressource, String \u0026amp;parameter); Gibt true zurück, wenn ein http-Request empfangen wurde. ID, Methode (POST oder GET) sowie angeforderte URL und etwaige Befehle werden per Referenz zurückgegeben. bool recvHTTP(int id, int len, String \u0026amp;method, String \u0026amp;ressource, String \u0026amp;parameter); s.o. bool sendFromFlash(int client, const char *website, int len); Sendet eine als Progmem-Variable gespeicherte Webseite direkt an den angeben Client (Verbindungs-ID) bool sendStreamHeader(int connectionId); Sendet die Antwort auf einen Event-Stream-Request. Server-Send-Events können zum schnellen Datenaustausch vom Server zum Client genutzt werden (http://www.html5rocks.com/en/tutorials/eventsource/basics/) || bool sendRequest(int id, char method[5], String address); | Sendet einen http-Request an einen Server (ID, Methode (GET/POST), URL) |\n| bool sendRequest(int id, char method[5], String address, String parameter); | Sendet einen http-Request an einen Server inklusive Sub-Parameter |\nMQTT (NanoESP_MQTT) Funktion Erläuterung bool connect(int id, String brooker, unsigned int port, String deviceId); Baut eine Verbindung zu einem MQTT-Server auf. Minimale Parameter: Verbindungs-ID, Broker-Adresse und Geräte-ID (darf nur einmal auf dem Broker vorhanden sein) (Defaultwerte: Clean Session = true, keepAliveTime = 120s)\nbool connect( [s.o], mqtt_msg * lastWill); Erweitere Parameter der Connect-Funktion: Parameter: lastWill-Nachricht\nbool connect( [s.o] , bool cleanSession, byte keepAliveTime); Erweitere Parameter der Connect-Funktion: Parameter: cleanSession, keepAliveTime\nbool connect( [s.o] , bool cleanSession, byte keepAliveTime, mqtt_msg * lastWill); Erweitere Parameter der Connect-Funktion: Parameter: cleanSession, keepAliveTime, lastWill-Nachricht\nbool connect([s.o], String userName , String password); Erweitere Parameter der Connect-Funktion: |\nParameter: Nutzername und Passwort für Broker mit Benutzerverwaltung\nbool connect*([s.o]*, bool cleanSession, byte keepAliveTime, mqtt_msg * lastWill , String userName , String password); Erweitere Parameter der Connect-Funktion |\nbool disconnect(int id); Trennt Verbindung zum MQTT-Broker bool subscribe(int id, String topic) ; Abonniert ein Topic bool subscribe(int id, String topic, byte qos); Abonniert ein Topic mit Qos bool subscribe(int id, String topic, byte qos, void (*g)(String value)); Abonniert ein Topic und weißt dem Topic eine Funktion zu, die aufgerufen wird, wenn eine Nachricht unter dem Topic empfangen wird (s.u. für weitere Erklärungen) bool unsubscribe(int id, String topic) ; Deabonniert ein Topic bool publish(int id, String topic, String value); Veröffentlicht Nachricht unter dem angeben Topic bool publish(int id, String topic, String value, byte qos, bool retain); Veröffentlicht Nachricht unter dem angeben Topic Zusätzliche Parameter: Quality of Service, Retain\nbool publish(int id, mqtt_msg *msg); Veröffentlicht Nachricht unter dem angeben Topic (Datentyp mqtt_msg s.u.) bool recvMQTT(int id, int len, String \u0026amp;topic, String \u0026amp;value); Gibt True zurück wenn eine MQTT-Nachricht empfangen wurde. Topic und Nachricht per Referenz bool recvMQTT(int \u0026amp;id, String \u0026amp;topic, String \u0026amp;value) ; Gibt True zurück wenn eine MQTT-Nachricht empfangen wurde. ID, Topic und Nachricht per Referenz void stayConnected(int id); Hält die Verbindung zum Broker aktiv, indem in regelmäßigen Abständen (i.d.R. StayConnected-Zeit/2) ein Ping gesendet wird bool ping(int id); Pingt den MQTT-Broker an (damit Verbindung bestehen bleibt) Datentyp mqtt_msg Mqtt_msg ist eine Struktur, über die eine MQTT-Nachricht definiert werden kann.\ntypedef struct{\nString topic;\nString value;\nbyte qos;\nbool retain;\n} mqtt_msg;\nBeispiel:\nmqtt_msg msgMode = {\u0026ldquo;NanoESP/test/rgb/mode\u0026rdquo;,“1“, 0, true};\nEs können auch einzelne Werte der Nachricht verändert werden:\nmsgMode.value = „0“;\nAbonnieren mit Funktions-Verknüpfung: In dem Befehl\nbool subscribe(int id, String topic, byte qos, void (*g)(String value));\nkann als letzter Parameter eine Funktion angeben werden, die dann aufgerufen wird, wenn zu diesem Topic eine Nachricht empfangen wurde (Wildcards erlaubt). Die Funktion muss einen Parameter vom Typ String haben, der die Nachricht des Topics enthält. Es können maximal 5 dieser Funktions-Verknüpfungen definiert werden.\nBeispiel:\nmqtt.subscribe(0, „test/song\u0026quot;, 2, gotnewSong)\nvoid gotnewSong(String value) {\nSerial.println(\u0026ldquo;New Song: \u0026quot; + value);\n}\n","permalink":"https://iot.fkainka.de/library/","summary":"\u003cp\u003eIm Kontext des neues IoT Adventskalenders 2016 wurde die Library zum NanoESP um einige Funktionen erweitert. Neben den klassischen Befehlen zum Steuern des Moduls, gibt es in dieser Version auch zwei Sub-Libraries, die das Übermitteln von Webseiten erleichtern oder die Verwendung des beliebten MQTT(\u003ca href=\"http://mqtt.org/\"\u003ehttp://mqtt.org/\u003c/a\u003e) IoT-Protokolls ermöglichen.\u003c/p\u003e\n\u003ch1 id=\"download-151556_\"\u003e\u003ca href=\"https://github.com/FKainka/NanoESP/archive/v1.1.zip\"\u003edownload-151556_640\u003c/a\u003e\u003c/h1\u003e\n\u003ch1 id=\"download\"\u003e\u003ca href=\"https://github.com/FKainka/NanoESP/archive/v1.1.zip\"\u003eDownload\u003c/a\u003e\u003c/h1\u003e\n\u003cp\u003eLink auf Github: \u003ca href=\"https://github.com/FKainka/NanoESP\"\u003ehttps://github.com/FKainka/NanoESP\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eUnter den Beispielen befindet sich außerdem ein Programm, welches Blynk-Projekte (\u003ca href=\"http://www.blynk.cc/\"\u003ehttp://www.blynk.cc/\u003c/a\u003e) ermöglicht. Damit Sie das Programm verwenden können, benötigen Sie eine zusätzliche Library:\u003c/p\u003e","title":"Die neue NanoESP-Library mit MQTT, HTTP und Blynk-Support"},{"content":"Das Adventskalender Projekt vom letzten Jahr hat anscheinend viel Anklang gefunden. Anhand der Nutzerzahlen konnte ich ablesen, dass viele Interessierte täglich den neuen Versuch auf der Webseite aufgerufen haben und auch in den Kommentarbereichen war ordentlich was los. Es war einfach schön zu sehen, wie Sich viele verschiedene Bastelbegeisterte gegenseitig helfen.\nAus diesem Grund soll auch in diesem Jahr das Adventskalender Projekt durch diese Webseite begleitet werden. In dem letzten Jahr war der die online Unterstützung ein erster Versuch, der anscheinend recht erfolgreich war. Dennoch gab es einige Kritikpunkte, die teilweise auch Ihre Berechtigung hatten. Deswegen habe ich versucht in diesem Jahr einige Dinge besser zu machen.\nZum einen ist der Einstieg in das hochkomplexe Thema etwas einfacher gehalten. Die ersten Schritte sind entzerrt, um vor allem Einstiegsschwierigkeiten zu Beginn klären zu können. Außerdem wird in diesem Kalender eine spezielle Library verwendet, sodass viele komplizierte Funktionen mit überschaubaren Befehlen zugänglich sind. Während der Einstieg leichter geworden ist, wird es gegen Ende im MQTT-Teil etwas professioneller. In allen, aber vor allem in dem erwähnten letzten Teil, versuche ich möglichst viele Zusatzinformationen zu liefern, sodass Interessierte auch die Chance haben, tiefer in das Thema einzusteigen. Für alle, denen es um den Bastelspaß geht, werden die praktisch orientierten Versuche dennoch Freude bereite, ohne dass man alles im Detail verstehen muss.\nAuch in diesem Jahr wird es die Kommentarfunktion unter dem Tagesversuchen geben. Dort soll es aber diesmal möglichst nur um den aktuellen Versuch gehen. Für einen allgemeinen Austausch ist das Forum gedacht. Hier kann man Ein Thema auch ausführlicher und übersichtlicher Diskutieren.\nFür alle, die den Beginn des Dezembers nicht abwarten können, gibt es in diesem Jahr auch wieder einen Bereich, in dem alle Projekte von vorne herein heruntergeladen werden können. Dies hat sich für mich ebenfalls für sehr praktisch erwiesen, denn es konnten noch einige Fehler vor dem offiziellen Start des Projektes ausgemerzt werden.\nIch hoffe, dass alle Teilnehmer des Projektes so viel Spaß beim Ausprobieren der Versuche haben, wie ich beim Erstellen und außerdem wünsche ich eine besinnliche Weihnachtszeit.\nFabian Kainka\n","permalink":"https://iot.fkainka.de/die-library-zum-neuen-adventskalenders/","summary":"\u003cp\u003eDas Adventskalender Projekt vom letzten Jahr hat anscheinend viel Anklang gefunden. Anhand der Nutzerzahlen konnte ich ablesen, dass viele Interessierte täglich den neuen Versuch auf der Webseite aufgerufen haben und auch in den Kommentarbereichen war ordentlich was los. Es war einfach schön zu sehen, wie Sich viele verschiedene Bastelbegeisterte gegenseitig helfen.\u003c/p\u003e\n\u003cp\u003eAus diesem Grund soll auch in diesem Jahr das Adventskalender Projekt durch diese Webseite begleitet werden. In dem letzten Jahr war der die online Unterstützung ein erster Versuch, der anscheinend recht erfolgreich war. Dennoch gab es einige Kritikpunkte, die teilweise auch Ihre Berechtigung hatten. Deswegen habe ich versucht in diesem Jahr einige Dinge besser zu machen.\u003c/p\u003e","title":"Infos zum neuen Adventskalender"},{"content":"Hallo,\nSorry für mein schlechtes Deutsch. (Ich spreche Französisch und ich verwende eine automatische Übersetzung.)\nIch habe ein Projekt zu entwickeln, und ich habe nicht viel Zeit: Kommunikation zwischen zwei Pretzelboard, bidirektional mit 4 Schaltkanäle in einer Richtung und 4 Kanäle in die andere Richtung.\nKönnte mir jemand mit dem Code helfen ? Ich gewährt etwas zu bezahlen \u0026hellip;\nVielen Dank für Ihre Hilfe !\nStefan\nAnhänge:\n1 Antwort TSTELECTRO – 13.10.2016\n:-(\n","permalink":"https://iot.fkainka.de/forum/topic/kommunikation-zwischen-zwei-pretzelboard-bidirektional/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eSorry für mein schlechtes Deutsch. (Ich spreche Französisch und ich verwende eine automatische Übersetzung.)\u003c/p\u003e\n\u003cp\u003eIch habe ein Projekt zu entwickeln, und ich habe nicht viel Zeit: Kommunikation zwischen zwei Pretzelboard, bidirektional mit 4 Schaltkanäle in einer Richtung und 4 Kanäle in die andere Richtung.\u003c/p\u003e\n\u003cp\u003eKönnte mir jemand mit dem Code helfen ? Ich gewährt etwas zu bezahlen \u0026hellip;\u003c/p\u003e\n\u003cp\u003eVielen Dank für Ihre Hilfe !\u003cbr\u003e\nStefan\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Dessin1.png\" loading=\"lazy\" src=\"/images/2016/08/Dessin1.png\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eTSTELECTRO\u003c/strong\u003e – 13.10.2016\u003c/p\u003e","title":"Kommunikation zwischen zwei Pretzelboard (bidirektional)"},{"content":"Weiß jemand, welche RGB-LED in dem Paket enthalten war? Ich habe leider meine Kleinteile durch Umzug verloren, nur noch das Mikrocontrollerboard ist da.\nIch habe zwar blind die LED bestellt, die in der Teileliste (Tag0, Alternative) aufgeführt ist, aber leider nicht darauf geachtet, was ich da wirklich bestellt habe. Das ist nämlich nicht die LED, die dabei war. Die in der Teileliste ist klar und der Grünanteil ist viel zu stark. Rot 255 und Grün 50 ergibt Gelb, das war bei der Original wesentlich besser. Außerdem war die Original matt, was eine vernünftige Mischung der Farben ergibt.\n","permalink":"https://iot.fkainka.de/forum/topic/rgb-led/","summary":"\u003cp\u003eWeiß jemand, welche RGB-LED in dem Paket enthalten war? Ich habe leider meine Kleinteile durch Umzug verloren, nur noch das Mikrocontrollerboard ist da.\u003cbr\u003e\nIch habe zwar blind die LED bestellt, die in der Teileliste (Tag0, Alternative) aufgeführt ist, aber leider nicht darauf geachtet, was ich da wirklich bestellt habe. Das ist nämlich nicht die LED, die dabei war. Die in der Teileliste ist klar und der Grünanteil ist viel zu stark. Rot 255 und Grün 50 ergibt Gelb, das war bei der Original wesentlich besser. Außerdem war die Original matt, was eine vernünftige Mischung der Farben ergibt.\u003c/p\u003e","title":"RGB-LED"},{"content":"Mit dem NanoESP und einigen Programmmodulen aus dem IoT-Adventskalender kann auf einfache Weise der Empfänger für eine Smartphone - Modellfernsteuerung über WLAN aufgebaut werden. Der Einsatz des Pretzel Boards in meinen Crawler ist im angehängten Bild dargestellt.\nDer NanoESP bietet einen HotSpot an, an den sich das Smartphone anmeldet; die Fernsteuerkommandos werden in einer App erzeugt und über UDP übertragen. Die genaue Beschreibung des Projektes sowie die Download-Locations sind in meinem Blog Makerprojekte beschrieben.\n","permalink":"https://iot.fkainka.de/forum/topic/modellfernsteuerung-mit-smartphone-und-nanoesp-als-empfaenger/","summary":"\u003cp\u003eMit dem NanoESP und einigen Programmmodulen aus dem IoT-Adventskalender kann auf einfache Weise der Empfänger für eine Smartphone - Modellfernsteuerung über WLAN aufgebaut werden. Der Einsatz des Pretzel Boards in meinen Crawler ist im angehängten Bild dargestellt.\u003c/p\u003e\n\u003cp\u003eDer NanoESP bietet einen HotSpot an, an den sich das Smartphone anmeldet; die Fernsteuerkommandos werden in einer App erzeugt und über UDP übertragen. Die genaue Beschreibung des Projektes sowie die Download-Locations sind in meinem \u003ca href=\"http://makerprojekte.de/2016/07/modellfernsteuerung-ueber-wlan-mit-smartphone/\"\u003eBlog Makerprojekte\u003c/a\u003e beschrieben.\u003c/p\u003e","title":"Modellfernsteuerung mit Smartphone und NanoESP als Empfänger"},{"content":"Hi,\nIch bin recht neu mit Arduino und dem Pretzelboard. Ich habe damals den Kalendar durchgemacht und seitdem ein Paar kleinere Sachen ausprobiert. Das letzte das ich gemacht habe ist ein 22Bit ADC per SPI auslesen. Jetzt möchte ich die aus dem ADC ausgelesenen Werte mit der Things Speak Webseite kombinieren, oder evtl auf einem Webserver auf dem nanoESP zur Verfügung stellen.\nDabei ist mir aber aufgefallen, dass auf den Pins 11 und 12 sowohl MOSI bzw MISO, als auch ESP-TXD bzw ESP-RXD liegt. Daher meine Frage: Kann man gleichzeitig SPI und das W-LAN Modul benutzen? Ich glaube dass es nicht wirklich möglich ist ist SPI umzumappen, stimmt das?\nVielen Dank, Andreas\n1 Antwort Wolle – 13.06.2016\nHallo,\nhab genau das gleiche Problem. Will mit dem RC522 RFID-Karten auslesen und dann mittels UDP/Serieller Schnittstelle die Kartennummern an einen anderen Arduino senden. Leider funktioniert entweder nur das eine oder das andere. Sobald ich die routine zum Kartenauslesen mit der SPI starte ist die Schnittstelle dauerbelegt und ich kann nichts anderes mehr machen.\nWär toll wenn jemand dazu eine Lösung hätte wie ich zwischen beidem hin und her wechseln kann.\nVielen Dank, Marcel.\n","permalink":"https://iot.fkainka.de/forum/topic/spi-auf-dem-nanoesp/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eIch bin recht neu mit Arduino und dem Pretzelboard. Ich habe damals den Kalendar durchgemacht und seitdem ein Paar kleinere Sachen ausprobiert. Das letzte das ich gemacht habe ist ein 22Bit ADC per SPI auslesen. Jetzt möchte ich die aus dem ADC ausgelesenen Werte mit der Things Speak Webseite kombinieren, oder evtl auf einem Webserver auf dem nanoESP zur Verfügung stellen.\u003c/p\u003e\n\u003cp\u003eDabei ist mir aber aufgefallen, dass auf den Pins 11 und 12 sowohl MOSI bzw MISO, als auch ESP-TXD bzw ESP-RXD liegt. Daher meine Frage: Kann man gleichzeitig SPI und das W-LAN Modul benutzen? Ich glaube dass es nicht wirklich möglich ist ist SPI umzumappen, stimmt das?\u003c/p\u003e","title":"SPI auf dem nanoESP"},{"content":"Den Befehl \u0026ldquo;AT+CWSAP=\u0026ldquo;NanoESP\u0026rdquo;,\u0026ldquo;MeinPasswort\u0026rdquo;,5,3\u0026rdquo; beantwortet das Board permanent mit ERROR.\nWas mache ich falsch??\n5 Antworten fk – 25.05.2016\nHi,\nBenutzt du die äußeren Anführungszeichen bei der Eingabe des Befehls oder war das nur ein Zitat fur das Forum?\nAnsonsten könnte es sein, dass das Modul nicht im AccesPoint Modus ist?\nArtur – 25.05.2016\nDie äusseren Anführungszeichen hab ich nicht mit eingegeben, sie deklarieren nur den Befehl als Zitat.\nDas Modul hab ich grad nochmal in den Modus 2 versetzt ( AT+CWMODE=2 ) und geprüft ( AT+CWMODE? ).\nNach wie vor bekomme ich für den Befehl AT+CWSAP=\u0026ldquo;NanoESP\u0026rdquo;,\u0026ldquo;MeinPasswort\u0026rdquo;,5,3 eine ERROR Meldung.\ngeneralovernight – 26.05.2016\nWas machst du vorher noch? Evtl. mal einen Reset (AT+RST) einfügen, in der Doku zum CWSAP-Befehl steht auch etwas davon, alerdings ist bei dem aus dem Chinesischen übersetzten Englisch nicht klar zu erkennen, was gemeint ist.\nArtur – 30.05.2016\nAuch mit einem vorangegangenem Reset (AT+RST) bekomme ich für den Befehl AT+CWSAP=“NanoESP“,“MeinPasswort“,5,3 eine ERROR Meldung.\nwinterlinge – 09.06.2016\nDein Passwort muss mindestens 6 Zeichen lang sein. Da hab ich auch schon mal lange gesucht\u0026hellip;\n","permalink":"https://iot.fkainka.de/forum/topic/passwortvergabe/","summary":"\u003cp\u003eDen Befehl \u0026ldquo;AT+CWSAP=\u0026ldquo;NanoESP\u0026rdquo;,\u0026ldquo;MeinPasswort\u0026rdquo;,5,3\u0026rdquo; beantwortet das Board permanent mit ERROR.\u003cbr\u003e\nWas mache ich falsch??\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"5-antworten\"\u003e5 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 25.05.2016\u003c/p\u003e\n\u003cp\u003eHi,\u003cbr\u003e\nBenutzt du die äußeren Anführungszeichen bei der Eingabe des Befehls oder war das nur ein Zitat fur das Forum?\u003c/p\u003e\n\u003cp\u003eAnsonsten könnte es sein, dass das Modul nicht im AccesPoint Modus ist?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eArtur\u003c/strong\u003e – 25.05.2016\u003c/p\u003e\n\u003cp\u003eDie äusseren Anführungszeichen hab ich nicht mit eingegeben, sie deklarieren nur den Befehl als Zitat.\u003cbr\u003e\nDas Modul hab ich grad nochmal in den Modus 2 versetzt ( AT+CWMODE=2 ) und geprüft ( AT+CWMODE? ).\u003cbr\u003e\nNach wie vor bekomme ich für den Befehl AT+CWSAP=\u0026ldquo;NanoESP\u0026rdquo;,\u0026ldquo;MeinPasswort\u0026rdquo;,5,3 eine ERROR Meldung.\u003c/p\u003e","title":"Passwortvergabe"},{"content":"Hallo Leute,\nich habe ein Problem beim Vernetzen von mehreren Boards.\nHat von euch schon mal jemand versucht, ein Board als AP für mehrere andere Boards (Clients) einzurichten?\nIch möchte ein Netzwerk mit den Boards aufbauen, die über das Wifi-Modul kommunizieren.\nDas komische an der Sache ist, dass wenn ich als AP mein Handy einstelle, eine Datenübertragung über TCP/IP möglich ist.\nSobald ich aber ein Board als AP einstelle, ist es mir nicht mehr möglich eine Verbindung aufzubauen.\nMeiner Meinung nach müsste es auch ohne direkte Internet Verbindung möglich sein, über TCP/IP zu kommunizieren. Vorausgesetzt, dass sich alle Geräte sich im gleichen Netzwerk befinden.\nAußerdem:\nWenn ich ein Board als AP einstelle und meinen Rechner und mein Handy damit verbinde, erhalte ich über AT+CWLIF als Antwort, dass beide Geräte verbunden sind und es werden die IP-Adressen aufgelistet.\nWenn ich dann aber versuche noch ein Board anzumelden, wird dieses nicht angezeigt. Beim Anmelden des Boards in den AP über AT+CWJAP, bringt er aber OK als Rückmeldung.\nBitte um schnelle Hilfe.\nViele Grüße und vielen Dank!\nPhil\n2 Antworten generalovernight – 18.05.2016\nMeiner Meinung nach müsste es auch ohne direkte Internet Verbindung möglich sein, über TCP/IP zu kommunizieren. Vorausgesetzt, dass sich alle Geräte sich im gleichen Netzwerk befinden.\nDas ist korrekt\nWenn ich ein Board als AP einstelle und meinen Rechner und mein Handy damit verbinde, erhalte ich über AT+CWLIF als Antwort, dass beide Geräte verbunden sind und es werden die IP-Adressen aufgelistet.\nWenn ich dann aber versuche noch ein Board anzumelden, wird dieses nicht angezeigt. Beim Anmelden des Boards in den AP über AT+CWJAP, bringt er aber OK als Rückmeldung.\nWenn du mehrere TCP/IP Verbindungen herstellen willst, musst du das m.W. vorher über AT+CIPMUX=1 einstellen. Standardwert ist 0. Vielleicht ist das dein Problem. Aber wenn ich mich recht entsinne sind auch mit CIPMUX=1 maximal 4 gleichzeitige Verbindungen möglich. Bei CIPMUX=1 haben einige AT-Befehle aber auch noch einen zusätzlichen Parameter, die Verbindungs ID. HTH.\nPhilippS – 18.05.2016\nDanke für die Antwort.\nAT+CIPMUX=1 hatte ich bereits eingestellt.\nKonnte aber dennoch keine Verbindung herstellen.\nBin zu dem Entschluss gekommen, die Boards über einen Router anzumelden.\nDamit wäre ich bei der nächsten Frage:\nWie kann ich eine Verbindung mit einem anderen Board über Wifi aufbauen?\nDer Befehl AT+CIPSTART funktioniert bei mir nicht.\nMit einem Board habe ich jedoch einen TCP-Server eingerichtet.\n","permalink":"https://iot.fkainka.de/forum/topic/mehrere-boards-ueber-wifi-vernetzen/","summary":"\u003cp\u003eHallo Leute,\u003c/p\u003e\n\u003cp\u003eich habe ein Problem beim Vernetzen von mehreren Boards.\u003c/p\u003e\n\u003cp\u003eHat von euch schon mal jemand versucht, ein Board als AP für mehrere andere Boards (Clients) einzurichten?\u003c/p\u003e\n\u003cp\u003eIch möchte ein Netzwerk mit den Boards aufbauen, die über das Wifi-Modul kommunizieren.\u003c/p\u003e\n\u003cp\u003eDas komische an der Sache ist, dass wenn ich als AP mein Handy einstelle, eine Datenübertragung über TCP/IP möglich ist.\u003c/p\u003e\n\u003cp\u003eSobald ich aber ein Board als AP einstelle, ist es mir nicht mehr möglich eine Verbindung aufzubauen.\u003c/p\u003e","title":"Mehrere Boards über Wifi vernetzen"},{"content":"Hallo zusammen,\nbei mir werden die Begriffe .find() und weitere nicht mehr mit der aktuellen SoftwareSerial lib unterstütz.\nAuf der Arduino Seite gibt es auch keine Anhaltspunkte.\nIch würde gerne Tag 19 hochladen.\nPhilip\n","permalink":"https://iot.fkainka.de/forum/topic/softwareserial-find/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003ebei mir werden die Begriffe .find() und weitere nicht mehr mit der aktuellen SoftwareSerial lib unterstütz.\u003cbr\u003e\nAuf der Arduino Seite gibt es auch keine Anhaltspunkte.\u003cbr\u003e\nIch würde gerne Tag 19 hochladen.\u003c/p\u003e\n\u003cp\u003ePhilip\u003c/p\u003e","title":"SoftwareSerial .find()"},{"content":"Gerade im Kontext des Adventskalenders oder den anderen Lernpaketen habe ich einige HTML-Seiten für den NanoESP entworfen. Allerdings hat mich dabei immer gestört, dass zum einen der Speicherplatz ziemlich gering ist zum anderen die Übertragung etwas langsam sein kann, vor allem, wenn die Seite oft neu geladen werden muss. Deswegen habe ich mir eine neue Methode überlegt, bei der die dazustellenden Webseite auf einem anderen Webserver liegt und beim Verbinden mit dem TCP-Server des Boards einfach nachgeladen wird. Der Nachteil ist hier vor allem, dass der Client mit dem Internet verbunden sein muss. Das bedeutet auch, das ein privates Netzwerk mit dem NanoESP als AccesPoint nicht möglich ist. Die Vorteile sind aber komplexere Seiten und schnellere Ladezeiten sowie eine insgesamt Entlastung des Boards. Im Folgenden Stelle ich das System anhand des RGB-LED-Beispiels vor.\nZunächst das Arduino-Programm Externer Inhalt von codebender.cc\nBeim Laden werden Daten wie Ihre IP-Adresse an codebender.cc übertragen. Datenschutz Inhalt laden direkt öffnen ↗ Hinweis: Arduino-Programm downloaden und mit Arduino ab Version 1.6.5 auf den Controller uploaden.\nHier ändert sich gar nicht soviel. Auf dem Board läuft immer noch ein TCP-Server der beim Aufruf der IP einen HTML-Text verschickt. Dieser ist diesmal aber sehr viel kleiner und besteht im Grund nur aus folgenden Zeilen:\n\u0026lt;html\u0026gt;\u0026lt;script src=\u0026#34;http://temp.fkainka.de/RGB2.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt;\u0026lt;script type=\u0026#34;text/javascript\u0026#34;\u0026gt;draw());\u0026lt;/script\u0026gt;\u0026lt;/html\u0026gt; Mit anderen Worten wird nichts anderes gemacht, als die JavaScript-Datei :\nhttp://temp.fkainka.de/RGB2.js\nnachzuladen und anschließend die Funktion draw() aufzurufen. Diese Funktion macht nun die ganze Arbeit.\nfunction draw(rgb){ document.write(\u0026#39;\\ \u0026lt;HEAD\u0026gt;\\ \u0026lt;link rel=\u0026#34;icon\u0026#34; href=\u0026#34;data:;base64,iVBORw0KGgo=\u0026#34;\u0026gt;\\ \u0026lt;meta name=\u0026#34;viewport\u0026#34; content=\u0026#34;width=device-width, initial-scale=2.0, user-scalable=yes\u0026#34;\u0026gt;\\ \u0026lt;title\u0026gt;\\ RGB LED\\ \u0026lt;/title\u0026gt;\\ \u0026lt;/HEAD\u0026gt;\\ \\ \u0026lt;BODY bgcolor=\u0026#34;#FFFF99\u0026#34; text=\u0026#34;#000000\u0026#34;\u0026gt;\\ \u0026lt;FONT size=\u0026#34;6\u0026#34; FACE=\u0026#34;Verdana\u0026#34;\u0026gt;\\ Select Color\\ \u0026lt;/FONT\u0026gt;\\ \\ \u0026lt;HR\u0026gt;\\ \u0026lt;BR\u0026gt;\\ \u0026lt;FONT size=\u0026#34;3\u0026#34; FACE=\u0026#34;Verdana\u0026#34;\u0026gt;\\ Change the Color\u0026lt;BR\u0026gt;\\ of the RGB-LED\\ \u0026lt;BR\u0026gt;\\ \u0026lt;BR\u0026gt;\\ \u0026lt;form method=\u0026#34;GET\u0026#34;\u0026gt;\\ \u0026lt;input type=\u0026#34;color\u0026#34; name=\u0026#34;rgb\u0026#34; value=\u0026#34;#\u0026#39;+rgb+\u0026#39;\u0026#34; onchange=\u0026#34;this.form.submit()\u0026#34;\u0026gt;\u0026lt;BR\u0026gt;\\ \u0026lt;/form\u0026gt;\\ \u0026lt;BR\u0026gt;\\ \u0026lt;HR\u0026gt;\\ \\ \u0026lt;/font\u0026gt;\\ \u0026#39;); } In draw() wird nun mit der JavaScript Funktion document.write() der sonst aus der ColorPicker.html-Seite bekannte Inhalt in den Browser geschrieben. Dadurch baut sich die bekannte Seite im Browser auf und das auch mit der gleichen Funktionalität die beim Übertragen vom Board direkt zustande gekommen wäre. Das ermöglicht es uns nun im Grunde, noch viel größere und komplexere Seite mit eigenen JavaScripts und großer Funktionalität nachzuladen, ohne den NanoESP groß zu belasten.\nEinen weiten Vorteil gibt es bei dieser Seite auch noch, denn die Seite stellt nun auch dar, welche Farbe gerade gewählt wurde. Dazu wird in späteren Aufrufen der draw()-Funktion der Parameter rgb übergeben, der in der document.write()-Funktion als Value von ColorPicker eingefügt wird. Der richtige Hex-Code wird einfach aus den immer noch in der URL-Verschlüsselten Daten übernommen. Ein weitere Vorteil dieser Version also.\nDer Beitrag Ausgelagerte Webseiten für den NanoESP erschien zuerst auf Elektronik Dachbude.\nSource: http://fkainka.de/tag/Pretzelboard/\n","permalink":"https://iot.fkainka.de/ausgelagerte-webseiten-fuer-den-nanoesp/","summary":"\u003cp\u003eGerade im Kontext des Adventskalenders oder den anderen Lernpaketen habe ich einige HTML-Seiten für den NanoESP entworfen. Allerdings hat mich dabei immer gestört, dass zum einen der Speicherplatz ziemlich gering ist zum anderen die Übertragung etwas langsam sein kann, vor allem, wenn die Seite oft neu geladen werden muss. Deswegen habe ich mir eine neue Methode überlegt, bei der die dazustellenden Webseite auf einem anderen Webserver liegt und beim Verbinden mit dem TCP-Server des Boards einfach nachgeladen wird. Der Nachteil ist hier vor allem, dass der Client mit dem Internet verbunden sein muss. Das bedeutet auch, das ein privates Netzwerk mit dem NanoESP als AccesPoint nicht möglich ist. Die Vorteile sind aber komplexere Seiten und schnellere Ladezeiten sowie eine insgesamt Entlastung des Boards. Im Folgenden Stelle ich das System anhand des \u003ca href=\"/day-14\"\u003eRGB-LED-Beispiels\u003c/a\u003e vor.\u003c/p\u003e","title":"Ausgelagerte Webseiten für den NanoESP"},{"content":"Hi,\nI received my Franzis Maker kit and I downloaed Arduino 1.6.9. I plug the board using micro USB cable and did initial setup.\nI did not receive any response for \u0026ldquo;AT\u0026rdquo;. After unplugging and plugging back the board couple time I was able to get get response for \u0026ldquo;AT\u0026rdquo;\n,but got Error message \u0026ldquo;ERROR\u0026rdquo; when I typed \u0026ldquo;AT+RST\u0026rdquo;. \u0026ldquo;ATE0\u0026rdquo; and \u0026ldquo;ATE1\u0026rdquo; came \u0026ldquo;OK\u0026rdquo;.\nNow I am not getting any reply for any command.\nBoth D2 and D6 are on, Blue and Red. When i open Arduino D3 is blinking, when I open serial Monitor it turned off.\nHelp Please.\n1 Antwort Jitp – 23.03.2016\nSorry. Found the problem. Needed to upload PO1_serialInterface.\nWorking now.\n","permalink":"https://iot.fkainka.de/forum/topic/nanoesp-no-response-on-at-command/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eI received my Franzis Maker kit and I downloaed Arduino 1.6.9. I plug the board using micro USB cable and did initial setup.\u003c/p\u003e\n\u003cp\u003eI did not receive any response for \u0026ldquo;AT\u0026rdquo;. After unplugging and plugging back the board couple time I was able to get get response for \u0026ldquo;AT\u0026rdquo;\u003cbr\u003e\n,but got Error message \u0026ldquo;ERROR\u0026rdquo; when I typed \u0026ldquo;AT+RST\u0026rdquo;. \u0026ldquo;ATE0\u0026rdquo; and \u0026ldquo;ATE1\u0026rdquo; came \u0026ldquo;OK\u0026rdquo;.\u003c/p\u003e\n\u003cp\u003eNow I am not getting any reply for any command.\u003c/p\u003e","title":"NanoESP, no response on AT command."},{"content":"Hi,\nIch versuche gerade einen Temperatur-sensor zu bauen, der per WLAN Daten senden kann (zB über ifttt).\nIch möchte aber gewisse Dinge ändern können, indem ich einfach zB eine sd-karte in den PC packe, die config anpasse und dann die SD-karte zurück stecke.\nMöchte halt nicht immer das Device abmontieren und aus dem Case ausbauen ;-)\nCode ist kein Problem\nhttp://overskill.alexshu.com/saving-loading-settings-on-sd-card-with-arduino/\nAber wo bekomme ich (am besten bei Conrad, am liebsten micro-sd) so ein kleines Shield her?\nVielen Dank schon mal!\nDominik\n","permalink":"https://iot.fkainka.de/forum/topic/sd-karte-fuer-config/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eIch versuche gerade einen Temperatur-sensor zu bauen, der per WLAN Daten senden kann (zB über ifttt).\u003c/p\u003e\n\u003cp\u003eIch möchte aber gewisse Dinge ändern können, indem ich einfach zB eine sd-karte in den PC packe, die config anpasse und dann die SD-karte zurück stecke.\u003c/p\u003e\n\u003cp\u003eMöchte halt nicht immer das Device abmontieren und aus dem Case ausbauen ;-)\u003c/p\u003e\n\u003cp\u003eCode ist kein Problem\u003cbr\u003e\n\u003ca href=\"http://overskill.alexshu.com/saving-loading-settings-on-sd-card-with-arduino/\"\u003ehttp://overskill.alexshu.com/saving-loading-settings-on-sd-card-with-arduino/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAber wo bekomme ich (am besten bei Conrad, am liebsten micro-sd) so ein kleines Shield her?\u003c/p\u003e","title":"Sd-karte für config"},{"content":"Inspiriert durch den Adventskalender habe ich begonnen eine Hausautomatisierung zu entwickeln.\nZiele:\nAutomatisierung einzelner Räume und Daten mit Thingspeak sammeln. Daten zwischen den einzelnen Räumen austauschen. Daten und Steuerbefehle über eine WebSite austauschen (Steuerung). Derzeitig bin ich vor allem bei der Hardware. Stand: Im Badezimmer habe ich das Rollo und somit auch die Lüftung teilautomatisiert und sammle die Daten mit Thingspeak. Siehe https://thingspeak.com/channels/87189 (Bei weiterem Interesse kann ich gerne mehr schreiben).\nJetzt bin ich an der Terrasse dran. Dort wird u.a. eine Markise gesteuert, abhängig vom Wind, Licht usw. Dazu möchte ich die Sensordaten aus dem Bad (Lichtsensor) nutzen. Wie kann ich die mit dem Prezelboard aus Thingspeak auslesen? Ich weiß, dass es gehen sollte, aber wie? Kann mir da bitte jemand helfen? Ich habe derzeitig die Programme des Adventskalenders kreativ umgeschrieben.\nDank schon mal im Voraus!\nWerner\n","permalink":"https://iot.fkainka.de/forum/topic/iot-am-haus-mit-thingspeak-pretzelboard/","summary":"\u003cp\u003eInspiriert durch den Adventskalender habe ich begonnen eine Hausautomatisierung zu entwickeln.\u003cbr\u003e\nZiele:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAutomatisierung einzelner Räume und Daten mit Thingspeak sammeln.\u003c/li\u003e\n\u003cli\u003eDaten zwischen den einzelnen Räumen austauschen.\u003c/li\u003e\n\u003cli\u003eDaten und Steuerbefehle über eine WebSite austauschen (Steuerung).\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eDerzeitig bin ich vor allem bei der Hardware. Stand: Im Badezimmer habe ich das Rollo und somit auch die Lüftung teilautomatisiert und sammle die Daten mit Thingspeak. Siehe \u003ca href=\"https://thingspeak.com/channels/87189\"\u003ehttps://thingspeak.com/channels/87189\u003c/a\u003e (Bei weiterem Interesse kann ich gerne mehr schreiben).\u003c/p\u003e","title":"IOT am Haus mit Thingspeak / Pretzelboard"},{"content":"Beitrag zum Kalenderwettbewerb 2015 von Holger Fritzsch Mit einer einfachen Zusatzschaltung läßt sich mit dem IoT- Board eine Erschütterung oder Lageänderung von Gegenständen oder Türen detektieren.\nZur Anwendung kommt hier ein RS- Flip Flop bestehend aus 2 Transistoren vom Typ BC547.\nOb man nun eine Tür , Fenster oder Fahrrad überwachen oder Teile vor unbefugter Entnahme sichern will,der kompakte Aufbau des Moduls machts möglich.\nDie Schaltung kennt zwei stabile Zustände, nämlich Bereitschaft- und Alarmzustand.\nTechnisch gesehen entsprechend dem Set- und Reset- Zustand.\nNatürlich könnte man den Sensor auch statt des Tasters an Pin8 des Arduino- Nano anschließen.\nDiese Kontakte könnten aber prellen und Fehlauslösungen verursachen.\nDer vorgestellte RS- FlipFlop hat dieses Problem nicht und zusätzlich die Möglichkeit den jeweiligen Zustand zweifelsfrei zu speichern..Eine Manipulation ist ausgeschlossen.\nDenkbar wären auch mehrere RS- FF an einem Port abzufragen und an der jeweils leuchtenden roten Led den Auslöseort festzustellen.\nDie Funktion:\nNach Anlegen der Spannung schaltet T2 dimensionierungs bedingt.sofort durch. Die grüne Led leuchtet. Die Schaltung ist nun „scharf“. Gleichzeitig dient die grüne Led als Bereitschaftsanzeige.\nT1 ist über R4 gesperrt, somit leuchtet die rote Led nicht. Wird der Sensor bewegt, wird die Basisspannung von T2 kurzgeschlossen, so sperrt T2. Dessen Kollektorspannung, steigt an.\nÜber R4 findet eine Erhöhung der Basisvorspannung des T1 statt. Dieser wird durchgeschaltet und am Kollektor entsteht eine H- L- Flanke. Die rote Led leuchtet auf. Das ist der „Alarmfall“\nWird nun mit dem Taster die Basis- Emitter – Strecke des T1 kurzgeschlossen , so sperrt dieser sofort. Das entspricht einem Reset.\nDie Kollektorspannung steigt an und über R3 wird nun T2 durch gesteuert..Das Flip- Flop kippt wieder in die Ausgangslage zurück, d.h. die grüne Led leuchtet. Das entspricht einem Set.\nDas Programm vom Tag 6 (Autor F. Kainka) wurde nur gering geändert , so das im Falle der Aktivierung nicht die Ausgabe „Button=1, sondern „Alarm“. erscheint.\n}\nif (!digitalRead(SWITCH))\n{\ndebug(„Button=1“);\n// sendUDP(„Button=1“);\nsendUDP(„ALARM“);\nwhile (!digitalRead(SWITCH)) {}\n}\n}\nAls Ausgabe- Terminal bietet sich „Packet -Sender“ für PC an.\nDas, in meinem 1. Beitrag genannte Programm, für Android „WIFI UDP Test- Tool“ , funktioniert hier nur nach mehrmaligem Reset, also nicht zuverlässig.\nAufbauhinweis:\nDer Kollektor des T1 wird mit dem pin8 des Arduino verbunden.\nDie Betriebsspanung (5V) bezieht die Schaltung ebenfalls vom IoT- Board.\nSchaltung\nBereitschaftsanzeige\nOptische Alarmausgabe\npraktischer Aufbau\nDer Beitrag Wettbewerbsbeitrag: Neigungssensor – auslesen per IoT- Board, übertragen per WLAN erschien zuerst auf Elektronik Dachbude.\nSource: http://fkainka.de/tag/Pretzelboard/\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-neigungssensor-auslesen-per-iot-board-uebertragen-per-wlan/","summary":"\u003ch2 id=\"beitrag-zum-kalenderwettbewerb-2015-vonholger-fritzsch\"\u003eBeitrag zum \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eKalenderwettbewerb\u003c/a\u003e 2015 von Holger Fritzsch\u003c/h2\u003e\n\u003cp\u003eMit einer einfachen Zusatzschaltung läßt sich mit dem IoT- Board eine Erschütterung oder Lageänderung von Gegenständen oder Türen detektieren.\u003cbr\u003e\nZur Anwendung kommt hier ein RS- Flip Flop bestehend aus 2 Transistoren vom Typ BC547.\u003c/p\u003e\n\u003cp\u003eOb man nun eine Tür , Fenster oder Fahrrad überwachen oder Teile vor unbefugter Entnahme sichern will,der kompakte Aufbau des Moduls machts möglich.\u003cbr\u003e\nDie Schaltung kennt zwei stabile Zustände, nämlich Bereitschaft- und Alarmzustand.\u003cbr\u003e\nTechnisch gesehen entsprechend dem Set- und Reset- Zustand.\u003c/p\u003e","title":"Wettbewerbsbeitrag: Neigungssensor – auslesen per IoT- Board, übertragen per WLAN"},{"content":"Beitrag zum Kalenderwettbewerb 2015 von Paul Kaczmarczyk Auszug ausdem PDF: Projektbeschreibung: An Weihnachten erhielt ich einen Quadrocopter als Geschenk von meinem Opa. Ich hatte so viel Freude damit, dass ich mir gleich ein zweites Modell vom Typ Blade Inductrix zulegte. Das Fliegen mit dem Quadrocopter macht allerdings besonders viel Spaß, wenn man Aufgaben zu erfüllen hat.\nSpielidee Für die zu bewältigenden Aufgaben kam mir der Gedanke das Landing Pad zu bauen, bei dem die Aufgabe darin besteht durch einen Ring zu fliegen, ohne hängen zu bleiben und dann zu landen, sofern man eine Landefreigabe erhält. Wird die Landefreigabe vom Tower nicht gegeben, so muss man schweben, bis die Landefreigabe erteilt wird. Wird ohne Landefreigabe gelandet, erhält man als Strafe für die Landung einen Punktabzug. Landet man mit Freigabe erhält man Punkte auf sein Konto. Ein Hängenbleiben am Ring soll auch einen Punktabzug zur Folge haben. Um sich mit anderen zu messen, sollen die erreichten Punkte auch in einer Internet-weiten Highscore-Liste namentlich geführt werden. Dieses Geschicklichkeitsspiel soll rundenbasiert ablaufen, wobei die Rundenzeit 60 s beträgt. Läuft die Runde ab, werden die addierten Punkte in die Highscore-Liste eingetragen. Der Start einer neuen Runde soll durch Druck auf einen Taster ermöglicht werden. […]\nMehr zu diesem spannednen Projekte gibt es in diesem PDF: LandingPad-Projektbeschreibung Download Programm: Quadrocopter_LandingPad Der Beitrag Wettbewerbsbeitrag: Quadrocopter Landing Pad erschien zuerst auf Elektronik Dachbude.\nSource: http://fkainka.de/tag/Pretzelboard/\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-quadrocopter-landing-pad/","summary":"\u003ch2 id=\"beitrag-zum-kalenderwettbewerb-2015-von-paul-kaczmarczyk\"\u003eBeitrag zum \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eKalenderwettbewerb\u003c/a\u003e 2015 von Paul Kaczmarczyk\u003c/h2\u003e\n\u003ch3 id=\"auszug-ausdem-pdf\"\u003e\u003cem\u003e\u003cstrong\u003eAuszug aus\u003c/strong\u003e\u003c/em\u003e\u003cem\u003e\u003cstrong\u003edem PDF:\u003c/strong\u003e\u003c/em\u003e\u003c/h3\u003e\n\u003ch2 id=\"projektbeschreibung\"\u003eProjektbeschreibung:\u003c/h2\u003e\n\u003cp\u003eAn Weihnachten erhielt ich einen Quadrocopter als Geschenk von meinem Opa. Ich hatte so viel Freude damit, dass ich mir gleich ein zweites Modell vom Typ Blade Inductrix zulegte. Das Fliegen mit dem Quadrocopter macht allerdings besonders viel Spaß, wenn man Aufgaben zu erfüllen hat.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2016/02/Quadro2.jpg\"\u003e\u003cimg alt=\"Quadro2\" loading=\"lazy\" src=\"/images/2016/02/Quadro2.jpg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"spielidee\"\u003eSpielidee\u003c/h2\u003e\n\u003cp\u003eFür die zu bewältigenden Aufgaben kam mir der Gedanke das Landing Pad zu bauen, bei dem die Aufgabe darin besteht durch einen Ring zu fliegen, ohne hängen zu bleiben und dann zu landen, sofern man eine Landefreigabe erhält. Wird die Landefreigabe vom Tower nicht gegeben, so muss man schweben, bis die Landefreigabe erteilt wird. Wird ohne Landefreigabe gelandet, erhält man als Strafe für die Landung einen Punktabzug. Landet man mit Freigabe erhält man Punkte auf sein Konto. Ein Hängenbleiben am Ring soll auch einen Punktabzug zur Folge haben. Um sich mit anderen zu messen, sollen die erreichten Punkte auch in einer Internet-weiten Highscore-Liste namentlich geführt werden. Dieses Geschicklichkeitsspiel soll rundenbasiert ablaufen, wobei die Rundenzeit 60 s beträgt. Läuft die Runde ab, werden die addierten Punkte in die Highscore-Liste eingetragen. Der Start einer neuen Runde soll durch Druck auf einen Taster ermöglicht werden. […]\u003c/p\u003e","title":"Wettbewerbsbeitrag: Quadrocopter Landing Pad"},{"content":"Beitrag zum Kalenderwettbewerb 2015 von Nicolaus Cüppers Der Conrad-Adventskalender „Internet of Things“ war für mich der Einstieg, mich einmal mit dem Thema Arduino zu befassen. Herausgekommen ist das Projekt „Polarfuchs“. Der Name ist angelehnt an das kleinste mir bekannte deutsche Forschungsschiff. Es handelt sich um einen Versuchsaufbau, der ein unbemanntes „Schiff“ nachbildet, was einige Umgebungsdaten erfasst und weiterleitet und parallel dazu seinen eigenen Zustand überwacht.\nEs wurde nur der Kalender und zusätzlich eine Stromquelle verwendet. Daher sind die Messmethoden auch nicht unbedingt praxisnahe. Normalerweise würde man für die einzelnen Werte passende Sensoren einsetzen. Das war allerdings nicht die Aufgabe. Vielmehr ging es ja darum, aus einer Hand voll vorhandener Bauelemente das Maximale herauszuholen. Als Schiffsrumpf wird daher der Kalender selbst verwendet. Er bildet durch seinen Plastikkörper mit zahlreichen Einsenkungen eine ideale Schwimmplattform. Es wurden jedoch die üblichen konfektionierten Steckkabel verwendet. Das dem Kalender beiliegende Kabel hätte aber auch gereicht, um die Schaltung aufzubauen. Dann hätte man nur alles etwas enger am Board platzieren müssen.\nFolgende Umweltwerte sammelt „Polarfuchs“ ein, um sie auf einer eigenen Webseite darzustellen:\nWassertmperatur mittels NTC\nBedeckungsgrad des Himmels mittels Photodiode\nRegen mittels Spannungsabfall\nAußerdem überwacht Polarfuchs sich selbst auf Lecks (Wassereinbruch aka Bilgenalarm) mittels Spannungsabfall und gibt auf seiner Webseite Auskunft über seine Betriebsspannung. Die Überwachung von Wasser beruht darauf, dass Wasser etwas Strom leitet ( und zwar nicht nur Leitungswasser haahaaa… ). Taucht man zwei Kontakte, an denen eine Spannung anliegt, in Wasser, fließt ein geringer Strom, wodurch die Spannung abfällt. Diesen Spannungsabfall kann man messen. Im Falle des Leckalarms (Bilgenalarm) platziert man einfach innenbords zwei Drähte an eine Stelle, die normalerweise trocken ist. An diese Drähte legt man eine Spannung an, die man wiederum mit einem Analogeingang überwacht. Solange alles so ist wie es sein soll, fließt kein Strom, da die beiden Drahtenden nur durch Luft verbunden sind. Gelangt jetzt Wasser an die überwachte Stelle, fließt ein geringer Strom, was sich am angeschlossenen Analogeingang durch eine geringere Spannung bemerkbar macht. Man muss dann nur noch empirisch einen Schwellenwert definieren, und fertig ist der Wassersensor.\nDie Überwachung auf Regen funktioniert nach dem gleichen Prinzip. Hier hat man allerdings das Problem, dass man das Regenwasser nicht sammeln möchte, also erst einmal keinen Ort hat, wo man es abgreifen kann. Eine kleine Hilfskonstruktion soll das Problem lösen: Eine geneigte Ebene als Sammelfläche für Wasser, die einen zentralen Auslaufpunkt hat. Dort platziert man die beiden Drähte so eng es nur irgendwie geht aneinander, ohne dass sie sich berühren. Dafür wird die Rückseite des Kalenders verwendet, die dafür passend gefaltet auf die Oberseite des Kalenders gesteckt wird und so gleichzeitig ein Dach über der Elektronik bildet. Die Messkontakte werden einfach am tiefsten Punkt dicht nebeneinander von unten durch die Pappe gesteckt.\nRegnet es jetzt auf die Sammelfläche, fließt das Wasser durch die Schwerkraft zusammen und in Richtung des Auslaufs, wo sich ab einer gewissen Regenintensität ein kleines Rinnsal bildet, was wiederum über die Drähte fließt und diese so verbindet. Solange also Wasser fließt, ist ein Spannungsabfall messbar. Hört es auf zu regnen, versiegt das Rinnsal, und der NanoESP weiß, das es nicht mehr regnet. Im Badewannen-Versuch erwies sich das als der Schwachpunkt des Systems, denn die Pappe sog sich voll Wasser, weshalb „Polarfuchs“ auch nach dem Begießen mit Wasser erstmal weiterhin Regen anzeigte. Das ändert aber nichts an der Funktionsfähigkeit des Konzepts.\nDie Temperatur wird über einen NTC gemessen, der ebenfalls dem Kalender beilag. Er kann durch das Poti mit einer externen Referenztemperatur „geeicht“ werden.\nFür den Bedeckungsgrad des Himmels kann man den Photowiderstand des Kalenders verwenden. So wird das Umgebungslicht gemessen und anhand empirisch vordefinierter Bereiche einem von drei Zuständen zugeordnet: sonnig, bedeckt, Nacht. Das ist zwar zugegeben nicht sehr genau, aber andererseits nicht unzuverlässig. Wir haben also einen Wetterbericht mit Temperatur, Himmel und Niederschlag. Dies wird per WLAN auf einer Webseite zur Verfügung gestellt. Natürlich wird hier vorausgesetzt, dass das Schiff Internetzugang hat und auch erreichbar ist.\nNeben der Webseite verfügt das „Schiff“ noch über ein Toplicht (LED), was bei Dunkelheit automatisch leuchtet und einen Buzzer, der im Notfall (Wassereinbruch) zusammen mit der LED SOS signalisiert. Der Versuchsaufbau wurde tatsächlich erfolgreich in der Badewanne getestet!\n[youtube https://www.youtube.com/watch?v=2W1TGGviBBs?autoplay=0\u0026amp;theme=dark\u0026amp;loop=0\u0026amp;fs=1\u0026amp;showinfo=1\u0026amp;modestbranding=0\u0026amp;iv_load_policy=1\u0026amp;color=red\u0026amp;autohide=1\u0026amp;disablekb=0\u0026amp;enablejsapi=1\u0026amp;version=3]\nDownload: PolarfuchsFinal.zip Der Quelltext\n/* Forschungsschiff \u0026#34;Polarfuchs\u0026#34; N. Cueppers www.nicnet.de/wordpress Stellt Wetterdaten über einen Browser zur Verfuegung: Wassertemperatur mittels Thermistor Himmel mittels Photodiode Regen mittels Spannungsabfall Ausserdem ueberwacht Polarfuchs sich selbst auf Lecks (Wassereinbruch aka Bilgenalarm) mittels Spannungsabfall und gibt auf der Webseite Auskunft über seine Betriebsspannung. Ist der Wert kritisch, sendet Polarfuchs das Notsignal SOS per Toplicht (LED) und Horn (Buzzer). Bei Dunkelheit schaltet Polarfuchs das Toplicht ein. Da es keinen eigenen Atrieb hat, genuegt dafuer tatsaechlich ein weisses Rundumlicht. (§ 3.13 Abs. 5 BinSchStrO) Der Name ist angelehnt an das kleinste mir bekannte deutsche Forschungsschiff: http://www.deutsche-meeresforschung.de/de/polarfuchs */ #define SSID \u0026#34;SSID\u0026#34; #define PASSWORD \u0026#34;PASSWORD\u0026#34; #define LED_WLAN 13 #define DEBUG true //Pins I/O #define THERMO A0 #define PHOTO A1 #define vRegen_pin 4 #define vBilge_pin 5 #define LED 9 #define buzzer 8 #include SoftwareSerial.h\u0026gt; SoftwareSerial esp8266(11, 12); // RX, TX const byte site[] PROGMEM = { 60,72,84,77,76,62,60,72,69,65,68,62,13,10,60,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,104,114,101,102,61,34,100,97,116,97,58,59,98,97,115,101,54,52,44,105,86,66,79,82,119,48,75,71,103,111,61,34,62,13,10,60,109,101,116,97,32,110,97,109,101,61,34,118,105,101,119,112,111,114,116,34,32,99,111,110,116,101,110,116,61,34,119,105,100,116,104,61,100,101,118,105,99,101,45,119,105,100,116,104,44,32,105,110,105,116,105,97,108,45,115,99,97,108,101,61,50,46,48,44,32,117,115,101,114,45,115,99,97,108,97,98,108,101,61,121,101,115,34,62,13,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,114,101,102,114,101,115,104,34,32,99,111,110,116,101,110,116,61,34,51,34,62,13,10,60,116,105,116,108,101,62,13,10,80,111,108,97,114,102,117,99,104,115,13,10,60,47,116,105,116,108,101,62,13,10,60,47,72,69,65,68,62,13,10,60,66,79,68,89,32,98,103,99,111,108,111,114,61,34,35,70,70,70,70,70,70,34,32,116,101,120,116,61,34,35,48,48,48,48,48,48,34,62,13,10,60,70,79,78,84,32,115,105,122,101,61,34,51,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,13,10,60,98,62,80,79,76,65,82,70,85,67,72,83,60,47,98,62,13,10,60,47,70,79,78,84,62,13,10,60,70,79,78,84,32,115,105,122,101,61,34,50,34,32,70,65,67,69,61,34,86,101,114,100,97,110,97,34,62,13,10,60,66,82,62,13,10,42,98,114,105,103,104,116,42,13,10,60,47,102,111,110,116,62,13,10,60,47,72,84,77,76,62,13,10 }; void setup() { pinMode(vRegen_pin, INPUT); digitalWrite(vRegen_pin, HIGH); pinMode(vBilge_pin, INPUT); digitalWrite(vBilge_pin, HIGH); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); pinMode(buzzer, OUTPUT); digitalWrite(buzzer, LOW); Serial.begin(19200); esp8266.begin(19200); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); if (configTCPServer()) debug(\u0026#34;Server Aktiv\u0026#34;); else debug(\u0026#34;Server Error\u0026#34;); } void loop() { if (analogRead(PHOTO) \u0026gt; 100) digitalWrite(LED, LOW); else digitalWrite(LED, HIGH); int bilge=analogRead(A4); if ((bilge 800) || (readVcc() 4200 )) //Achtung, EasterEgg: Mit wenigen weiteren Widerständen könnte man über Spannungsteiler SINNVOLL die Batteriespannung überwachen. Dann gibt es auch ein Notsignal, wenn die Spannung zu niedrig wird! { digitalWrite(LED, LOW); delay(600); did(); did(); did(); da(); da(); da(); did(); did(); did(); delay(600); } String xBuffer; if (esp8266.available()) // check if the esp is sending a message { if (esp8266.find(\u0026#34;+IPD,\u0026#34;)) { debug(\u0026#34;Incomming Request\u0026#34;); int connectionId = esp8266.parseInt(); if (sendWebsite(connectionId, createWebsite())) debug(\u0026#34;Website send OK\u0026#34;); else debug(\u0026#34;Website send Error\u0026#34;); } } } boolean sendWebsite(int connectionId, String webpage) { boolean succes = true; if (sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(connectionId) + \u0026#34;,\u0026#34; + String(webpage.length()), \u0026#34;\u0026gt;\u0026#34;)) { esp8266.print(webpage); esp8266.find(\u0026#34;SEND OK\u0026#34;); succes \u0026amp;= sendCom(\u0026#34;AT+CIPCLOSE=\u0026#34; + String(connectionId), \u0026#34;OK\u0026#34;); } else { succes = false; } return succes; } String createWebsite() { String xBuffer; double vTemp = Thermistor(analogRead(THERMO)); String br = \u0026#34;\u0026#34;; int vcc = readVcc(); String stringOne = \u0026#34;Wetterdaten: \u0026#34;; int webregen = analogRead(A5); String esregnet; if (webregen \u0026gt; 900) esregnet = \u0026#34;trocken\u0026#34;; else esregnet =\u0026#34;Regen\u0026#34;; int licht = analogRead(PHOTO); String webhimmel; if (licht \u0026gt;= 100 \u0026amp; licht 700) webhimmel = \u0026#34;bedeckt\u0026#34;; else if (licht \u0026gt; 700) webhimmel = \u0026#34;sonnig\u0026#34;; else webhimmel =\u0026#34;Nacht\u0026#34;; int bilgenwasser = analogRead(A4); String webbilge; if (bilgenwasser \u0026gt; 900) webbilge = \u0026#34;trocken\u0026#34;; else webbilge =\u0026#34;Wassereinruch\u0026#34;; String stringThree = stringOne + vTemp + \u0026#34; Grad \u0026#34; + br + webhimmel + br + esregnet + br + \u0026#34;Schiffsstatus\u0026#34;+ br + br + \u0026#34;Bordspannung: \u0026#34; + vcc + \u0026#34; mV\u0026#34; + br + \u0026#34;Bilge: \u0026#34; + webbilge; for (int i = 0; i sizeof(site); i++) { char myChar = pgm_read_byte_near(site + i); xBuffer += myChar; } xBuffer.replace(\u0026#34;*bright*\u0026#34;, stringThree); return xBuffer; } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean succes = true; esp8266.setTimeout(5000); succes \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;); esp8266.setTimeout(1000); if (configStation(SSID, PASSWORD)) { succes \u0026amp;= true; debug(\u0026#34;WLAN Connected\u0026#34;); debug(\u0026#34;My IP is:\u0026#34;); debug(sendCom(\u0026#34;AT+CIFSR\u0026#34;)); } else { succes \u0026amp;= false; } //shorter Timeout for faster wrong UPD-Comands handling succes \u0026amp;= sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;); succes \u0026amp;= sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;); return succes; } boolean configTCPServer() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=1\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configTCPClient() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;)); //succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configStation(String vSSID, String vPASSWORT) { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(20000); succes \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\u0026#34;\u0026#34; + String(vSSID) + \u0026#34;\u0026#34;,\u0026#34;\u0026#34; + String(vPASSWORT) + \u0026#34;\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(1000); return succes; } boolean configAP() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=2\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CWSAP=\u0026#34;NanoESP\u0026#34;,\u0026#34;\u0026#34;,5,0\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configUDP() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;UDP\u0026#34;,\u0026#34;192.168.255.255\u0026#34;,90,91,2\u0026#34;, \u0026#34;OK\u0026#34;); //Importand Boradcast...Reconnect IP return succes; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendUDP(String Msg) { boolean succes = true; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(Msg.length() + 2), \u0026#34;\u0026gt;\u0026#34;); //+\u0026#34;,\u0026#34;192.168.4.2\u0026#34;,90\u0026#34;, \u0026#34;\u0026gt;\u0026#34;); if (succes) { succes \u0026amp;= sendCom(Msg, \u0026#34;OK\u0026#34;); } return succes; } boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;)) { return true; } else { debug(\u0026#34;ESP SEND ERROR: \u0026#34; + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { while (true) { if (esp8266.available()) Serial.write(esp8266.read()); if (Serial.available()) esp8266.write(Serial.read()); } } void debug(String Msg) { if (DEBUG) { Serial.println(Msg); } } //Spannungsmessung gefunden auf //https://code.google.com/p/tinkerit/wiki/SecretVoltmeter long readVcc() { long result; // Read 1.1V reference against AVcc ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(5); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Convert while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH8; result = 1126400L / result; // Back-calculate AVcc in mV return result; } //EasterEgg2: Interne Temperatur des Boards könnte man auch noch ausgeben! :) long readTemp() { // Read temperature sensor against 1.1V reference #if defined(__AVR_ATmega32U4__) ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); ADCSRB = _BV(MUX5); // the MUX5 bit is in the ADCSRB register #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(REFS1) | _BV(MUX5) | _BV(MUX1); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADMUX = _BV(REFS1) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0); #else ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(MUX3); #endif delay(5); // Wait for ADMUX setting to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA,ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high 8) | low; // combine the two return result; } double Thermistor(int RawADC) { //Source: http://playground.arduino.cc/ComponentLib/Thermistor2 double Temp; Temp = log(10000.0 * ((1024.0 / RawADC - 1))); // =log(10000.0/(1024.0/RawADC-1)) // for pull-up configuration Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp )) * Temp ); Temp = Temp - 273.15; // Convert Kelvin to Celcius // Temp = (Temp * 9.0)/ 4.7 + 32.0; // Convert Celcius to Fahrenheit return Temp; } void did() { tone(buzzer, 440, 100); digitalWrite(LED, HIGH); delay(200); noTone(buzzer); digitalWrite(LED, LOW); delay(200); } void da() { tone(buzzer, 440, 600); digitalWrite(LED, HIGH); delay(600); noTone(buzzer); digitalWrite(LED, LOW); delay(200); } [collapse] Der Beitrag Wettbewerbsbeitrag: Polarfuchs erschien zuerst auf Elektronik Dachbude.\nSource: http://fkainka.de/tag/Pretzelboard/\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-polarfuchs/","summary":"\u003ch2 id=\"beitrag-zum-kalenderwettbewerb-2015-von-nicolaus-cüppers\"\u003eBeitrag zum \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eKalenderwettbewerb\u003c/a\u003e 2015 von Nicolaus Cüppers\u003c/h2\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"http://www.elektronik-labor.de/Lernpakete/Kalender15/Polar3.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eDer Conrad-Adventskalender „Internet of Things“ war für mich der Einstieg, mich einmal mit dem Thema Arduino zu befassen. Herausgekommen ist das Projekt „Polarfuchs“. Der Name ist angelehnt an das kleinste mir bekannte deutsche Forschungsschiff. Es handelt sich um einen Versuchsaufbau, der ein unbemanntes „Schiff“ nachbildet, was einige Umgebungsdaten erfasst und weiterleitet und parallel dazu seinen eigenen Zustand überwacht.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"http://www.elektronik-labor.de/Lernpakete/Kalender15/Polar1.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eEs wurde nur der Kalender und zusätzlich eine Stromquelle verwendet. Daher sind die Messmethoden auch nicht unbedingt praxisnahe. Normalerweise würde man für die einzelnen Werte passende Sensoren einsetzen.  Das war allerdings nicht die Aufgabe. Vielmehr ging es ja darum, aus einer Hand voll vorhandener Bauelemente das Maximale herauszuholen. Als Schiffsrumpf wird daher der Kalender selbst verwendet. Er bildet durch seinen Plastikkörper mit zahlreichen Einsenkungen eine ideale Schwimmplattform. Es wurden jedoch die üblichen konfektionierten Steckkabel verwendet. Das dem Kalender beiliegende Kabel hätte aber auch gereicht, um die Schaltung aufzubauen. Dann hätte man nur alles etwas enger am Board platzieren müssen.\u003c/p\u003e","title":"Wettbewerbsbeitrag: Polarfuchs"},{"content":"Beitrag zum Kalenderwettbewerb 2015 von Leander Hackmann: Jeder hat Topfpflanzen. Sie verschönern unseren Alltag, benötigen jedoch auch häufig unsere Aufmerksamkeit in Form von Pflege. Um den besten Standort herauszufinden und das regelmäßige Giessen nicht zu vergessen, habe ich folgende Anwendung mit dem Iot-Board entworfen und umgesetzt: ein Datenlogger für Licht und Feuchtigkeit.\nDownload des Programms Das Programm\n//Blumenwaechter für das NanoESP-Board //2016 von Leander H. //Misst alle 30min. Feuchtigkeit und Helligkeit //Mit Druck auf Taster kann ein Nullpunkt in der Messung als markanter Punkt gesetzt werden# //Es werden zwei Channels auf Thingspeak.com verwendet (API-Keys in \u0026#34;LightKEY und \u0026#34;MoistureKEY\u0026#34;) //Über \u0026#34;threshold\u0026#34; kann der Pegel zur Warnung eingestellt werden //Code und Idee von Leander H. -- Funktionen von Fabian Kainka #include SoftwareSerial.h\u0026gt; #include Time.h\u0026gt; //Setup-Bereich #define SSID \u0026#34;[SSID]\u0026#34; #define PASSWORD \u0026#34;[Passwort]\u0026#34; #define LightKEY \u0026#34;[API-KEY]\u0026#34; #define MoistureKEY \u0026#34;[API-KEY]\u0026#34; #define threshold 400 // #define DEBUG true #define LED_WLAN 13 SoftwareSerial esp8266(11, 12); // RX, TX int ledGreen = 5; int ledYellow = 4; int ledRed = 3; int sensorPower = 2; int moistSensor = 2; String lastminute; const byte thingPost[] PROGMEM = { 80, 79, 83, 84, 32, 42, 85, 82, 76, 42, 32, 72, 84, 84, 80, 47, 49, 46, 49, 10, 72, 111, 115, 116, 58, 32, 97, 112, 105, 46, 116, 104, 105, 110, 103, 115, 112, 101, 97, 107, 46, 99, 111, 109, 10, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 58, 32, 99, 108, 111, 115, 101, 10, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 120, 45, 119, 119, 119, 45, 102, 111, 114, 109, 45, 117, 114, 108, 101, 110, 99, 111, 100, 101, 100, 10, 67, 111, 110, 116, 101, 110, 116, 45, 76, 101, 110, 103, 116, 104, 58, 32, 42, 76, 69, 78, 42, 10, 10, 42, 65, 80, 80, 69, 78, 68, 42, 10 }; void setup() { pinMode(ledGreen, OUTPUT); pinMode(ledYellow, OUTPUT); pinMode(ledRed, OUTPUT); pinMode(sensorPower, OUTPUT); Serial.begin(19200); esp8266.begin(19200); while(!espConfig()){ //Failsafe für WLAN delay(200); } digitalWrite(LED_WLAN, HIGH); while(!getTime(\u0026#34;chronic.herokuapp.com\u0026#34;, \u0026#34;/utc/in+one+hours\u0026#34;) == false){ //Failsafe für Zeitsynchro delay(200); } sendThingPost(LightKEY, analogRead(A0)); //Erste Übermittlung digitalWrite(sensorPower, HIGH); delay(200); int tmp = analogRead(A2); sendThingPost(MoistureKEY, tmp); digitalWrite(sensorPower, LOW); if(tmp threshold){ digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); }else{ digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); } } void loop() { String shour, sminute, ssecond; if (hour() 9) shour = \u0026#34;0\u0026#34; + String(hour()); else shour = String(hour()); // adjust for 0-9 if (minute() 9) sminute = \u0026#34;0\u0026#34; + String(minute()); else sminute = String(minute()); if (second() 9) ssecond = \u0026#34;0\u0026#34; + String(second()); else ssecond = String(second()); //debug(shour + \u0026#34;:\u0026#34; + sminute + \u0026#34;:\u0026#34; + ssecond); if(sminute == \u0026#34;0\u0026#34; || sminute == \u0026#34;30\u0026#34;){ //Wird zur halben und vollen Stunde ausgeführt if(sminute != lastminute){ digitalWrite(ledYellow, HIGH); if(sendThingPost(LightKEY, analogRead(A0) == false)){ while(sendThingPost(LightKEY, analogRead(A0) == false)){ sendThingPost(LightKEY, analogRead(A0)); delay(200); } } digitalWrite(ledYellow, LOW); delay(500); digitalWrite(ledYellow, HIGH); digitalWrite(sensorPower, HIGH); delay(100); if(sendThingPost(MoistureKEY, analogRead(A2) == false)){ while(sendThingPost(MoistureKEY, analogRead(A2) == false)){ sendThingPost(MoistureKEY, analogRead(A2)); delay(200); } } digitalWrite(sensorPower, LOW); digitalWrite(ledYellow, LOW); digitalWrite(sensorPower, HIGH); delay(100); int tmp = analogRead(A2); digitalWrite(sensorPower, LOW); if(tmp threshold){ digitalWrite(ledRed, HIGH); digitalWrite(ledGreen, LOW); }else{ digitalWrite(ledRed, LOW); digitalWrite(ledGreen, HIGH); } lastminute = sminute; } } if(analogRead(A1) \u0026gt; 500){ //Button zum Setzen eines Nullpunktes digitalWrite(ledYellow, HIGH); sendThingPost(LightKEY, 0); digitalWrite(ledYellow, LOW); delay(500); digitalWrite(ledYellow, HIGH); sendThingPost(MoistureKEY, 0); digitalWrite(ledYellow, LOW); delay(1000); } } //Verwendete Funktionen von Fabian Kainka folgen ab hier: //-----------------------------------------ThingsSpeak Functions------------------------------------ boolean sendThingPost(String key, int value) { boolean succes = true; String Host = \u0026#34;api.thingspeak.com\u0026#34;; String msg = \u0026#34;field1=\u0026#34; + String(value); succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); String postRequest = createThingPost(\u0026#34;/update\u0026#34;, key, msg); if (sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(postRequest.length()), \u0026#34;\u0026gt;\u0026#34;)) { esp8266.print(postRequest); esp8266.find(\u0026#34;SEND OK\u0026#34;); if (!esp8266.find(\u0026#34;CLOSED\u0026#34;)) succes \u0026amp;= sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); } else { succes = false; } return succes; } String createThingPost(String url, String key, String msg) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg; xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } String createThingGet(String url, String key) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key; xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;); xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } String createThingGet(String url, String key, String msg) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg; xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;); xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } String getTCP(String Host, String Subpage) { boolean succes = true; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); String getRequest = \u0026#34;GET \u0026#34; + Subpage + \u0026#34; HTTP/1.1rnHost:\u0026#34; + Host + \u0026#34;rnrn\u0026#34;; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;); return sendCom(getRequest); } boolean getTime(String Host, String Subpage) { boolean succes = true; int xyear, xmonth, xday, xhour, xminute, xsecond; //lokal variables succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); String getRequest = \u0026#34;GET \u0026#34; + Subpage + \u0026#34; HTTP/1.1rnHost:\u0026#34; + Host + \u0026#34;rn\u0026#34;; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;); esp8266.println(getRequest); if (esp8266.find(\u0026#34;+IPD\u0026#34;)) { if (esp8266.find(\u0026#34;rnrn\u0026#34;)) { xyear = esp8266.parseInt(); xmonth = esp8266.parseInt(); xday = esp8266.parseInt(); xhour = esp8266.parseInt(); xminute = esp8266.parseInt(); xsecond = esp8266.parseInt(); if (xday 0) xday *= -1; //Because of date seperator - parseInt detects negativ integer if (xmonth 0) xmonth *= -1; //Because of date seperator - parseInt detects negativ integer setTime(xhour, xminute, xsecond, xday, xmonth, xyear); sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); return true; } else return false; } else return false; } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean succes = true; esp8266.setTimeout(5000); succes \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;); esp8266.setTimeout(1000); if (configStation(SSID, PASSWORD)) { succes \u0026amp;= true; debug(\u0026#34;WLAN Connected\u0026#34;); debug(\u0026#34;My IP is:\u0026#34;); debug(sendCom(\u0026#34;AT+CIFSR\u0026#34;)); } else { succes \u0026amp;= false; } //shorter Timeout for faster wrong UPD-Comands handling succes \u0026amp;= sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;); //So rum scheit wichtig! succes \u0026amp;= sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;); return succes; } boolean configTCPServer() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=1\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configTCPClient() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;)); //succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configStation(String vSSID, String vPASSWORT) { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(20000); succes \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\u0026#34;\u0026#34; + String(vSSID) + \u0026#34;\u0026#34;,\u0026#34;\u0026#34; + String(vPASSWORT) + \u0026#34;\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(1000); return succes; } boolean configAP() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=2\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CWSAP=\u0026#34;NanoESP\u0026#34;,\u0026#34;\u0026#34;,5,0\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configUDP() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;)); succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;UDP\u0026#34;,\u0026#34;192.168.255.255\u0026#34;,90,91,2\u0026#34;, \u0026#34;OK\u0026#34;); //Importand Boradcast...Reconnect IP return succes; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendUDP(String Msg) { boolean succes = true; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(Msg.length() + 2), \u0026#34;\u0026gt;\u0026#34;); //+\u0026#34;,\u0026#34;192.168.4.2\u0026#34;,90\u0026#34;, \u0026#34;\u0026gt;\u0026#34;); if (succes) { succes \u0026amp;= sendCom(Msg, \u0026#34;OK\u0026#34;); } return succes; } boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;)) { return true; } else { debug(\u0026#34;ESP SEND ERROR: \u0026#34; + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { while (true) { if (esp8266.available()) Serial.write(esp8266.read()); if (Serial.available()) esp8266.write(Serial.read()); } } void debug(String Msg) { if (DEBUG) { Serial.println(Msg); } } [collapse]\nDas Programm misst zur vollen und halben Stunde (Zeit wird aus dem Internet bezogen) Helligkeit und Feuchtigkeit, um diese dann in zwei Graphen auf Thingspeak.com zu schreiben. Bei zu trockener Erde (der Wert „threshold“ muss individuell angepasst werden, bei mir lag der Wert für feuchte Erde bei rund 400) leuchtet dann eine rote LED und ansonsten eine grüne. Die Stromzufuhr für den Feuchtigkeitssensor (ein Spannungsteiler), wird nur periodisch eingeschaltet, um Elektrolyse in der Erde zu vermeiden. Außerdem müssen Graphitelektroden (z.B. Bleistiftminen) verwendet werden, um die Pflanze nicht durch Ionen einer Elektrolyse zu vergiften (besonders bei Kupfer besteht Gefahr).\nAuf Knopfdruck wird in beide Graphen ein Nullwert geschrieben, beispielsweise um Anfang und Ende einer Messung auf dem Graphen festzuhalten. Während der Übermittlung von Daten und bei Messungen wird zur Kontrolle die gelbe LED eingeschaltet.\nDas Bild zeigt einen experimentellen Aufbau (es wurden nur andersfarbige LEDs mit eingebautem Vorwiderstand verwendet, der Aufbau ist aber nach der Fritzing-Abbildung mit Bauteilen aus den Kalendern realisierbar).\nDer Beitrag Wettbewerbsbeitrag: Blumenwächter erschien zuerst auf Elektronik Dachbude.\nSource: fkainka.de/pretzelboard\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-blumenwaechter/","summary":"\u003ch2 id=\"beitrag-zum-kalenderwettbewerb-2015-von-leander-hackmann\"\u003eBeitrag zum \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eKalenderwettbewerb\u003c/a\u003e 2015 von Leander Hackmann:\u003c/h2\u003e\n\u003cp\u003eJeder hat Topfpflanzen. Sie verschönern unseren Alltag, benötigen jedoch auch häufig unsere Aufmerksamkeit in Form von Pflege. Um den besten Standort herauszufinden und das regelmäßige Giessen nicht zu vergessen, habe ich folgende Anwendung mit dem Iot-Board entworfen und umgesetzt: ein Datenlogger für Licht und Feuchtigkeit.\u003c/p\u003e\n\u003ch3 id=\"download-des-programms\"\u003e\u003ca href=\"/images/2016/01/blumenwaechter-final-160125a.zip\"\u003eDownload des Programms\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eDas Programm\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e//Blumenwaechter für das NanoESP-Board\n//2016 von Leander H.\n//Misst alle 30min. Feuchtigkeit und Helligkeit\n//Mit Druck auf Taster kann ein Nullpunkt in der Messung als markanter Punkt gesetzt werden#\n//Es werden zwei Channels auf Thingspeak.com verwendet (API-Keys in \u0026#34;LightKEY und \u0026#34;MoistureKEY\u0026#34;)\n//Über \u0026#34;threshold\u0026#34; kann der Pegel zur Warnung eingestellt werden\n//Code und Idee von Leander H. -- Funktionen von Fabian Kainka\n\n#include SoftwareSerial.h\u0026gt;\n#include Time.h\u0026gt;\n\n//Setup-Bereich\n#define SSID \u0026#34;[SSID]\u0026#34;\n#define PASSWORD \u0026#34;[Passwort]\u0026#34;\n#define LightKEY \u0026#34;[API-KEY]\u0026#34;\n#define MoistureKEY \u0026#34;[API-KEY]\u0026#34;\n#define threshold 400 //\n#define DEBUG true\n#define LED_WLAN 13\n\nSoftwareSerial esp8266(11, 12); // RX, TX\n\nint ledGreen = 5;\nint ledYellow = 4;\nint ledRed = 3;\nint sensorPower = 2;\nint moistSensor = 2;\nString lastminute;\n  \nconst byte thingPost[] PROGMEM = {\n  80, 79, 83, 84, 32, 42, 85, 82, 76, 42, 32, 72, 84, 84, 80, 47, 49, 46, 49, 10, 72, 111, 115, 116, 58, 32, 97, 112, 105, 46, 116, 104, 105, 110, 103, 115, 112, 101, 97, 107, 46, 99, 111, 109, 10, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 58, 32, 99, 108, 111, 115, 101, 10, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 120, 45, 119, 119, 119, 45, 102, 111, 114, 109, 45, 117, 114, 108, 101, 110, 99, 111, 100, 101, 100, 10, 67, 111, 110, 116, 101, 110, 116, 45, 76, 101, 110, 103, 116, 104, 58, 32, 42, 76, 69, 78, 42, 10, 10, 42, 65, 80, 80, 69, 78, 68, 42, 10\n};\n\nvoid setup() {\n  pinMode(ledGreen, OUTPUT);\n  pinMode(ledYellow, OUTPUT);\n  pinMode(ledRed, OUTPUT);\n  pinMode(sensorPower, OUTPUT);\n  \n  Serial.begin(19200);\n  esp8266.begin(19200);\n\n  while(!espConfig()){ //Failsafe für WLAN\n    delay(200);\n  }\n  digitalWrite(LED_WLAN, HIGH);\n\n  while(!getTime(\u0026#34;chronic.herokuapp.com\u0026#34;, \u0026#34;/utc/in+one+hours\u0026#34;) == false){ //Failsafe für Zeitsynchro\n    delay(200);\n  }\n  \n  sendThingPost(LightKEY, analogRead(A0)); //Erste Übermittlung\n  digitalWrite(sensorPower, HIGH);\n  delay(200);\n  int tmp = analogRead(A2);\n  sendThingPost(MoistureKEY, tmp);\n  digitalWrite(sensorPower, LOW);\n  if(tmp  threshold){\n     digitalWrite(ledRed, HIGH);\n     digitalWrite(ledGreen, LOW);\n  }else{\n     digitalWrite(ledRed, LOW);\n     digitalWrite(ledGreen, HIGH);\n  }\n}\n\nvoid loop() {\n  String shour, sminute, ssecond;\n\n  if (hour()  9) shour = \u0026#34;0\u0026#34; + String(hour()); else shour = String(hour()); // adjust for 0-9\n  if (minute()  9) sminute = \u0026#34;0\u0026#34; + String(minute());  else sminute = String(minute());\n  if (second()  9) ssecond = \u0026#34;0\u0026#34; + String(second());  else ssecond = String(second());\n\n  //debug(shour + \u0026#34;:\u0026#34; + sminute + \u0026#34;:\u0026#34; + ssecond);\n  \n  if(sminute == \u0026#34;0\u0026#34; || sminute == \u0026#34;30\u0026#34;){ //Wird zur halben und vollen Stunde ausgeführt\n    if(sminute != lastminute){\n          digitalWrite(ledYellow, HIGH);\n          if(sendThingPost(LightKEY, analogRead(A0) == false)){\n            while(sendThingPost(LightKEY, analogRead(A0) == false)){\n              sendThingPost(LightKEY, analogRead(A0));\n              delay(200);\n            }\n          }\n          digitalWrite(ledYellow, LOW);\n          delay(500);\n          digitalWrite(ledYellow, HIGH);\n          digitalWrite(sensorPower, HIGH);\n          delay(100);\n          if(sendThingPost(MoistureKEY, analogRead(A2) == false)){\n            while(sendThingPost(MoistureKEY, analogRead(A2) == false)){\n              sendThingPost(MoistureKEY, analogRead(A2));\n              delay(200);\n            }\n          }\n          digitalWrite(sensorPower, LOW);\n          digitalWrite(ledYellow, LOW);\n          \n          digitalWrite(sensorPower, HIGH);\n          delay(100);\n          int tmp = analogRead(A2);\n          digitalWrite(sensorPower, LOW);\n          \n          if(tmp  threshold){\n            digitalWrite(ledRed, HIGH);\n            digitalWrite(ledGreen, LOW);\n          }else{\n            digitalWrite(ledRed, LOW);\n            digitalWrite(ledGreen, HIGH);\n          }\n          \n          lastminute = sminute;\n    }\n  }\n  \n  if(analogRead(A1) \u0026gt; 500){ //Button zum Setzen eines Nullpunktes\n    digitalWrite(ledYellow, HIGH);\n    sendThingPost(LightKEY, 0);\n    digitalWrite(ledYellow, LOW);\n    delay(500);\n    digitalWrite(ledYellow, HIGH);\n    sendThingPost(MoistureKEY, 0);\n    digitalWrite(ledYellow, LOW);\n    delay(1000);\n  }\n}\n\n//Verwendete Funktionen von Fabian Kainka folgen ab hier:\n//-----------------------------------------ThingsSpeak Functions------------------------------------\n\nboolean sendThingPost(String key, int value)\n{\n  boolean succes = true;\n  String  Host = \u0026#34;api.thingspeak.com\u0026#34;;\n  String msg = \u0026#34;field1=\u0026#34; + String(value);\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;);\n\n  String postRequest = createThingPost(\u0026#34;/update\u0026#34;, key, msg);\n\n  if (sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(postRequest.length()), \u0026#34;\u0026gt;\u0026#34;))\n  {\n    esp8266.print(postRequest);\n    esp8266.find(\u0026#34;SEND OK\u0026#34;);\n    if (!esp8266.find(\u0026#34;CLOSED\u0026#34;)) succes \u0026amp;= sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;);\n  }\n  else\n  {\n    succes = false;\n  }\n  return succes;\n}  \n\nString createThingPost(String url, String key, String msg)\n{\n  String xBuffer;\n\n  for (int i = 0; i  sizeof(thingPost); i++)\n  {\n    char myChar = pgm_read_byte_near(thingPost + i);\n    xBuffer += myChar;\n  }\n\n  String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg;\n  xBuffer.replace(\u0026#34;*URL*\u0026#34;, url);\n  xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length()));\n  xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append);\n\n  return xBuffer;\n}\n\nString createThingGet(String url, String key)\n{\n  String xBuffer;\n\n  for (int i = 0; i  sizeof(thingPost); i++)\n  {\n    char myChar = pgm_read_byte_near(thingPost + i);\n    xBuffer += myChar;\n  }\n\n  String append = \u0026#34;api_key=\u0026#34; + key;\n  xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;);\n  xBuffer.replace(\u0026#34;*URL*\u0026#34;, url);\n  xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length()));\n  xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append);\n\n  return xBuffer;\n}\n\nString createThingGet(String url, String key, String msg)\n{\n  String xBuffer;\n\n  for (int i = 0; i  sizeof(thingPost); i++)\n  {\n    char myChar = pgm_read_byte_near(thingPost + i);\n    xBuffer += myChar;\n  }\n\n  String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg;\n\n  xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;);\n  xBuffer.replace(\u0026#34;*URL*\u0026#34;, url);\n  xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length()));\n  xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append);\n\n  return xBuffer;\n}\n\nString getTCP(String Host, String Subpage)\n{\n  boolean succes = true;\n\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;);\n  String getRequest = \u0026#34;GET \u0026#34; + Subpage + \u0026#34; HTTP/1.1rnHost:\u0026#34; + Host + \u0026#34;rnrn\u0026#34;;\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;);\n\n  return sendCom(getRequest);\n}\n\nboolean getTime(String Host, String Subpage)\n{\n  boolean succes = true;\n  int xyear, xmonth, xday, xhour, xminute, xsecond;  //lokal variables\n\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;);\n  String getRequest = \u0026#34;GET \u0026#34; + Subpage + \u0026#34; HTTP/1.1rnHost:\u0026#34; + Host + \u0026#34;rn\u0026#34;;\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;);\n\n  esp8266.println(getRequest);\n\n  if (esp8266.find(\u0026#34;+IPD\u0026#34;))\n  {\n    if (esp8266.find(\u0026#34;rnrn\u0026#34;))\n    {\n      xyear = esp8266.parseInt();\n      xmonth = esp8266.parseInt();\n      xday = esp8266.parseInt();\n      xhour = esp8266.parseInt();\n      xminute = esp8266.parseInt();\n      xsecond = esp8266.parseInt();\n\n      if (xday  0) xday *= -1;          //Because of date seperator - parseInt detects negativ integer\n      if (xmonth  0) xmonth *= -1;    //Because of date seperator - parseInt detects negativ integer\n\n      setTime(xhour, xminute, xsecond, xday, xmonth, xyear);\n      sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;);\n      return true;\n    }\n    else return false;\n  }\n  else return false;\n}\n\n//-----------------------------------------Config ESP8266------------------------------------\n\nboolean espConfig()\n{\n  boolean succes = true;\n  esp8266.setTimeout(5000);\n  succes \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;);\n  esp8266.setTimeout(1000);\n  if (configStation(SSID, PASSWORD)) {\n    succes \u0026amp;= true;\n    debug(\u0026#34;WLAN Connected\u0026#34;);\n    debug(\u0026#34;My IP is:\u0026#34;);\n    debug(sendCom(\u0026#34;AT+CIFSR\u0026#34;));\n  }\n  else\n  {\n    succes \u0026amp;= false;\n  }\n  //shorter Timeout for faster wrong UPD-Comands handling\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;);  //So rum scheit wichtig!\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;);\n\n  return succes;\n}\n\nboolean configTCPServer()\n{\n  boolean succes = true;\n\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=1\u0026#34;, \u0026#34;OK\u0026#34;));\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;));\n\n  return succes;\n\n}\n\nboolean configTCPClient()\n{\n  boolean succes = true;\n\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;));\n  //succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;));\n\n  return succes;\n\n}\n\nboolean configStation(String vSSID, String vPASSWORT)\n{\n  boolean succes = true;\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;));\n  esp8266.setTimeout(20000);\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\u0026#34;\u0026#34; + String(vSSID) + \u0026#34;\u0026#34;,\u0026#34;\u0026#34; + String(vPASSWORT) + \u0026#34;\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;));\n  esp8266.setTimeout(1000);\n  return succes;\n}\n\nboolean configAP()\n{\n  boolean succes = true;\n\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=2\u0026#34;, \u0026#34;OK\u0026#34;));\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CWSAP=\u0026#34;NanoESP\u0026#34;,\u0026#34;\u0026#34;,5,0\u0026#34;, \u0026#34;OK\u0026#34;));\n\n  return succes;\n}\n\nboolean configUDP()\n{\n  boolean succes = true;\n\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;));\n  succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;));\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;UDP\u0026#34;,\u0026#34;192.168.255.255\u0026#34;,90,91,2\u0026#34;, \u0026#34;OK\u0026#34;); //Importand Boradcast...Reconnect IP\n  return succes;\n}\n\n//-----------------------------------------------Controll ESP-----------------------------------------------------\n\nboolean sendUDP(String Msg)\n{\n  boolean succes = true;\n\n  succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(Msg.length() + 2), \u0026#34;\u0026gt;\u0026#34;);    //+\u0026#34;,\u0026#34;192.168.4.2\u0026#34;,90\u0026#34;, \u0026#34;\u0026gt;\u0026#34;);\n  if (succes)\n  {\n    succes \u0026amp;= sendCom(Msg, \u0026#34;OK\u0026#34;);\n  }\n  return succes;\n}\n\nboolean sendCom(String command, char respond[])\n{\n  esp8266.println(command);\n  if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;))\n  {\n    return true;\n  }\n  else\n  {\n    debug(\u0026#34;ESP SEND ERROR: \u0026#34; + command);\n    return false;\n  }\n}\n\nString sendCom(String command)\n{\n  esp8266.println(command);\n  return esp8266.readString();\n}\n\n//-------------------------------------------------Debug Functions------------------------------------------------------\nvoid serialDebug() {\n  while (true)\n  {\n    if (esp8266.available())\n      Serial.write(esp8266.read());\n    if (Serial.available())\n      esp8266.write(Serial.read());\n  }\n}\n\nvoid debug(String Msg)\n{\n  if (DEBUG)\n  {\n    Serial.println(Msg);\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e[collapse]\u003c/p\u003e","title":"Wettbewerbsbeitrag: Blumenwächter"},{"content":"$ uname -a\n3.13.0-77-generic\nx86_64 x86_64 x86_64 GNU/Linux\nsudo modprobe ch341\n$ lsmod\nModule Size Used by\nch341 14072 0\nusbserial 45014 1 ch341\narduino 1.6.7\nunter Werkzeuge -\u0026gt;Board:\n\u0026ldquo;Arduino Nano\u0026rdquo;\n-\u0026gt; Prozessor:\n\u0026ldquo;Atmega\nProzessor:\n$ dmesg\n[ 842.420919] usbcore: registered new interface driver usbserial\n[ 842.420935] usbcore: registered new interface driver usbserial_generic\n[ 842.420948] usbserial: USB Serial support registered for generic\n[ 842.434622] usbcore: registered new interface driver ch341\n[ 842.434632] usbserial: USB Serial support registered for ch341-uart\nPort ist eingegraut (nicht anwählbar) \u0026lt;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash; !!!\nMeldung der IDE:\nBoard at /dev/ttyACM0 is not available\n$ lsusb\nnichts was auf einen Port hinweist\nEs leuchten auf dem Pretzel Board permanent zwei blaue und ein rotes LED\nWeiß jemand Rat?\nBeim compilieren etc taucht keine Fehlermeldung auf (s auch lsmod)\nDanke Ardy\n","permalink":"https://iot.fkainka.de/forum/topic/installation-ubuntu-14-04/","summary":"\u003cp\u003e$ uname -a\u003cbr\u003e\n3.13.0-77-generic\u003cbr\u003e\nx86_64 x86_64 x86_64 GNU/Linux\u003cbr\u003e\nsudo modprobe ch341\u003cbr\u003e\n$ lsmod\u003cbr\u003e\nModule Size Used by\u003cbr\u003e\nch341 14072 0\u003cbr\u003e\nusbserial 45014 1 ch341\u003cbr\u003e\narduino 1.6.7\u003cbr\u003e\nunter Werkzeuge -\u0026gt;Board:\u003cbr\u003e\n\u0026ldquo;Arduino Nano\u0026rdquo;\u003cbr\u003e\n-\u0026gt; Prozessor:\u003cbr\u003e\n\u0026ldquo;Atmega\u003cbr\u003e\nProzessor:\u003cbr\u003e\n$ dmesg\u003cbr\u003e\n[ 842.420919] usbcore: registered new interface driver usbserial\u003cbr\u003e\n[ 842.420935] usbcore: registered new interface driver usbserial_generic\u003cbr\u003e\n[ 842.420948] usbserial: USB Serial support registered for generic\u003cbr\u003e\n[ 842.434622] usbcore: registered new interface driver ch341\u003cbr\u003e\n[ 842.434632] usbserial: USB Serial support registered for ch341-uart\u003c/p\u003e","title":"installation ubuntu 14.04"},{"content":"Foren und kommentierbare Blogs sich eignen prinzipiell sehr gut dafür, konkrete Fragen zu stellen, aber gleichermaßen wenig, bereits vorhandene Antworten zu einer bestimmten Frage zu finden. Damit nicht immer wieder die gleichen Fragen gestellt werden müssen, starte ich hier mal eine Linux-FAQ für das Pretzelboard\n**Wo finde ich den Treiber für den USB-Serial-Converter CH341?**Der Treiber ist bereits lange Zeit im Standard-Kernel enthalten und wird bei den gängigen Distributionen i.A. automatisch geladen, sobald das Board angeschlossen wird. Ich habe das Pretzelboard aus- und wieder eingesteckt und bekomme keine Verbindung mehr mit der IDE, ist das Board kaputt? Wenn der USB-Anschluss vom Pretzelboard getrennt wird, hält die Arduino IDE die Schnittstellt noch offen. Beim erneuten anschließen verbindet der Kernel das Board daher mit einem anderen, freien Device (z.B. ttyUSB1 statt ttyUSB0). Daher sollte nach dem Ausstecken des USB-Kabels am Pretzelboard zunächst die IDE beendet werden. Wird die IDE erst nach dem Wiederanschließen des Pretzelboards beendet, dann ist das Board bereits mit der anderen Schnittstelle verbunden und kann daher trotzdem nicht von der neu gestarteten IDE gefunden werden. ","permalink":"https://iot.fkainka.de/forum/topic/pretzelboard-linux-faq/","summary":"\u003cp\u003eForen und kommentierbare Blogs sich eignen prinzipiell sehr gut dafür, konkrete Fragen zu stellen, aber gleichermaßen wenig, bereits vorhandene Antworten zu einer bestimmten Frage zu finden. Damit nicht immer wieder die gleichen Fragen gestellt werden müssen, starte ich hier mal eine Linux-FAQ für das Pretzelboard\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e**Wo finde ich den Treiber für den USB-Serial-Converter CH341?**Der Treiber ist bereits lange Zeit im Standard-Kernel enthalten und wird bei den gängigen Distributionen i.A. automatisch geladen, sobald das Board angeschlossen wird.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIch habe das Pretzelboard aus- und wieder eingesteckt und bekomme keine Verbindung mehr mit der IDE, ist das Board kaputt?\u003c/strong\u003e Wenn der USB-Anschluss vom Pretzelboard getrennt wird, hält die Arduino IDE die Schnittstellt noch offen. Beim erneuten anschließen verbindet der Kernel das Board daher mit einem anderen, freien Device (z.B. ttyUSB1 statt ttyUSB0). Daher sollte nach dem Ausstecken des USB-Kabels am Pretzelboard zunächst die IDE beendet werden. Wird die IDE erst \u003cem\u003enach\u003c/em\u003e dem Wiederanschließen des Pretzelboards beendet, dann ist das Board bereits mit der anderen Schnittstelle verbunden und kann daher trotzdem nicht von der neu gestarteten IDE gefunden werden.\u003c/li\u003e\n\u003c/ol\u003e","title":"Pretzelboard Linux-FAQ"},{"content":"Sie kennen das? Sie sitzen in Ihrem Arbeits- oder Bastelzimmer, ganz vertieft in Ihr neues Pretzelboard, plötzlich schießt es siedendheiss durch den Kopf: \u0026ldquo;Der Tee!\u0026rdquo; - doch der ist längst eiskalt, steht in der Küche und hat sich in eine tiefschwarze Jauche verwandelt, die höchstens noch als Pflanzenschutzmittel taugt.\nDas ist der Auftritt für den IoTeaTimer. Eine Eieruhr mit WLAN-Anschluss? Nein, Ihr persönlicher Erinnerungsagent … lesen Sie weiter in der umfassenden Projektdokumentation, hier als PDF, zum Download.\n\u0026hellip; und hier die IoTeaTimer-Quellen\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-ioteatimer/","summary":"\u003cp\u003eSie kennen das? Sie sitzen in Ihrem Arbeits- oder Bastelzimmer, ganz vertieft in Ihr neues Pretzelboard, plötzlich schießt es siedendheiss durch den Kopf: \u0026ldquo;Der Tee!\u0026rdquo; - doch der ist längst eiskalt, steht in der Küche und hat sich in eine tiefschwarze Jauche verwandelt, die höchstens noch als Pflanzenschutzmittel taugt.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2016/01/IoTeaTimer-Titelbild-3.jpg\"\u003e\u003cimg alt=\"IoTeaTimer-Titelbild-3\" loading=\"lazy\" src=\"/images/2016/01/IoTeaTimer-Titelbild-3.jpg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDas ist der Auftritt für den IoTeaTimer. Eine Eieruhr mit WLAN-Anschluss? Nein, Ihr persönlicher Erinnerungsagent … lesen Sie weiter in der umfassenden \u003ca href=\"/images/2016/01/IoTeaTimer.pdf\"\u003eProjektdokumentation\u003c/a\u003e, hier als PDF, zum Download.\u003c/p\u003e","title":"Wettbewerbsbeitrag: IoTeaTimer"},{"content":"Mein Board ist da und nachdem ich lange erfolglos versucht habe es mit den AT-Befehlen anzusprechen habe eines von den Beispielprogrammen installiert (Treiber waren kein Problem). Mit dem Beispielprogramm kann ich seriell kommunizieren. Ich würde gerne noch mal die Software bekommen, die original drauf sein sollte um mit den AT-Befehlen rumzuprobieren. Das WLAN selber läuft noch so wie es im Auslieferungszustand sein soll - obwohl ich Beispielprogramme geflashed habe (blink und SerialCallResponse). Ich würde es gerne mit den AT Befehlen konfigurieren können. Die \u0026ldquo;versteckte\u0026rdquo; Website war da. Der WLAN-Chip befindet sich also noch im Lieferzustand. Der Atmel logischerweise nicht mehr. Wo finde ich das, was auf dem Atmel war, am liebsten als Source.\n:-)\n8 Antworten Das_Sams – 31.01.2016\nIch habe das Problem gefunden. In meinem Anleitungszettel zum Board steht nix davon, daß man das Programm vom Tag1 des Adventskalenders flashen muß, sondern nur daß man damit sofort loslegen könne es zu benutzen. In den Adventskalender wollte ich eigentlich erst schauen, wenn das Ding so funktioniert, wie die ersten Schritte in der Anleitung. Naja, einen Tag verplempert, weil ich dachte ich sei zu blöd mein Terminalprogramm richtig eizustellen und habe selber schon ein halbes programmiert - verschiedene USB-Kabel benutzt. Den verlinkten Treiber ausprobiert obwohl der, der bei meinem Linux-Kernel sowieso dabei ist prima funktioniert\u0026hellip;\nSo, wenn man das Ding ohne Adventskalender (Pollin) kauft, dann fehlen in der Anleitung zwei wesentliche Zeilen mit der Information, daß man erst den ATMega flashen muß bevor man am Terminalprogramm die AT-Befehle eingeben kann!\nDafür findet man die \u0026ldquo;versteckte\u0026rdquo; Webseite zwagsweise, weil man irgendwie versucht an das Ding ranzukommen.\n@fk: Mach diese Info bitte fett lesbar. Das wird noch mehr Leuten so gehen.\nklaus – 31.01.2016\nDas Problem liegt dann wohl eher in der Doku von Pollin (wusste gar nicht, dass man das da jetzt auch bekommt).\nWenn man ganz normal den Adventskalender benutzt hat, konnte man in dieses Problem gar nicht rein rennen, da in der Anleitung jeden Tag vorher ein Sketch hoch geladen werden muss, bevor man das Beispiel machen konnte.\nDas_Sams – 31.01.2016\nDie Anleitung, die beim Kauf bei Pollin dabei war, wurde von Franzis geschrieben und ist in der Blisterverpackung. Abgesehen davon, daß ein Impressum, welches auf das Copyright von Franzis hinweist, aufgedruckt ist, findet man es auch im Webshop von Franzis.\nhttp://www.franzis.de/elektronik/arduino-platinen/pretzel-board\nWenn man das da Bild anklickt und rein zoomt ist es der selbe Druck auf dem Stück Papier hinter der Platine im Blister.\nAuf diese Website wird auch hingewiesen. Bevor ich allerdings die Extras (Kalender) anschaue, sollte doch eben die beschrieben Grundfunktion laufen. Wer flasht schon gerne etwas wenn er das gefühl hat, daß die Verbindung nicht richtig funktioniert.\nPollin hat es also nicht verbockt sondern Franzis und selbst wenn es Pollin gewesen wäre wäre es für die Leute, die in die selbe Falle laufen, nett wenn ein Zweizeiler auf der ersten Seite hier sie vor tagelangem Fehlersuchen bewahrt.\nklaus – 31.01.2016\nSorry, aber das sehe ich anders. Es handelt sich hierbei um ein Mikrocontroller-Experimentierboard, welches ein WLAN-Modul enthält. Ich kann dabei nicht erwarten, dass ich unprogrammiert das WLAN-Modul ansprechen kann. Wenn ich mir nen Atmega oder sogar Arduino kaufe, ist da erstmal nix drauf. Es versteht sich von selbst, dass ich da erstmal was drauf spielen muss, damit das ding überhaupt erstmal was macht.\nDas_Sams – 31.01.2016\nDas ist OK wenn es so ist, aber wenn in der Anleitung steht, daß es so funktionieren soll, dann denke ich, daß es schon drauf ist und ich was falsch gemacht habe, wenn es nicht geht. Es standen ja auch die genauen Parameter für die serielle Kommunikation, die man direkt nach Installation von den Treibern verwenden könne. Dazwischen stand nur noch, daß man die Arduino IDE installieren und da den seriellen Monitor verwenden soll. Was aber genau so wenig wie Minicom oder Kermit funktioniert hat. AT-Kommandos zum ausprobieren sind mit angegeben, danach kann man auf pretzelboard.cc weitere Kommandos und Beispiele finden. Wie man da darauf kommen soll, daß man ausgerechnet im Adventskalender den in der Schnellstartanleitung vergessenen Schritt findet, weiß ich nicht. Die Testwebseite war ja auch drauf. Daß ich es beim Flashen überschreibe war mir durchaus klar. Wenn die serielle Kommunikation so aussieht als wäre etwas nicht in Ordnung schaue ich aber noch mal nach bevor ich flashe. Irgendwann gab es da nix mehr zu schauen (USB-Kabel, USB-Port, Systemkonfiguration, Parity- und Stopbits (eingestellt habe ich sie, aber wird die Einstellung auch so umgesetzt?\u0026hellip;) Naja, ich habe dann gehofft, daß der AVR-dude entscheidet ob flashen geht und s.o.\ngeneralovernight – 31.01.2016\nDas Sams schrieb:\nPollin hat es also nicht verbockt sondern Franzis\nIch denke, hier hat niemand etws verbockt. Ich habe bereits mehrere Pretzelboards in Betrieb genommen und konnte immer sofort loslegen, ohne etwas hochzuladen. Ich denke daher, dein Problem war nicht das , was du vermutest, sonder ein typisches Einstiegsproblem:\nMan versucht, etwas in Betrieb zu nehmen, aber es geht nicht und man beginnt mit der Fehlersuche. Da man sich noch nicht auskennt, meist an der falschen Stelle. Beim Testen macht man dann irgendwelche Sachen, die die Funktion vorübergehend auch bei eigentlich völlig richtiger Vorgehensweise verhindern, bis man mal wieder ganz von vorne anfängt und auf einmal alles funktioniert.\nAufgrund deiner Beschreibung vermute ich, dein Problem war folgendes:\nBeim Pretzelboard unter Linux ist es z.B. so, dass die Arduino IDE das USB-Device /dev/ttyUSB0 geöffnet hält, wenn du das Board aussteckst. Wenn du also das USB-Kabel vom Board trennst und wieder einstöpselts, ohne die IDE zu beenden, dann ist ttyUSB0 noch blockiert und der Kernel verbindet das Board mit dem nächsten freien Device: ttyUSB1. Damit kann die IDE das Board natürlich nicht mehr finden - es sei denn, du stellst den Port in der Oberfläche um, aber dann darfst du nach einem kompletten Neustart nicht vergessen, wieder umzukonfigurieren.\nDaher ist es besser, nach dem Ausstecken des Boards in jedem Fall zuerst die IDE neu zu starten, und dann erst das Board wieder per USB zu verbinden, aber das weiß man am Anfang halt noch nicht.\n@Klaus: das Pretzelboard gibt es bei allen großen deutschen Elektronikhändlern, namentlich bei Conrad und dem Zweitconrad Völkner, bei Pollin, Reichelt und ELV. Überall in derselben Originalverpackung von Franzis und idR zum selben Preis (bei Conrad mal eine Zeit lang 5 € billiger).\nDas_Sams – 01.02.2016\nNee generalovernight,\ndas war nicht das Problem. Ich habe erstmal minicom benutzt und dann kermit. Die Arduino IDE habe ich erst danach installiert, was aber auch nicht geholfen hat. (avr-gcc und avrdude sind schon lange auf dem System). Das Modul hatte ich definitiv angesprochen und es kamen sogar Meldungen rüber - wie Server läuft, oder so - nur auf AT-Befehle hat es nicht reagiert, weil das Program von Tag 1 nicht drauf war, die Anleitung aber so geschrieben ist, als wäre es ab Werk drauf. Habe ich das wirklich so undeutlich beschrieben? Naja, wenn Du Erfahrung mit der Arduino-IDE hast kannst Du mir ja mal sagen, wie das mit dem externen Editor läuft (kann man einstellen und blockiert die Möglichkeit den Quelltext in der IDE zu editieren). Ich würde gerne wie gewohnt im VIM programmieren - das ist effizienter. Wenn ich dafür allerdings jedes Mal zur Maus und auf Datei öffnen klicken muß ist der Vorteil weg.\ngeneralovernight – 02.02.2016\nGeneral Overnight, bitte ;-) - wie hast du den Unterstrich und die Großbuchstaben in den Namen bekommen? Wordpress ändert doch eigentlich alles in Kleinbuchstaben und lässt keine Sonderzeichen zu.\nDas Modul hatte ich definitiv angesprochen und es kamen sogar Meldungen rüber – wie Server läuft, oder so – nur auf AT-Befehle hat es nicht reagiert, weil das Program von Tag 1 nicht drauf war\nDas ist eben meiner Meinung nach nicht der Fall, aber ich werde es noch einmal prüfen, ein unbenutztes Reserveboard habe ich noch.\nwie das mit dem externen Editor läuft (kann man einstellen und blockiert die Möglichkeit den Quelltext in der IDE zu editieren)\nDas ist auch eigentlich schon fast das ganze Geheimnis. Ich konnte damit auch erst nichts anfangen, aber wenn du \u0026ldquo;externen Editor verwenden\u0026rdquo; einstellst, dann geht die IDE einfach davon aus, dass du den Text ausschließlich mit dem externen Editor bearbeiten möchtest. Vor dem Kompilieren prüft sie dann, ob sich die Dateien geändert haben, und lädt sie gegebenfalls neu. Es gibt also keine Verbindung zwischen der IDE und dem externen Editor, d.h. vor allem, dass der Editor bei Fehlern, die der Compiler findet, nicht an die entsprechende Stelle im Quelltext springen kann. Davon abgesehen funktioniert das ganze problemlos und man kann mit der gewohnten Tastenblegung und den erweiterten Editor-Features arbeiten.\n","permalink":"https://iot.fkainka.de/forum/topic/original-firmware/","summary":"\u003cp\u003eMein Board ist da und nachdem ich lange erfolglos versucht habe es mit den AT-Befehlen anzusprechen habe eines von den Beispielprogrammen installiert (Treiber waren kein Problem). Mit dem Beispielprogramm kann ich seriell kommunizieren. Ich würde gerne noch mal die Software bekommen, die original drauf sein sollte um mit den AT-Befehlen rumzuprobieren. Das WLAN selber läuft noch so wie es im Auslieferungszustand sein soll - obwohl ich Beispielprogramme geflashed habe (blink und SerialCallResponse). Ich würde es gerne mit den AT Befehlen konfigurieren können. Die \u0026ldquo;versteckte\u0026rdquo; Website war da. Der WLAN-Chip befindet sich also noch im Lieferzustand. Der Atmel logischerweise nicht mehr. Wo finde ich das, was auf dem Atmel war, am liebsten als Source.\u003cbr\u003e\n:-)\u003c/p\u003e","title":"original Firmware"},{"content":"Beitrag zum Kalenderwettbewerb 2015 von Bernhard Kaiser \u0026amp; Michael Gaus Bei diesem Projekt handelt es sich um einen Wassermelder, der optisch, akustisch und per Twitter-Meldung Alarm gibt, sobald an den Sensorkontakten Wasser detektiert wird. Er kann z.B. zur Überwachung auf austretendes Wasser aus Waschmaschine oder Spülmaschine dienen und helfen, rechtzeitig vor größeren Überschwemmungen eingreifen zu können. Als Sensorkontakt können einfach 2 Drähte mit abisolierten Enden genommen werden, so wie es auch auf dem Foto zu sehen ist. Verwendet wurden ausschließlich die Bauteile der beiden Adventskalender.\nSchaltplan\nIm Ruhezustand der Schaltung sperrt die Darlingtonstufe bestehend aus den beiden Transistoren T1 und T2. Bei Benetzung mit Wasser am Sensorkontakt J1 entsteht eine leitfähige Verbindung, sodass die Darlingtonstufe durchschaltet und die rote LED1 eingeschaltet wird. Zusätzlich wird durch den LOW-Pegel am Kollektor das IoT-Modul (NanoESP) über den Digitaleingang D2 getriggert, sodass dann per Software eine Twitter-Meldung als weltweiter Alarm abgesetzt wird. Damit jedoch nicht die ganze Welt im Klartext das Wasserleck mitbekommt, erfolgt die Twitter-Textmeldung in bester Geheimdienst-Manier:\n„Achtung, alle Mann an Bord! Das Boot ist bereit zum Ablegen!“ :-)\nZusätzlich wird per Software ein optisches (gelbe LED2 blinkt) und akustisches Alarmsignal per Piezo solange erzeugt, bis der Sensorkontakt keine leitfähige Verbindung mehr hat. Somit ist der Alarm auch direkt lokal vor Ort seh- und hörbar.\nAls Basis für die Software wurde das Projekt „Alarmanlage“ (Tag 21 des IoT-Adventskalenders) verwendet und entsprechend abgeändert.\nGanz oben im Quellcode müssen für die 3 Defines SSID, PASSWORD und TwitterKEY anstatt der Platzhalter die entsprechenden Werte eingetragen werden. Benötigt werden ein Thingspeak und ein Twitter Account, so wie im IoT-Adventskalender beschrieben.\nDownload: Arduino Programm Noch ein Hinweis zur Software:\nDie Arduino-Stringverarbeitung verwendet dynamisch allokierten Heap-Speicher, wobei es zu einer starken Fragmentierung kommen kann. Dies kann zu RAM-Problemen führen. Da in den Adventskalender-Beispielen sehr viele Strings angelegt und hintereinander gehängt werden, kann dies teilweise zu scheinbar unerklärlichem Softwareverhalten führen und sogar Softwareabstürze zur Folge haben, da es zum Überschreiben von RAM-Inhalten kommen kann. Als beispielsweise in dieser Softwareanpassung für den Wassermelder der zu sendende Twitter-Text länger gemacht wurde als im Adventskalender-Beispiel, hat das Versenden der Twitter-Meldung zunächst nicht mehr funktioniert. Um statisch verwendetes RAM zu sparen, sodass mehr RAM für den dynamischen Heap zur Verfügung steht, wurden deshalb hier Strings, die als Debugausgabe auf der seriellen Schnittstelle ausgegeben werden, ins Flash gelegt mit folgendem Mechanismus: statt „Textausgabe“ wird verwendet: F(„Textausgabe“).\nBeispiel:\ndebug(F(„WLAN Connected“));\nDer Quelltext\n/* Wassermelder Alarm SSID, PASSWORD und TwitterKEY muessen angepasst werden */ #define SSID \u0026#34;[Your SSID]\u0026#34; #define PASSWORD \u0026#34;[Your Password]\u0026#34; #define TwitterKEY \u0026#34;[Your Key]\u0026#34; #define SENSOR_INPUT 7 // Wasser-Sensor ist am digital input D2 abgeschlossen #define LED_ALARM 9 // Alarm-LED ist am digital input D3 angeschlossen #define PIEZO 8 #define LED_WLAN 13 #define DEBUG true #include SoftwareSerial.h\u0026gt; SoftwareSerial esp8266(11, 12); // RX, TX const byte thingPost[] PROGMEM = { 80, 79, 83, 84, 32, 42, 85, 82, 76, 42, 32, 72, 84, 84, 80, 47, 49, 46, 49, 10, 72, 111, 115, 116, 58, 32, 97, 112, 105, 46, 116, 104, 105, 110, 103, 115, 112, 101, 97, 107, 46, 99, 111, 109, 10, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 58, 32, 99, 108, 111, 115, 101, 10, 67, 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 32, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 120, 45, 119, 119, 119, 45, 102, 111, 114, 109, 45, 117, 114, 108, 101, 110, 99, 111, 100, 101, 100, 10, 67, 111, 110, 116, 101, 110, 116, 45, 76, 101, 110, 103, 116, 104, 58, 32, 42, 76, 69, 78, 42, 10, 10, 42, 65, 80, 80, 69, 78, 68, 42, 10 }; void setup() { Serial.begin(19200); Serial.println(\u0026#34;Wassermelder\u0026#34;); esp8266.begin(19200); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); pinMode(SENSOR_INPUT, INPUT); pinMode(LED_ALARM, OUTPUT); } void loop() { if(digitalRead(SENSOR_INPUT) == LOW) { alarm(); } else { debug(F(\u0026#34;Alles im trockenen Bereich.\u0026#34;)); } delay(500); } void alarm(void) { debug(F(\u0026#34;Achtung, alle Mann an Bord! Das Boot ist bereit zum Ablegen!\u0026#34;)); sendTwitterPost(TwitterKEY, \u0026#34;Achtung, alle Mann an Bord! Das Boot ist bereit zum Ablegen!\u0026#34;); do { digitalWrite(LED_ALARM, HIGH); tone(PIEZO, 400, 500); delay(500); digitalWrite(LED_ALARM, LOW); tone(PIEZO, 800, 500); delay(500); } while (digitalRead(SENSOR_INPUT) == LOW); } boolean sendTwitterPost(String key, String twitterMsg) { boolean succes = true; String Host = \u0026#34;api.thingspeak.com\u0026#34;; String Url = \u0026#34;/apps/thingtweet/1/statuses/update\u0026#34;; String msg = \u0026#34;\u0026amp;status=\u0026#34; + twitterMsg; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); String postRequest = createThingPost(Url, key, msg); if (sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(postRequest.length()), \u0026#34;\u0026gt;\u0026#34;)) { esp8266.print(postRequest); debug (postRequest); esp8266.find(\u0026#34;SEND OK\u0026#34;); succes \u0026amp;= sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); } else { succes = false; } return succes; } //-----------------------------------------ThingsSpeak Functions------------------------------------ boolean sendThingPost(String key, int value) { boolean succes = true; String Host = \u0026#34;api.thingspeak.com\u0026#34;; String msg = \u0026#34;field1=\u0026#34; + String(value); succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;TCP\u0026#34;,\u0026#34;\u0026#34; + Host + \u0026#34;\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); String postRequest = createThingPost(\u0026#34;/update\u0026#34;, key, msg); if (sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(postRequest.length()), \u0026#34;\u0026gt;\u0026#34;)) { esp8266.print(postRequest); esp8266.find(\u0026#34;SEND OK\u0026#34;); if (!esp8266.find(\u0026#34;CLOSED\u0026#34;)) succes \u0026amp;= sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); } else { succes = false; } return succes; } String createThingPost(String url, String key, String msg) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg; xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } String createThingGet(String url, String key) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key; xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;); xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } String createThingGet(String url, String key, String msg) { String xBuffer; for (int i = 0; i sizeof(thingPost); i++) { char myChar = pgm_read_byte_near(thingPost + i); xBuffer += myChar; } String append = \u0026#34;api_key=\u0026#34; + key + \u0026#34;\u0026amp;\u0026#34; + msg; xBuffer.replace(\u0026#34;POST\u0026#34;, \u0026#34;GET\u0026#34;); xBuffer.replace(\u0026#34;*URL*\u0026#34;, url); xBuffer.replace(\u0026#34;*LEN*\u0026#34;, String( append.length())); xBuffer.replace(\u0026#34;*APPEND*\u0026#34;, append); return xBuffer; } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean succes = true; esp8266.setTimeout(5000); succes \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;); esp8266.setTimeout(1000); if (configStation(SSID, PASSWORD)) { succes \u0026amp;= true; debug(F(\u0026#34;WLAN Connected\u0026#34;)); debug(F(\u0026#34;My IP is:\u0026#34;)); debug(sendCom(F(\u0026#34;AT+CIFSR\u0026#34;))); } else { succes \u0026amp;= false; } //shorter Timeout for faster wrong UPD-Comands handling succes \u0026amp;= sendCom(F(\u0026#34;AT+CIPMUX=0\u0026#34;), \u0026#34;OK\u0026#34;); succes \u0026amp;= sendCom(F(\u0026#34;AT+CIPMODE=0\u0026#34;), \u0026#34;OK\u0026#34;); return succes; } boolean configTCPServer() { boolean succes = true; succes \u0026amp;= (sendCom(F(\u0026#34;AT+CIPMUX=1\u0026#34;), \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(F(\u0026#34;AT+CIPSERVER=1,80\u0026#34;), \u0026#34;OK\u0026#34;)); return succes; } boolean configTCPClient() { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;)); //succes \u0026amp;= (sendCom(\u0026#34;AT+CIPSERVER=1,80\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configStation(String vSSID, String vPASSWORT) { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(20000); succes \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\u0026#34;\u0026#34; + String(vSSID) + \u0026#34;\u0026#34;,\u0026#34;\u0026#34; + String(vPASSWORT) + \u0026#34;\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(1000); return succes; } boolean configAP() { boolean succes = true; succes \u0026amp;= (sendCom(F(\u0026#34;AT+CWMODE=2\u0026#34;), \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(\u0026#34;AT+CWSAP=\u0026#34;NanoESP\u0026#34;,\u0026#34;\u0026#34;,5,0\u0026#34;, \u0026#34;OK\u0026#34;)); return succes; } boolean configUDP() { boolean succes = true; succes \u0026amp;= (sendCom(F(\u0026#34;AT+CIPMODE=0\u0026#34;), \u0026#34;OK\u0026#34;)); succes \u0026amp;= (sendCom(F(\u0026#34;AT+CIPMUX=0\u0026#34;), \u0026#34;OK\u0026#34;)); succes \u0026amp;= sendCom(\u0026#34;AT+CIPSTART=\u0026#34;UDP\u0026#34;,\u0026#34;192.168.255.255\u0026#34;,90,91,2\u0026#34;, \u0026#34;OK\u0026#34;); //Importand Boradcast...Reconnect IP return succes; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendUDP(String Msg) { boolean succes = true; succes \u0026amp;= sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(Msg.length() + 2), \u0026#34;\u0026gt;\u0026#34;); //+\u0026#34;,\u0026#34;192.168.4.2\u0026#34;,90\u0026#34;, \u0026#34;\u0026gt;\u0026#34;); if (succes) { succes \u0026amp;= sendCom(Msg, \u0026#34;OK\u0026#34;); } return succes; } boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;)) { return true; } else { debug(\u0026#34;ESP SEND ERROR: \u0026#34; + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { while (true) { if (esp8266.available()) Serial.write(esp8266.read()); if (Serial.available()) esp8266.write(Serial.read()); } } void debug(String Msg) { if (DEBUG) { Serial.println(Msg); } } [collapse]\nDer Beitrag Wettbewerbsbeitrag: Wassermelder mit Twitter-Alarmmeldung erschien zuerst auf Elektronik Dachbude.\nSource: fkainka.de/pretzelboard\n","permalink":"https://iot.fkainka.de/wettbewerbsbeitrag-wassermelder-mit-twitter-alarmmeldung/","summary":"\u003ch2 id=\"beitrag-zum-kalenderwettbewerb-2015-vonbernhard-kaiser-michael-gaus\"\u003eBeitrag zum \u003ca href=\"http://fkainka.de/der-kalender-wettbewerb-2015-sensoren-im-internet-of-things/\"\u003eKalenderwettbewerb\u003c/a\u003e 2015 von Bernhard Kaiser \u0026amp; Michael Gaus\u003c/h2\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"/images/2016/01/foto.jpg\"\u003e\u003c/p\u003e\n\u003cp\u003eBei diesem Projekt handelt es sich um einen Wassermelder, der optisch, akustisch und per Twitter-Meldung Alarm gibt, sobald an den Sensorkontakten Wasser detektiert wird. Er kann z.B. zur Überwachung auf austretendes Wasser aus Waschmaschine oder Spülmaschine dienen und helfen, rechtzeitig vor größeren Überschwemmungen eingreifen zu können. Als Sensorkontakt können einfach 2 Drähte mit abisolierten Enden genommen werden, so wie es auch auf dem Foto zu sehen ist. Verwendet wurden ausschließlich die Bauteile der beiden Adventskalender.\u003c/p\u003e","title":"Wettbewerbsbeitrag: Wassermelder mit Twitter-Alarmmeldung"},{"content":"Ein Beitrag per Mail von Holger Fritzsch: Das IoT- Baord regt zum experimentieren an. Auch wenn ich den Kalender vor Weihnachten nicht bekam, so konnte ich Dank der Veröffentlichung des Handbuches die Sache mitverfolgen. Inzwischen habe ich ein Pretzelboard erworben.\nEs wird per kostenloser Android- App („UDP- Sender“) im Zusammenhang mit dem Experiment vom Tag 5 (Autor F.Kainka) die Garagenbeleuchtung ein- bzw. ausgeschaltet.\nSo kann man ein altes Handy, dessen Akku schwächelt, einer Zweitverwendung zuführen. Das Handy baut eine Access- Verbindung zum ESP- Modul auf.\nEbenfalls funktioniert es mit dem Ipod,. Hier sogar mit Quittung über Port 90.\nEs ist möglich 3 Tasten zu programmieren.\nDie freie App heißt „WIFI UDP Test Tool“.\nAls Schaltelement bietet sich ein Transistor mit nachfolgenden Relais an.\nLed_0 ","permalink":"https://iot.fkainka.de/fernbedienung-ueber-wlan-oder-alt-und-neu-ergaenzen-sich/","summary":"\u003ch3 id=\"ein-beitrag-per-mail-von-holger-fritzsch\"\u003eEin Beitrag per Mail von Holger Fritzsch:\u003c/h3\u003e\n\u003cp\u003eDas IoT- Baord regt zum experimentieren an. Auch wenn ich den Kalender vor Weihnachten  nicht bekam, so konnte ich Dank der Veröffentlichung des Handbuches die Sache mitverfolgen. Inzwischen habe ich ein Pretzelboard erworben.\u003c/p\u003e\n\u003cp\u003eEs wird per kostenloser Android- App („\u003ca href=\"https://play.google.com/store/apps/details?id=com.hastarin.android.udpsender\u0026amp;hl=de\"\u003eUDP- Sender“\u003c/a\u003e) im Zusammenhang mit dem Experiment vom \u003ca href=\"/day-5\"\u003eTag 5 (Autor F.Kainka)\u003c/a\u003e die Garagenbeleuchtung ein- bzw. ausgeschaltet.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2016/01/test10-1.jpg\"\u003e\u003cimg alt=\"test10\" loading=\"lazy\" src=\"/images/2016/01/test10-1.jpg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSo kann man ein altes Handy, dessen Akku schwächelt, einer Zweitverwendung zuführen. Das Handy baut eine Access- Verbindung zum ESP- Modul auf.\u003c/p\u003e","title":"Fernbedienung über WLAN oder Alt und Neu ergänzen sich"},{"content":"Damit du dein Projekt hochladen kannst, musst du dich zunächst auf dieser Seite anmelden und einloggen. Dann erscheint oben eine Leiste, wie die auf dem unteren Bild:\nNeuer Beitrag Auf dem Bild ist auch schon der Punkt ausgewählt, unter dem du dein neues Projekt erstellen kannst. Als nächstes erscheint eine Seite die folgendermaßen aussieht:\nBeitrag bearbeiten Hier kannst du deine Projektbeschreibung eintippen und deine Bilder einfügen. Ein passender Titel hilft auch anderen, den Beitrag schnell zu finden. Wenn dein Artikel fertig ist, klickst du auf \u0026ldquo;Zur Revision vorlegen\u0026rdquo;. Dann kann es noch ein wenig dauern, bis der Beitrag schließlich unter User Projekte erscheint, denn ein Administrator schaut noch einmal drüber, ob alles korrekt ist. Übrigens, unter der Texteingabe ist außerdem ein Feld, mit dem du festlegen kannst, ob anderen Nutzer Kommentare zu deinem Projekt abgeben dürfen. Dadurch ist es auch möglich, neue Projektideen zu diskutieren oder gemeinsam das Projekt weiter zu Entwickeln.\n","permalink":"https://iot.fkainka.de/anleitung-fuer-dein-erstes-user-projekt/","summary":"\u003cp\u003eDamit du dein Projekt hochladen kannst, musst du dich zunächst auf dieser Seite anmelden und einloggen. Dann erscheint oben eine Leiste, wie die auf dem unteren Bild:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/01/Neu1.jpg\" rel=\"attachment wp-att-1123\"\u003e\u003cimg class=\"size-full wp-image-1123\" src=\"/images/2016/01/Neu1.jpg\" alt=\"Neuer Beitrag\" width=\"910\" height=\"370\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eNeuer Beitrag\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eAuf dem Bild ist auch schon der Punkt ausgewählt, unter dem du dein neues Projekt erstellen kannst. Als nächstes erscheint eine Seite die folgendermaßen aussieht:\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2016/01/ScreenShot9.jpg\" rel=\"attachment wp-att-1124\"\u003e\u003cimg class=\"size-full wp-image-1124\" src=\"/images/2016/01/ScreenShot9.jpg\" alt=\"Beitrag bearbeiten\" width=\"937\" height=\"837\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eBeitrag bearbeiten\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eHier kannst du deine Projektbeschreibung eintippen und deine Bilder einfügen. Ein passender Titel hilft auch anderen, den Beitrag schnell zu finden. Wenn dein Artikel fertig ist, klickst du auf \u0026ldquo;\u003cem\u003eZur Revision vorlegen\u003c/em\u003e\u0026rdquo;. Dann kann es noch ein wenig dauern, bis der Beitrag schließlich unter User Projekte erscheint, denn ein Administrator schaut noch einmal drüber, ob alles korrekt ist. Übrigens, unter der Texteingabe ist außerdem ein Feld, mit dem du festlegen kannst, ob anderen Nutzer Kommentare zu deinem Projekt abgeben dürfen. Dadurch ist es auch möglich, neue Projektideen zu diskutieren oder gemeinsam das Projekt weiter zu Entwickeln.\u003c/p\u003e","title":"Anleitung für dein erstes User Projekt"},{"content":"Hallo Leute,\nIch versuche jetzt seit ein paar Tagen meinem NanoESP folgendes beizubringen:\nWENN:\nIch 3x die \u0026ldquo;TV\u0026rdquo; Taste meiner Fernbedienung drücke DANN:\nSoll sich mein Beamer ausschalten (durch 3x dasselbe IR Signal senden) Mein Yamaha AV-Receiver ausschalten (durch Webservice Call auf lokale IP) Das ganze funktioniert getrennt schon sehr gut, ich habe ein Script das bei dreimal drücken der taste \u0026ldquo;TV\u0026rdquo; auf meiner Fernbedienung 3x das Signal zum Beamer ausschalten sendet und einmal ein weiteres Script das beim starten den WebService Call an den Yamaha AV Receiver schickt. Beides funktioniert unabhängig tadellos.\nJetzt habe ich die beiden Scripts in ein Script gepackt und der WebService Call geht leider nicht, ich bekomme immer eine Fehlermeldung des NanoESP das der Call nicht geschickt werden kann.\nIch vermute das der Speicher zu klein wird obwohl die GUI nichts anzeigt :/\nIch hab schon überall probiert Speicher zu sparen, aber ich denke das Problem liegt an dem langen String den ich über den WebService schicken muss. Kann ich den irgendwie Speicherschonender zusammenbauen und übergeben?\nRelevanter Teil:\n#define AVRStopMessage \u0026#34;Standby\u0026#34; String getRequest = \u0026#34;POST \u0026#34;+Subpage+\u0026#34; HTTP/1.1\\r\\nHost:\u0026#34;+Host+\u0026#34;\\r\\nContent-Type: text/xml;charset=\\\u0026#34;UTF-8\\\u0026#34;\\r\\nAccept: text/xml\\r\\nContent-Length: \u0026#34; + String(strlen(AVRStopMessage)+1) + \u0026#34;\\r\\n\\r\\n\u0026#34; + String(AVRStopMessage) + \u0026#34;\\r\\n\u0026#34;; sendCom(\u0026#34;AT+CIPSTART=\\\u0026#34;TCP\\\u0026#34;,\\\u0026#34;\u0026#34;+Host+\u0026#34;\\\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;); esp8266.println(getRequest); Das ganze Script:\n#include #include SoftwareSerial esp8266(11, 12); // RX, TX #define SSID \u0026#34;*****\u0026#34; #define PASSWORD \u0026#34;*****\u0026#34; #define AVRHost \u0026#34;192.168.0.12\u0026#34; #define AVRSubpage \u0026#34;/YamahaRemoteControl/ctrl\u0026#34; /* Yamaha XML Messages Note! - AVROutputSetVolume has -39 hardcoded as defined volume - AVROutputHDMI1 the outputs of the Yamaha must be set via the NAMES that were assigned in the configuration. My HDMI1 output is called HTPC. Default it most likely the name is HDMI1. \u0026#34;HTPC\u0026#34; is hardcoded in the request! All of the extra ones are disabled because of space issues... */ #define AVRStopMessage \u0026#34;Standby\u0026#34; /* Some IR Codes TURN BEAMER ON Value: 4CB340BF Type: 3 Length: 32 TURN BEAMER OFF Value: 4CB3748B Type: 3 Length: 32 TURN RECEIVER ON/OFF Value: 7E8154AB Type: 3 Length: 32 - And add a FFFFFFFF Type 3 Length 0 Type 2 up type 2 800F041E down type2 800F841F */ unsigned long timenow = 1; unsigned long receivedBeamerOnSignal1 = 0; unsigned long receivedBeamerOnSignal2 = 0; unsigned long receivedBeamerOnSignal3 = 0; unsigned long repeatTimeoutMillisThreshold = 1000; #define LED_WLAN 13 #define GND 4 #define RECV_PIN 7 #define GND2 8 #define VCC 9 IRrecv irrecv(RECV_PIN); IRsend irsend; decode_results results; // Storage for the recorded code int codeType = -1; // The type of code unsigned long codeValue; // The code value if not raw unsigned int rawCodes[RAWBUF]; // The durations if raw int codeLen; // The length of the code void setup() { Serial.begin(19200); irrecv.enableIRIn(); // Start the receiver esp8266.begin(19200); //Set Pins for LED and IR Monitor pinMode(GND, OUTPUT); pinMode(GND2, OUTPUT); pinMode(VCC, OUTPUT); digitalWrite (GND, LOW); digitalWrite (GND2, LOW); digitalWrite (VCC, HIGH); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); } void loop() { //Serial.println(\u0026#34;I am Alive!\u0026#34;); timenow = millis(); //IR RECEIVER SIGNAL if (irrecv.decode(\u0026amp;results)) { analyzeCode(\u0026amp;results); Serial.println(\u0026#34;Received IR!\u0026#34;); irrecv.resume(); } } // Stores the code for later playback // Most of this code is just logging void analyzeCode(decode_results *results) { codeType = results-\u0026gt;decode_type; int count = results-\u0026gt;rawlen; String receivedSignal; if (codeType == UNKNOWN) { //Serial.println(\u0026#34;Received unknown code, saving as raw\u0026#34;); codeLen = results-\u0026gt;rawlen - 1; // To store raw codes: // Drop first value (gap) // Convert from ticks to microseconds // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion for (int i = 1; i rawbuf[i]*USECPERTICK - MARK_EXCESS; //Serial.print(\u0026#34; m\u0026#34;); } else { // Space rawCodes[i - 1] = results-\u0026gt;rawbuf[i]*USECPERTICK + MARK_EXCESS; //Serial.print(\u0026#34; s\u0026#34;); } //Serial.print(rawCodes[i - 1], DEC); } //Serial.println(\u0026#34;\u0026#34;); } else { if (codeType == NEC) { //debug(\u0026#34;Received NEC: \u0026#34;); if (results-\u0026gt;value == REPEAT) { // Don\u0026#39;t record a NEC repeat value as that\u0026#39;s useless. //debug(\u0026#34;repeat; ignoring.\u0026#34;); return; } } receivedSignal = String(results-\u0026gt;value, HEX); receivedSignal.toUpperCase(); // So now we are listening if someone has send the BEAMER ON ir signal 3 times in a row. // we have three variables to store the millisecond when the signal was received. // the next variable iteration will be populated by the system if the last signal was send less than // repeatTimeoutMillis milliseconds. // e.g. if repeatTimeoutMillis=500 it means a signal is valid repeated when the previous signal was // send not longer than half a second before! // Until it reaches the third iteration where it executes the command after 3 repeats of the signal. // In case the previous signal was send longer than repeatTimeoutMillis ago the iteration resets and // sets the newly received signal as iteration 1 to start the cyrcle with this signal again. // if(receivedSignal == \u0026#34;4CB340BF\u0026#34;) { debug(\u0026#34;--------Detected My Signal!\u0026#34;); if(receivedBeamerOnSignal1 == 0) { receivedBeamerOnSignal1 = timenow; debug(\u0026#34;----SET RS1\u0026#34;); } else if(receivedBeamerOnSignal1 != 0 \u0026amp;\u0026amp; receivedBeamerOnSignal2 == 0) { receivedBeamerOnSignal2 = timenow; if( receivedBeamerOnSignal2 \u0026gt; receivedBeamerOnSignal1+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; debug(\u0026#34;----RESET ON RS2: \u0026#34;); } else { debug(\u0026#34;----SET RS2\u0026#34;); } } else if(receivedBeamerOnSignal2 != 0) { receivedBeamerOnSignal3 = timenow; if( receivedBeamerOnSignal3 \u0026gt; receivedBeamerOnSignal2+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; debug(\u0026#34;----RESET ON RS3: \u0026#34;); } else { debug(\u0026#34;----SET RS3\u0026#34;); //esp8266.end(); delay(200); //TURN OFF BEAMER BEGIN debug(\u0026#34;--------TURN OFF BEAMER !!!\u0026#34;); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); //TURN OFF BEAMER END //TURN OFF RECEIVER BEGIN manageAVR(AVRHost, AVRSubpage); //TURN OFF RECEIVER END //reenable IR receiver after sending irrecv.enableIRIn(); irrecv.resume(); receivedBeamerOnSignal1 = 0; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; } } } codeValue = results-\u0026gt;value; codeLen = results-\u0026gt;bits; } } //--------------------------------------Yamaha AVR Functions-------------------------------------- void manageAVR(String Host, String Subpage) { String getRequest = \u0026#34;POST \u0026#34;+Subpage+\u0026#34; HTTP/1.1\\r\\nHost:\u0026#34;+Host+\u0026#34;\\r\\nContent-Type: text/xml;charset=\\\u0026#34;UTF-8\\\u0026#34;\\r\\nAccept: text/xml\\r\\nContent-Length: \u0026#34; + String(strlen(AVRStopMessage)+1) + \u0026#34;\\r\\n\\r\\n\u0026#34; + String(AVRStopMessage) + \u0026#34;\\r\\n\u0026#34;; sendCom(\u0026#34;AT+CIPSTART=\\\u0026#34;TCP\\\u0026#34;,\\\u0026#34;\u0026#34;+Host+\u0026#34;\\\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;); esp8266.println(getRequest); //debug(getRequest); if (esp8266.find(\u0026#34;+IPD\u0026#34;)) { if (esp8266.find(\u0026#34;\\r\\n\\r\\n\u0026#34;)) { sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); } } } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean succes = true; esp8266.setTimeout(5000); succes \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;); esp8266.setTimeout(1000); if (configStation(SSID, PASSWORD)) { succes \u0026amp;= true; debug(\u0026#34;WLAN OK\u0026#34;); debug(\u0026#34;IP:\u0026#34;); debug(sendCom(\u0026#34;AT+CIFSR\u0026#34;)); } else { succes \u0026amp;= false; } //shorter Timeout for faster wrong UPD-Comands handling succes \u0026amp;= sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;); succes \u0026amp;= sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;); return succes; } boolean configStation(String vSSID, String vPASSWORT) { boolean succes = true; succes \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(20000); succes \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\\\u0026#34;\u0026#34; + String(vSSID) + \u0026#34;\\\u0026#34;,\\\u0026#34;\u0026#34; + String(vPASSWORT) + \u0026#34;\\\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(1000); return succes; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;)) { return true; } else { debug(\u0026#34;ESP ERR: \u0026#34; + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { while (true) { if (esp8266.available()) Serial.write(esp8266.read()); if (Serial.available()) esp8266.write(Serial.read()); } } void debug(String Msg) { Serial.println(\u0026#34;FR:\u0026#34; + String(freeRam()) + \u0026#34; - \u0026#34; + Msg); } int freeRam() { extern int __heap_start, *__brkval; int v; return (int) \u0026amp;v - (__brkval == 0 ? (int) \u0026amp;__heap_start : (int) __brkval); } lg und danke\n2 Antworten Terra – 15.01.2016\nIch hab den Fehler inzwischen gefunden, es war wie vermutet die Variable/Konstante:\n#define AVRStopMessage \u0026ldquo;\u003c?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?\u003e\u0026lt;YAMAHA_AV cmd=\u0026quot;PUT\u0026quot;\u0026gt;\u0026lt;Main_Zone\u0026gt;\u0026lt;Power_Control\u0026gt;Standby\u0026lt;/Power_Control\u0026gt;\u0026lt;/Main_Zone\u0026gt;\u0026lt;/YAMAHA_AV\u0026gt;\u0026rdquo;\nWenn ich die Zeichenkette im obigen Programm reduziere schickt er den Webservice Call, ansonsten nicht.\nIch hab jetzt nochmal ein paar debug ausgaben verkürzt, HTTP Header entfernt und ein paar Sachen anders gelöst oder gelöscht, jetzt klappt alles :)\nWENN:\n– Ich 3x die “TV” Taste meiner Fernbedienung drücke\nDANN:\n– Soll sich mein Beamer ausschalten (durch 3x dasselbe IR Signal senden)\n– Mein Yamaha AV-Receiver ausschalten (durch Webservice Call auf lokale IP)\nZusätzlich blinkt eine LED bei jedem IR Signal das er empfängt, nur damit ich sehe ob er noch zuhört. #include #include SoftwareSerial esp8266(11, 12); // RX, TX const char* WiFiSSID = \u0026#34;*****\u0026#34;; const char* WiFiPASSWORD = \u0026#34;*****\u0026#34;; const char* AVRHost = \u0026#34;192.168.0.12\u0026#34;; const char* AVRSubpage = \u0026#34;/YamahaRemoteControl/ctrl\u0026#34;; /* Yamaha XML Messages Note! - AVROutputSetVolume has -39 hardcoded as defined volume - AVROutputHDMI1 the outputs of the Yamaha must be set via the NAMES that were assigned in the configuration. My HDMI1 output is called HTPC. Default it most likely the name is HDMI1. \u0026#34;HTPC\u0026#34; is hardcoded in the request! All of the extra ones are disabled because of space issues... */ const char* AVRStopMessage = \u0026#34;Standby\u0026#34;; /* Some IR Codes TURN BEAMER ON Value: 4CB340BF Type: 3 Length: 32 TURN BEAMER OFF Value: 4CB3748B Type: 3 Length: 32 TURN RECEIVER ON/OFF Value: 7E8154AB Type: 3 Length: 32 - And add a FFFFFFFF Type 3 Length 0 Type 2 up type 2 800F041E down type2 800F841F */ const char* sigBeamerOn = \u0026#34;4CB340BF\u0026#34;; //const char* sigBeamerOff = \u0026#34;4CB3748B\u0026#34;; //const char* sigAVReceiverOnOff = \u0026#34;7E8154AB\u0026#34;; unsigned long timenow = 1; unsigned long receivedBeamerOnSignal1 = 0; unsigned long receivedBeamerOnSignal2 = 0; unsigned long receivedBeamerOnSignal3 = 0; const long repeatTimeoutMillisThreshold = 1000; const int LED_WLAN = 13; const int GND = 2; const int RECV_PIN = 7; const int GND2 = 8; const int VCC = 9; const int LED = 5; IRrecv irrecv(RECV_PIN); IRsend irsend; decode_results results; void setup() { Serial.begin(19200); irrecv.enableIRIn(); // Start the receiver esp8266.begin(19200); //Set Pins for LED and IR Monitor pinMode(GND, OUTPUT); pinMode(GND2, OUTPUT); pinMode(VCC, OUTPUT); pinMode(LED, OUTPUT); digitalWrite (GND, LOW); digitalWrite (GND2, LOW); digitalWrite (VCC, HIGH); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); } void loop() { //Serial.println(\u0026#34;I am Alive!\u0026#34;); //IR RECEIVER SIGNAL if (irrecv.decode(\u0026amp;results)) { timenow = millis(); analyzeCode(\u0026amp;results); Serial.print(F(\u0026#34;ir\u0026#34;)); digitalWrite(LED, 1); delay(50); digitalWrite(LED, 0); irrecv.resume(); } } void analyzeCode(decode_results *results) { results-\u0026gt;decode_type; String receivedSignal; receivedSignal = String(results-\u0026gt;value, HEX); receivedSignal.toUpperCase(); // So now we are listening if someone has send the PROJECTOR ON ir signal 3 times in a row. // we have three variables to store the millisecond when the signal was received. // the next variable iteration will be populated by the system if the last signal was send less than // repeatTimeoutMillis milliseconds. // e.g. if repeatTimeoutMillis=500 it means a signal is valid repeated when the previous signal was // send not longer than half a second before! // Until it reaches the third iteration where it executes the command after 3 repeats of the signal. // In case the previous signal was send longer than repeatTimeoutMillis ago the iteration resets and // sets the newly received signal as iteration 1 to start the cycle with this signal again. // if(receivedSignal == sigBeamerOn) { Serial.println(F(\u0026#34;+\u0026#34;)); //Detected My Signal if(receivedBeamerOnSignal1 == 0) { receivedBeamerOnSignal1 = timenow; Serial.println(F(\u0026#34;1\u0026#34;)); //Set 1 } else if(receivedBeamerOnSignal1 != 0 \u0026amp;\u0026amp; receivedBeamerOnSignal2 == 0) { receivedBeamerOnSignal2 = timenow; if( receivedBeamerOnSignal2 \u0026gt; receivedBeamerOnSignal1+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; Serial.println(F(\u0026#34;r2\u0026#34;)); //Reset on 2 } else { Serial.println(F(\u0026#34;2\u0026#34;)); //Set 2 } } else if(receivedBeamerOnSignal2 != 0) { receivedBeamerOnSignal3 = timenow; if( receivedBeamerOnSignal3 \u0026gt; receivedBeamerOnSignal2+repeatTimeoutMillisThreshold ) { receivedBeamerOnSignal1 = timenow; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; Serial.println(F(\u0026#34;r3\u0026#34;)); //Reset on 3 } else { Serial.println(F(\u0026#34;3\u0026#34;)); //Set 3 delay(200); //TURN OFF PROJECTOR BEGIN Serial.println(F(\u0026#34;xb\u0026#34;)); //Turn off projector irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); delay(200); irsend.sendNEC(0x4CB3748B, 32); //reenable IR receiver after sending irrecv.enableIRIn(); //TURN OFF PROJECTOR END Serial.println(F(\u0026#34;xr\u0026#34;)); //Turn off AVR-Receiver //TURN OFF RECEIVER BEGIN manageAVR(); //TURN OFF RECEIVER END receivedBeamerOnSignal1 = 0; receivedBeamerOnSignal2 = 0; receivedBeamerOnSignal3 = 0; } } } } //--------------------------------------Yamaha AVR Functions-------------------------------------- void manageAVR() { //Usually there are more headers in the original request, but we need to save space and cannot add them String getRequest = \u0026#34;POST \u0026#34;+String(AVRSubpage)+\u0026#34; HTTP/1.1\\r\\nHost:\u0026#34;+String(AVRHost)+\u0026#34;\\r\\nContent-Length: \u0026#34; + String(strlen(AVRStopMessage)+1) + \u0026#34;\\r\\n\\r\\n\u0026#34; + String(AVRStopMessage) + \u0026#34;\\r\\n\u0026#34;; sendCom(\u0026#34;AT+CIPSTART=\\\u0026#34;TCP\\\u0026#34;,\\\u0026#34;\u0026#34;+String(AVRHost)+\u0026#34;\\\u0026#34;,80\u0026#34;, \u0026#34;OK\u0026#34;); sendCom(\u0026#34;AT+CIPSEND=\u0026#34; + String(getRequest.length() + 2), \u0026#34;\u0026gt;\u0026#34;); esp8266.println(getRequest); Serial.println(getRequest); delay(1000); if (esp8266.find(\u0026#34;+IPD\u0026#34;)) { if (esp8266.find(\u0026#34;\\r\\n\\r\\n\u0026#34;)) { sendCom(\u0026#34;AT+CIPCLOSE\u0026#34;, \u0026#34;OK\u0026#34;); } } } //-----------------------------------------Config ESP8266------------------------------------ boolean espConfig() { boolean success = true; esp8266.setTimeout(5000); success \u0026amp;= sendCom(\u0026#34;AT+RST\u0026#34;, \u0026#34;ready\u0026#34;); esp8266.setTimeout(1000); if (configStation()) { success \u0026amp;= true; Serial.println(F(\u0026#34;WLAN OK\u0026#34;)); Serial.println(F(\u0026#34;IP:\u0026#34;)); Serial.println(sendCom(\u0026#34;AT+CIFSR\u0026#34;)); } else { success \u0026amp;= false; } //shorter Timeout for faster wrong UPD-Comands handling success \u0026amp;= sendCom(\u0026#34;AT+CIPMODE=0\u0026#34;, \u0026#34;OK\u0026#34;); success \u0026amp;= sendCom(\u0026#34;AT+CIPMUX=0\u0026#34;, \u0026#34;OK\u0026#34;); return success; } boolean configStation() { boolean success = true; success \u0026amp;= (sendCom(\u0026#34;AT+CWMODE=1\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(20000); success \u0026amp;= (sendCom(\u0026#34;AT+CWJAP=\\\u0026#34;\u0026#34; + String(WiFiSSID) + \u0026#34;\\\u0026#34;,\\\u0026#34;\u0026#34; + String(WiFiPASSWORD) + \u0026#34;\\\u0026#34;\u0026#34;, \u0026#34;OK\u0026#34;)); esp8266.setTimeout(1000); return success; } //-----------------------------------------------Controll ESP----------------------------------------------------- boolean sendCom(String command, char respond[]) { esp8266.println(command); if (esp8266.findUntil(respond, \u0026#34;ERROR\u0026#34;)) { return true; } else { Serial.println(\u0026#34;ESP ERR: \u0026#34; + command); return false; } } String sendCom(String command) { esp8266.println(command); return esp8266.readString(); } //-------------------------------------------------Debug Functions------------------------------------------------------ void serialDebug() { } Anhänge:\nPuuh – 05.12.2016\nHi, ich programmiere auch gerade ein IR Modul und möchte meinen Yamaha Receiver steuern. Der Code 0x7E8154AB ist ja für Power. Wie hast du diesen Code ermittelt bzw. wo hast du diesen Code gefunden? Ich suche bislang vergeblich nach den Codes der gesamten RV300 Fernbedienung.\nViele Grüße\nPuuh\n","permalink":"https://iot.fkainka.de/forum/topic/ir-receive-send-webservice-call/","summary":"\u003cp\u003eHallo Leute,\u003c/p\u003e\n\u003cp\u003eIch versuche jetzt seit ein paar Tagen meinem NanoESP folgendes beizubringen:\u003c/p\u003e\n\u003cp\u003eWENN:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIch 3x die \u0026ldquo;TV\u0026rdquo; Taste meiner Fernbedienung drücke\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDANN:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSoll sich mein Beamer ausschalten (durch 3x dasselbe IR Signal senden)\u003c/li\u003e\n\u003cli\u003eMein Yamaha AV-Receiver ausschalten (durch Webservice Call auf lokale IP)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDas ganze funktioniert getrennt schon sehr gut, ich habe ein Script das bei dreimal drücken der taste \u0026ldquo;TV\u0026rdquo; auf meiner Fernbedienung 3x das Signal zum Beamer ausschalten sendet und einmal ein weiteres Script das beim starten den WebService Call an den Yamaha AV Receiver schickt. Beides funktioniert unabhängig tadellos.\u003c/p\u003e","title":"IR Receive, Send + Webservice Call"},{"content":"Laut ThingSpeak geht das so:\nupdateThingSpeak(\u0026quot;field1=\u0026quot;+analogPin0+\u0026quot;\u0026amp;field2=\u0026quot;+analogPin1);\nIch hab aber nicht so ganz verstanden, wie die \u0026ldquo;Subroutine\u0026rdquo; diesen POST zusammensetzt bzw. wie ich das um drei andere Sensorwerte erweitern könnte\u0026hellip;\nKann mir da jemand helfen? Danke! :)\n","permalink":"https://iot.fkainka.de/forum/topic/thingspeak-mehrere-felder-eines-channels-updaten/","summary":"\u003cp\u003eLaut ThingSpeak geht das so:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eupdateThingSpeak(\u0026quot;field1=\u0026quot;+analogPin0+\u0026quot;\u0026amp;field2=\u0026quot;+analogPin1);\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eIch hab aber nicht so ganz verstanden, wie die \u0026ldquo;Subroutine\u0026rdquo; diesen POST zusammensetzt bzw. wie ich das um drei andere Sensorwerte erweitern könnte\u0026hellip;\u003c/p\u003e\n\u003cp\u003eKann mir da jemand helfen? Danke! :)\u003c/p\u003e","title":"ThingSpeak - mehrere Felder eines Channels updaten?"},{"content":"\nDownload PDF: Pinout Pretzel Board ","permalink":"https://iot.fkainka.de/pinout-pretzel-board-nanoesp/","summary":"\u003cp\u003e\u003ca href=\"/images/2016/01/Pinout-Pretzel-Board.jpg\"\u003e\u003cimg alt=\"Pinout Pretzel Board (NanoESP)\" loading=\"lazy\" src=\"/images/2016/01/Pinout-Pretzel-Board.jpg\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"download-pdfpinout-pretzel-board\"\u003eDownload PDF: \u003ca href=\"/images/2016/01/Pinout-Pretzel-Board.pdf\"\u003ePinout Pretzel Board\u003c/a\u003e\u003c/h3\u003e","title":"Pinout NanoESP \u0026 Pretzel Board"},{"content":"Hallo,\nnachdem ich jetzt die ersten Gehversuche mit dem PretzelBoard gemacht habe stellen sich für mich noch folgende zwei Fragen:\nKommt das ESP8266 mit IP v6 zurecht? Im Adventskalender wird ja Thinkspeak angesprochen. Dabei läuft die Verbindung immer über HTTP auf Port 80. Wären HTTPS Verbindungen auch möglich? Danke für die Hilfe und viele Grüße!\nrootuser\n4 Antworten klaus – 09.01.2016\nZu 1:\nnein\nZu2:\nTheoretisch ja, praktisch vermutlich nein. Warum? Die Verbindung wird ja einfach per TCP gemacht. Dem ist es egal, ob da verschlüsselte, oder unverschlüsselte Daten gesendet werden. Du musst nur das komplette TLS-Protokoll nachbauen. Und genau da wird es vermutlich scheitern, weil der Mikrocontroller das aufgrund von Ressourcenmangel nicht kann. Was theoretisch möglich sein müsste, dass Du einen Cryptochip, der per I2C oder SPI ansprechbar ist, noch dran hängst. Das müsste dann vom Prinzip gehen, dürfte aber grauenvoll langsam und deshalb vermutlich nicht praxistauglich sein.\nrootuser – 13.01.2016\nHallo Klaus,\ndanke für die Antworten.\nIP v6 ist natürlich schade, aber momentan wohl noch zu verschmerzen.\nDas Thema HTTPS finde ich da schon deutlich gravierender. Das TLS-Protokoll nachzubauen ist wäre wohl eine Mammutaufgabe.\nGesendete Daten sollten aber trotzdem irgendwie verschlüsselt übertragen werden. Könnte man mit einem crypto-chip ggf. die zu sendenden Daten am Arduino verschlüsseln (mit einem gewissen secret) und am Server wieder entschlüsseln? Für PHP kenne ich da rncryptor, also vielleicht eine Art rncryptor für Arduino?\nViele Grüße!\nrootuser\nklaus – 14.01.2016\nIch bin kein Experte für Arduino (habe mit dem Adventskalender zum ersten Mal einen benutzt), aber Atmega habe ich schon mehr programmiert. Wenn Du einen Cryptochip nimmst, der ein Protokoll spricht, welches Du entweder im Arduino schon drin hast, oder selbst nachbaust, steht dem prinzipiell nix im Wege. Du musst dem Chip ja nur die Daten schicken und die Antwort entgegen nehmen. Wo es eng werden könnte, wäre eben die Geschwindigkeit. Die Daten rüber schaufeln dauert halt je nach Protokoll einen Moment. Ansonsten sehe ich da kein Hindernis. Ich habe mich aber noch nie mit Cryptochips beschäftigt und kann Dir somit keinen nennen. Aber irgendwie kommunizieren die ja.\nWas IPv6 angeht, so könntest Du das Protokoll höchstens nachprogrammieren. Die Firmware des ESP ist ja offen. Es gibt sogar eine Bibliothek, womit Du in der Arduino-Oberfläche eine Firmware erstellen kannst. Du musst dann halt nur das komplette Protokoll nachprogrammieren. Vom Rechenaufwand denke ich, dass es den Rahmen des Chips nicht sprengen dürfte, da es ja wohl nicht groß aufwändiger als IPv4 sein dürfte.\ngeneralovernight – 21.01.2016\nWenn du einen kompletten IPv6-Stack implementieren willst, hast du dir aber viel vorgenommen. Sowas schreibt man nicht mal eben am Wochenende. Ich sehe aber eigentlich auch wenig Sinn in dem ganzen Aufwand, denn das Pretzelboard kann mit seinem WLAN kaum irgendwo anders verbunden sein, als mit einem Accesspoint im eigenen lokalen Netz (oder einem anderen Computer in selbigem, bei einer Point-to-Point-Verbindung). Da spielt es praktisch keine Rolle, ob die Verbindung per IPv4 oder IPv6 erfolgt.\nWenn du bzw. rootuser unbedingt mit IPv6 und/oder HTTPS ins Internet raus willst, dann ist die praktikabelste Lösung m.E. den Datenverkehr vom nanoESP über einen geeigneten Router (besser gesagt, ein geeignetes Gateway) laufen zu lassen, wo ein HTTP-Proxy die Protokolle umsetzt. Sowas könnte man z.B. auch mit einem Raspi o.ä. zusammenbauen, hostapd installieren, damit er als AP fungieren kann, und dann einen geeigneten Proxy, der URL-Rewriting unterstützt. Das löst das Problem auch für mehrere nanoESPs gleich auf einen Schlag.\n","permalink":"https://iot.fkainka.de/forum/topic/https-und-ip-v6-mit-dem-esp-8266-moeglich/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003enachdem ich jetzt die ersten Gehversuche mit dem PretzelBoard gemacht habe stellen sich für mich noch folgende zwei Fragen:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eKommt das ESP8266 mit IP v6 zurecht?\u003c/li\u003e\n\u003cli\u003eIm Adventskalender wird ja Thinkspeak angesprochen. Dabei läuft die Verbindung immer über HTTP auf Port 80. Wären HTTPS Verbindungen auch möglich?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eDanke für die Hilfe und viele Grüße!\u003c/p\u003e\n\u003cp\u003erootuser\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"4-antworten\"\u003e4 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 09.01.2016\u003c/p\u003e\n\u003cp\u003eZu 1:\u003cbr\u003e\nnein\u003c/p\u003e\n\u003cp\u003eZu2:\u003cbr\u003e\nTheoretisch ja, praktisch vermutlich nein. Warum? Die Verbindung wird ja einfach per TCP gemacht. Dem ist es egal, ob da verschlüsselte, oder unverschlüsselte Daten gesendet werden. Du musst nur das komplette TLS-Protokoll nachbauen. Und genau da wird es vermutlich scheitern, weil der Mikrocontroller das aufgrund von Ressourcenmangel nicht kann. Was theoretisch möglich sein müsste, dass Du einen Cryptochip, der per I2C oder SPI ansprechbar ist, noch dran hängst. Das müsste dann vom Prinzip gehen, dürfte aber grauenvoll langsam und deshalb vermutlich nicht praxistauglich sein.\u003c/p\u003e","title":"HTTPS und IP v6 mit dem ESP 8266 möglich?"},{"content":"Hallo zusammen,\nich versuche, für das Board eine Möglichkeit zu schaffen, auf Ajax Anfragen zu reagieren. Dazu müsste ja der Anfrage-String des Clients auseinander gepflückt werden um wohl die übergebenen Variablen und die Ajax Anfragen erkennen zu können. Hat jemand das schonmal gemacht? Ich habe im Netz Anleitungen gefunden für Arduinos mit EthernetShield, das kann man aber nicht so recht verwenden..\nGruß,\nMatthias\n","permalink":"https://iot.fkainka.de/forum/topic/webserver-ajax/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich versuche, für das Board eine Möglichkeit zu schaffen, auf Ajax Anfragen zu reagieren. Dazu müsste ja der Anfrage-String des Clients auseinander gepflückt werden um wohl die übergebenen Variablen und die Ajax Anfragen erkennen zu können. Hat jemand das schonmal gemacht? Ich habe im Netz Anleitungen gefunden für Arduinos mit EthernetShield, das kann man aber nicht so recht verwenden..\u003c/p\u003e\n\u003cp\u003eGruß,\u003cbr\u003e\nMatthias\u003c/p\u003e","title":"Webserver / AJAX"},{"content":"Wenn man beim Kompilieren den Fehler \u0026ldquo;exit Status 1\u0026rdquo; bekommt hat das folgende Ursache:\nMan muss das Verzeichnis \u0026ldquo;libraries\u0026rdquo; aus dem heruntergeladenen Sketch Ordner in das Verzeichnis\n\u0026ldquo;C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\u0026rdquo;\nVERSCHIEBEN und nicht kopieren. Sonst findet er beim kompilieren die Definitionen doppelt und daher die Fehlermeldungen.\nWenn mans also schon kopiert hat dann einfach den Ordner \u0026ldquo;libraries\u0026rdquo; aus dem heruntergeladenen Sketches Ordner löschen.\nMartin Klein\n","permalink":"https://iot.fkainka.de/forum/topic/tag-9-tcp-uhrzeit/","summary":"\u003cp\u003eWenn man beim Kompilieren den Fehler \u0026ldquo;exit Status 1\u0026rdquo; bekommt hat das folgende Ursache:\u003c/p\u003e\n\u003cp\u003eMan muss das Verzeichnis \u0026ldquo;libraries\u0026rdquo; aus dem heruntergeladenen Sketch Ordner in das Verzeichnis\u003cbr\u003e\n\u0026ldquo;C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\u0026rdquo;\u003cbr\u003e\nVERSCHIEBEN und nicht kopieren. Sonst findet er beim kompilieren die Definitionen doppelt und daher die Fehlermeldungen.\u003c/p\u003e\n\u003cp\u003eWenn mans also schon kopiert hat dann einfach den Ordner \u0026ldquo;libraries\u0026rdquo; aus dem heruntergeladenen Sketches Ordner löschen.\u003c/p\u003e\n\u003cp\u003eMartin Klein\u003c/p\u003e","title":"Tag 9 - TCP-Uhrzeit"},{"content":"Hallo,\ndas Programm von Tag 20 hat funktioniert.\nJetzt wollte ich eine ander Website auswerten.\nIch habe auf Thingspeak folgende Daten geändert:\nURL: http://www.temp.fkainka.de/?city=essen\nParse String: Temp:\nIm Programm lasse ich mir die Werte anzeigen:\nSerial.println(vOnline); // Ausgabe auf Serial Monitor\nIch bekomme jedoch nicht die Temperatur angezeigt die ich im Prorogramm von Tag 10 bekomme.\nWass muß ich ändern damit ich die Website von Tag 10 mit Thingspeak auswerten kann?\nGruß Ding\n","permalink":"https://iot.fkainka.de/forum/topic/tag-20-thingspeak-andere-website-passen/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\ndas Programm von Tag 20 hat funktioniert.\u003cbr\u003e\nJetzt wollte ich eine ander Website auswerten.\u003c/p\u003e\n\u003cp\u003eIch habe auf Thingspeak folgende Daten geändert:\u003cbr\u003e\nURL: \u003ca href=\"http://www.temp.fkainka.de/?city=essen\"\u003ehttp://www.temp.fkainka.de/?city=essen\u003c/a\u003e\u003cbr\u003e\nParse String: Temp:\u003c/p\u003e\n\u003cp\u003eIm Programm lasse ich mir die Werte anzeigen:\u003cbr\u003e\nSerial.println(vOnline); // Ausgabe auf Serial Monitor\u003c/p\u003e\n\u003cp\u003eIch bekomme jedoch nicht die Temperatur angezeigt die ich im Prorogramm von Tag 10 bekomme.\u003c/p\u003e\n\u003cp\u003eWass muß ich ändern damit ich die Website von Tag 10 mit Thingspeak auswerten kann?\u003c/p\u003e","title":"Tag 20 Thingspeak andere Website Passen"},{"content":"Hallo zusammen,\nich habe noch nicht soviel Erfahrung mit dem nano esp.\nIch hatte jetzt mit dem Kalender die ersten Erfahrungen gesammelt.\nMeine Frage: Es stand geschrieben, dass ich anstatt des 9V Blocks auch eine Powerbank anschliessen kann.\nJetzt vielleicht blöde Frage, aber wie schliesse ich so eine Powerbank an?\nIch darf doch bestimmt nicht neben dem 9V Block an GND/vlt noch us. den MicroUSB verwenden, der mit dem Rechner verbunden wird?\nMuss ich dazu ein separates Kabel erwerben/bauen?\nMeine Powerbank hat einen klassischen USB Anschluss, mit dem ich ein Handy etc aufladen könnte. Die würde ich gern anstatt der 9V Batterie verwenden.\nBitte nicht lachen. Aber ich scheue davor bei den ganzen Voltangaben in den Spezi. irgendwo einen Pin falsch zu belegen und dann das Board zu brutzeln.\nvielen Dank für eine kurze Hilfestellung.\nVG \u0026amp; Guten Rutsch ins Jahr 2016\nandi\n3 Antworten klaus – 31.12.2015\nEine Powerbank hat einen USB-Anschluss. Einfach das Micro-USB-Kabel da rein stecken und schon geht es.\ngeneralovernight – 01.01.2016\nMeine Powerbank hat einen klassischen USB Anschluss, mit dem ich ein Handy etc aufladen könnte\nUnd in diesen Anschluss steckst du ein klassisches Micro-USB-Kabel, so eins wie das, mit dem du deinen PC mit dem nano verbindest. Und den Micro-USB-Stecker steckst du beim nanoESP dann auch genau da rein, wo du normalerweise deinen PC anschließt, denn wenn der nano am PC hängt brauchst du keine Powerbank - anderenfalls wäre der Batterieclip wohl nicht erst hinter dem 12. Tüchen gewesen ;-).\nIch habe hier allerdings eine Powerbank, bei der ich zuerst den Taster drücken muss und dann das USB-Kabel einstecken, weil der nano sonst hängen bleibt.\nandib – 01.01.2016\nHallo zusammen,\nDanke :-) So simpel\u0026hellip; war verunsichert. Funktioniert\u0026hellip;.\nFrohes Neues Jahr!\n","permalink":"https://iot.fkainka.de/forum/topic/stromversorgung/","summary":"\u003cp\u003eHallo zusammen,\u003cbr\u003e\nich habe noch nicht soviel Erfahrung mit dem nano esp.\u003c/p\u003e\n\u003cp\u003eIch hatte jetzt mit dem Kalender die ersten Erfahrungen gesammelt.\u003c/p\u003e\n\u003cp\u003eMeine Frage: Es stand geschrieben, dass ich anstatt des 9V Blocks auch eine Powerbank anschliessen kann.\u003c/p\u003e\n\u003cp\u003eJetzt vielleicht blöde Frage, aber wie schliesse ich so eine Powerbank an?\u003cbr\u003e\nIch darf doch bestimmt nicht neben dem 9V Block an GND/vlt noch us. den MicroUSB verwenden, der mit dem Rechner verbunden wird?\u003c/p\u003e","title":"Stromversorgung"},{"content":"Guten Morgen,\ngestern beim herumexperimentieren mit einem Sketch konnte ich plötzlich nichts mehr hochladen. Außerdem scheint das zuletzt benutze Programm nicht ausgeführt zu werden (das Board sollte sich um WLAN anmelden, das hatte es bis 1 Min zuvor auch getan).\nMeldung:\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00\n..\nAuf dem Board ist nur noch D2 und die rote LED eingeschaltet.\nReset-Versuche scheitern..\nWas tun? Hat jemand eine Idee?\nGruß,\nMatthias\n12 Antworten generalovernight – 30.12.2015\nWenn die AEG-Methode auch nicht mehr funktioniert (alles Ausschalten, Einschalten, Geht), dann hatte ich mit folgender Vorgehensweise Erfolg:\nEinen Factory Reset über die SerialConsole mit AT+RESUME mit einem kleinen Sketch die Baud-Rate wieder richtig (für den nanoESP) eingestellt. Dazu brauchst du nur ein paar Code-Zeilen aus Fabians Initialisierungsprogramm,die ich in einem anderen Kommentar bereits beschrieben habe. Wenn du das ganze in eine ansonsten leere setup Routine packst, ist die erste Zeile überflüssig. Die setup-Routine sieht dann so aus:\nvoid setup() { Serial.begin(19200); // Das ESP-Modul ist nach dem Factory-Reset auf 115200 Baud eingestellt, // also tun wir ihm den Gefallen und stellen das auch so ein ;-) esp8266.begin(115200); // ... danach sagen wir ihm aber, stell jetzt auf 19200 Baud um (und 8 bit, // 1 Stopbit, keine Parity und keinen Hardwarehandshake ein) Serial.println(esp8266.println(\u0026#34;AT+UART_DEF=19200,8,1,0,0\u0026#34;)); // und hier verabschieden wir uns vom ESP-Modul esp8266.end(); // Damit wir auch sehen, dass alles funktioniert hat, verbinden wir uns erneut // mit dem ESP, diesmal mit der \u0026#34;richtigen\u0026#34; Baud-Rate ... esp8266.begin(19200); esp8266.setTimeout(6000); // ... führen einen Reset durch ... esp8266.println(\u0026#34;AT+RST\u0026#34;); if (!esp8266.findUntil(\u0026#34;ready\u0026#34;, \u0026#34;Error\u0026#34;)) { Serial.println(\u0026#34;Error sending reset command\u0026#34;); } // ... und lassen die LED D3 leuchten digitalWrite(LED_BUILTIN, HIGH); } Nachtrag:\netwas komfortabler wird das ganze noch mit folgender loop-Routine. Sie lässt die D3 LED blinken und erlaubt die Eingabe von AT-Kommandos in der SerialConsole.\nvoid loop() { // Als \u0026#34;static\u0026#34; deklariert bleibt der Wert erhalten, auch wenn die // Funktion verlassen wir. Sie hat daher beim nächsten Aufruf denselben // Wert wie am Ende dieser Routine. Außerdem wird die Initialisierung (der // Code rechts vom \u0026#34;=\u0026#34;) nur beim ersten Aufruf der Funktion ausgeführt. // Eine globale Variable ist so überflüssig. static unsigned int i = 0; // Für die D3 LED ist standardmäßig das Makro LED_BUILTIN definiert // Das % ist der Modulo Operator in C. \u0026#34;i++ % 2\u0026#34; leifert daher immer // abwechselnd 1 und 0; HIGH und LOW sind standarmäßig definierte Makros // für die entsprechenden Zustände der Ausgänge. // Der Code \u0026#34;x ? a : b\u0026#34; gibt a zurück, wenn x wahr ist (ungleich 0) und sonst b digitalWrite(LED_BUILTIN, i++ % 2 ? HIGH : LOW); if (esp8266.available()) { Serial.write(esp8266.read()); } else if (Serial.available()) { esp8266.write(Serial.read()); } else { delay(300); } } HTH\nmatten – 30.12.2015\nAber ich sehe das richtig - nach dem AT+RESTORE müsste das hochladen ohne Fehler ablaufen?\nIch bekomme aber noch immer:\navrdude: stk500_recv(): programmer is not responding\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00\nSomit kann ich keinen Sketch hochladen.\nklaus – 31.12.2015\nDas ist klar. Bei Dir ist der Mikrocontroller nicht mehr erreichbar, das was generalovernight gepostet hat, ist wenn Du das WLAN-Modul nicht mehr erreichen kannst.\nProbier mal das hier:\nhttp://iot.fkainka.de/forum/topic/kein-sketch-upload-mehr-moeglich-avrdude-stk500_recv/page/2\nIch vermute mal das hilft Die eher weiter\nmatten – 02.01.2016\nUnd falls das nicht klappt? Was kann man dann noch tun?\nklaus – 02.01.2016\nHat das auch nicht funktioniert? Dann bleibt Dir wohl nur noch übrig, den ISP-Stecker aufzulöten und mit einem Programmer direkt an den Mikrocontroller zu gehen, damit Du den Bootloader neu schreiben kannst. Sollte der Programmer den Chip nicht erreichen können, ist er wohl futsch.\nmatten – 03.01.2016\nIch habe versucht, mit einem anderen Arduino den Bootloader zu schreiben. Auch das klappt nicht.. Heißt das, dass das Board nun defekt ist? :-(\nklaus – 03.01.2016\nWenn Du den Arduino richtig angeschlossen hattest, vermute ich mal fast, ja. Ich habe zwar mal eine Anleitung gesehen, wie man einen Arduino als Programmer verwenden kann, habe es aber nicht probiert. Ich habe einen richtigen Programmer.\nAls letzten Versuch könntest Du höchstens versuchen, einen richtigen Programmer zu verwenden.\nWas mir auch schon mal als letzter Versuch gelungen war, ist das Flashen per HV-Programming. Zum Einen brauchst Du dafür aber einen passenden Programmer (ich habe einen AVRdragon) zum anderen weiß ich nicht, ob das auf der Platine überhaupt geht. Du könntest es höchstens versuchen. Derzeit funktioniert er ja auch nicht.\nAber als Warnung sei gesagt: Es könnte eventuell sein, dass Du damit was auf der Platine zerschießt! HV steht für (High Voltage), da wird also für einen ganz kurzen Moment eine zu hohe Spannung angelegt. Der Atmel verträgt das, wie das mit anderen Komponenten aussieht, weiß ich nicht. Wäre also auf eigene Gefahr.\nmatten – 04.01.2016\nHabe niemanden, der einen Programmer hat. Werde also mal gucken ob Conrad mir den auf Garantie tauscht..\nDanke für die Hilfe.\nriegler93 – 14.01.2016\nSchon gefragt bei Conrad?\nGibt es eine Möglichkeit, dass das Gerät getauscht wird?\nmatten – 17.01.2016\nWurde ohne Probleme getauscht!\nklaus – 18.01.2016\nDas ist doch schön zu hören.\nHatte ich beim Adventskalender 2014 auch keine Probleme. Da war der Chip schon von vornherein defekt und der wurde auch im Nachhinein getauscht.\nriegler93 – 20.01.2016\nRechnung ausgegraben, mit dem µC zum nächstgelegenen Megastore gefahren -\u0026gt; problemloser Umtausch :)\nDanke Euch und danke Conrad!!!\n","permalink":"https://iot.fkainka.de/forum/topic/kann-nichts-mehr-hochladen-und-das-board-reagiert-nicht-mehr/","summary":"\u003cp\u003eGuten Morgen,\u003c/p\u003e\n\u003cp\u003egestern beim herumexperimentieren mit einem Sketch konnte ich plötzlich nichts mehr hochladen. Außerdem scheint das zuletzt benutze Programm nicht ausgeführt zu werden (das Board sollte sich um WLAN anmelden, das hatte es bis 1 Min zuvor auch getan).\u003c/p\u003e\n\u003cp\u003eMeldung:\u003c/p\u003e\n\u003cp\u003eavrdude: stk500_recv(): programmer is not responding\u003cbr\u003e\navrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00\u003cbr\u003e\navrdude: stk500_recv(): programmer is not responding\u003cbr\u003e\navrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00\u003cbr\u003e\navrdude: stk500_recv(): programmer is not responding\u003cbr\u003e\navrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00\u003cbr\u003e\n..\u003c/p\u003e","title":"Kann nichts mehr hochladen und das Board reagiert nicht mehr"},{"content":"Ich habe jetzt mal den Stromverbrauch des nanoESP ohne äußere Lasten gemessen. Bei einer USB-Stromversorgung frisst der kleine 160 mA, also ca. 0,8 W, was ja für ein IoT-Device ganz schön gierig ist (der will wohl noch wachsen), bei dem die Batterielaufzeit üblicherweise eher in Jahren gemessen wird. Da stellt sich die Frage, wie man beim nanoESP im Betrieb Strom sparen kann. Eine erste Idee hatte ich bereits bei den Kalender-Programmen umgesetzt, nämlich ans Ende der loop-Funktion einen passenden delay eingebaut, damit die Schleife nicht unnötig oft durchlaufen wird und der Prozessor sowie die Serielle Schnittstelle zwischendurch mal Pause hat - habe da aber noch nicht gemessen, ob es den Stromverbrauch signifikant beeinflusst.\nDie nächste Idee war, das WLAN-Modul abzuschalten, wenn es nicht benötigt wird. Wie man hier lesen kann, soll das ja allein 100 mA verbraten. Mit einem Sketch, der gar kein WLAN nutzt, habe ich aber ebenfalls 140 bis 150 mA gemessen. Wäre also die Frage 1, ob man das Modul bei Nichtgebrauch irgendwie abschalten kann.\nDesweitern liefert die Doku des ESP-Moduls und der AT-Befehle einen Hinweis auf einen Deep-Sleep-Modus, den man mit AT-GSLP aktivieren kann, sodass sich das Modul für eine definierte Zeit schlafen legt. Wäre ja eine prima Alternative für einen delay-Aufruf. Allerdings steht in der Doku auch, dass die Hardware das unterstützen muss, was nach dem ersten Augenschein nicht der Fall ist. Frage 2 also: kann man den Deep-Sleep-Modus irgendwie nutzen?\n\u0026hellip; und vielleicht bekommt der nanoESP 2.0 ja ein stromsparenderes Hardwaredesign :-)\n9 Antworten klaus – 30.12.2015\nDu musst zuerst bei Deinen Versuchen dran denken, dass der NanoESP aus 2 unabhängigen Teilen besteht:\nDer Mikrocontroller Das ESP8266-Modul Wenn Du nun den Mikrocontroller in den Schlafmodus schickst, läuft das ESP-Modul natürlich weiter. Genauso ist es umgekehrt. Du musst also wenn schon beide in den Schlafmodus schicken.\nDas ESP-Modul frisst halt etwas Strom, es sendet ja auch. Ein Sender braucht nun mal seine Energie. Da wird sich auch in Zukunft nix dran ändern. Du kannst aber aufs ESP-Modul die neueste Firmware schreiben. Mit dieser kannst Du die Sendeleistung einstellen. Damit kannst Du auch Strom sparen. Natürlich sinkt dabei die Reichweite.\nLeider gibt es keine Signalleitung zwischen Atmel und ESP, mit der man eine Signalisierung oder ein Wakeup realisieren könnte.\ngeneralovernight – 30.12.2015\nDu musst zuerst bei Deinen Versuchen dran denken, dass der NanoESP aus 2 unabhängigen Teilen besteht\nDas ist schon klar, aber\nist das ESP-Modul anscheinend (und wohl nicht nur scheinbar) der größte Stromfresser auf dem Board, und wenn es vernünftig programmiert ist (und das scheint der Fall zu sein), wartet der Atmel darauf, dass der ESP wieder aufwacht. Er ist dann zwar nicht im Schlafmodus, führt aber höchstens noch Interruptroutinen aus. Das ESP-Modul braucht im Deep-Sleep aber fast keinen Strom, das wäre also eine sehr attraktive Sache um den Stomverbrauch zu senken. klaus – 31.12.2015\nKlar ist das ESP der größte Stromfresser, ist ja auch ein Sender drin. Aber ohne eine Verbindung zum Mikrocontroller kannst Du das Modul nicht wieder aufwecken. Ein automatisches Aufwecken wäre in den meisten Fällen nicht praktisch. Je nach Projekt wäre es meistens aber eher sinnvoll, wenn Du das Modul schlafen legen kannst und wenn es wieder gebraucht wird aufzuwecken. Wenn es nach einer Weile von alleine aufwacht, dann verbraucht es unnötig Strom, auch wenn Du es dann wieder schlafen legst. Aber das ist einfach zu viel Aufwand, immer nachzuschauen, ob das Modul wieder da ist. Einfach eine Wakeup-Leitung wäre da viel sinnvoller.\nAber das hat sich eh erledigt, weil sich das Modul nämlich scheinbar nicht wieder aus dem Schlaf erwachen lässt. Mir ist es jedenfalls nicht gelungen, auch mit den einzelnen Mini-Modulen die ich noch habe nicht.\nDas ESP-Modul braucht etwa 110mA. Bei mir war es 150mA mit und 40mA ohne Modul (Sleep-Modus). Beim einzelnen Modul ebenfalls (RS232-Konverter + ESP-Modul) 140mA mit und 30mA ohne Modul. Sendeleistung habe ich jetzt noch nicht probiert.\ngeneralovernight – 31.12.2015\nSorry, du scheinst noch nicht verstanden zu haben, was ich meinte. Schau dir mal die Doku zum Kommando AT+GSLP an. Der ESP8266 braucht nicht aufgeweckt zu werden, im Gegenteil er weckt sich selbst auf, wenn das entsprechend verdrahtet ist. Im Deep-Sleep läuft nur noch die RTC des ESP und versucht nach der mit AT+GSLP angegebenen Zeit das Modul wieder aufzwecken (das ist genau die Funktionalität, die ich gesucht habe).\nWenn ich die Kürzel richtig interpretiere wird dazu ein Reset-Pin auf high gelegt. Dieser muss aber wohl geeignet verdrahtet sein, damit das ganze funktioniert, und das ist die eigentliche Frage:\nIst eine entsprechende Verschaltung auf dem nanoESP vorhanden, damit das AT+GSLP funktionieren kann?\nNachtrag:\nDie MCU dürfte nach meiner Interpretation auf die Beendigung des AT+GSLP Kommandos warten, tut dann also auch nichts, außer evtl. Interruptroutinen auszuführen - und nach einem ersten Test zu urteilen, scheint das auch der Fall zu sein.\nklaus – 31.12.2015\nDoch, das habe ich schon verstanden. Aber Du hast anscheinend nicht verstanden, was ich gemeint habe.\nMal ein Beispiel:\nDu baust ein Gerät, was auf Knopfdruck eine Nachricht z.B. an Thingspeak versenden soll. Jetzt wo keine Wakeup-Leitung da ist, läuft das so ab:\nDu schickst das ESP-Modul für 5 Sekunden in den Tiefschlaf, anschließend den Mikrocontroller auch (Taster mit Interrupt verdrahtet zum vorzeitigen Aufwecken). Nach 5 Sekunden wachen beide auf. Der Mikrocontroller initialisiert die serielle Verbindung und schickt wieder beide für 5 Sekunden in den Tiefschlaf. Beide haben aber zwischendurch mal Strom verbraucht, weil sie kurzzeitig wach waren. Gerade das ESP-Modul hat unnötig Strom verbraucht, weil es ja gar nicht benötigt wurde.\nHast Du eine Wakeup-Leitung, sieht das so aus:\nDu schickst das ESP-Modul und den Mikrocontroller in den dauerhaften Tiefschlaf. Der Tastendruck weckt nun den Mikrocontroller wieder auf, dieser (oder auch der Taster direkt) weckt nun das ESP-Modul auf, schickt seine Nachricht und legt wieder beide schlafen. Beide verbrauchen also nicht unnötig Strom. Gerade bei 9V-Blöcken, die ja eh nicht viel Energie haben, ist das ein sehr wichtiger Punkt. Und ich dachte, genau das wolltest Du erreichen. Also solltest Du für jeden Stromsparmechanismus dankbar sein. Das bekommst Du mit Tiefschlaf auf Zeit nie hin.\ngeneralovernight – 01.01.2016\nWas hast du verstanden? Du reitest fröhlich weiter auf deiner Wakeup-Leitung herum, obwohl ich bereits darauf hingewiesen habe, dass diese Funktionalität im ESP8266 offensichtlich enthalten ist, die Frage ist nur, ob sie auch vom nanoESP-Board unterstützt wird. Auch schon in deiner ersten Antwort schreibst du davon, die MCU in den Schlaf zu schicken, dabei habe ich explizit vom ESP geschrieben. In deinem letzten Kommentar dann \u0026ldquo;ESP und Mikrocontroller in den Tiefschlaf\u0026rdquo; davon steht auch nichts in meinen Kommentaren. Ich werde jetzt nicht nocheinmal wiederkäuen, was ich meine.\nIch habe eine klare Frage gestellt, ob das Board des nanoESP so gestaltet ist, dass der AT+GSLP Befehl tatsächlich praktisch nutzbar ist. Diese Frage müssten diejenigen, die den nanoESP entworfen haben wohl leicht beantworten können. Da von dieser Seite aber nichts kommt, sondern nur deine Nebelkerzen, gehe ich inzwischen davon aus, dass der nanoESP als reines Lern-, Spiel, und Bastelmodul entwickelt wurde. In dieser Hinsicht ist das Teil ja auch ganz hervorragend, aber für praktische Anwendungen muss man sich wohl doch eine andere Hardware suchen.\nklaus – 01.01.2016\nAber das hat sich eh erledigt, weil sich das Modul nämlich scheinbar nicht wieder aus dem Schlaf erwachen lässt. Mir ist es jedenfalls nicht gelungen, auch mit den einzelnen Mini-Modulen die ich noch habe nicht.\nHatte ich alles schon lange geschrieben.\ngeneralovernight – 02.01.2016\nSchön dass du dich jetzt schon selbst zitierst ;-) \u0026hellip; und auch, dass sich das Modul nur scheinbar nicht wieder \u0026ldquo;erwachen\u0026rdquo; lässt, denn das heißt, es lässt sich wieder aufwecken, es sieht bloss nicht so aus ;-)\nVermutlich ist das aber bloss ein Rechtschreibfehler und die für das Selbstaufwecken des ESP8266 nötigen Leitungen sind auf der Platine tatsächlich nicht verdrahtet - schade, würde den praktischen Nutzwert des Boards deutlich erhöhen.\nklaus – 03.01.2016\nWäre tatsächlich praktisch gewesen. Vielleicht eine Idee an die Entwickler, dies in Zukünftigen Versionen zu implementieren.\n","permalink":"https://iot.fkainka.de/forum/topic/stromverbrauch/","summary":"\u003cp\u003eIch habe jetzt mal den Stromverbrauch des nanoESP ohne äußere Lasten gemessen. Bei einer USB-Stromversorgung frisst der kleine 160 mA, also ca. 0,8 W, was ja für ein IoT-Device ganz schön gierig ist (der will wohl noch wachsen), bei dem die Batterielaufzeit üblicherweise eher in Jahren gemessen wird. Da stellt sich die Frage, wie man beim nanoESP im Betrieb Strom sparen kann. Eine erste Idee hatte ich bereits bei den Kalender-Programmen umgesetzt, nämlich ans Ende der loop-Funktion einen passenden delay eingebaut, damit die Schleife nicht unnötig oft durchlaufen wird und der Prozessor sowie die Serielle Schnittstelle zwischendurch mal Pause hat - habe da aber noch nicht gemessen, ob es den Stromverbrauch signifikant beeinflusst.\u003c/p\u003e","title":"Stromverbrauch"},{"content":"Habe wohl zum falschen Zeitpunkt auf den Upload-Button gedrückt, anscheinend gerade als das Board neu startete. Zuerst fiel mir auf, dass die SerialConsole zwar grau, aber nicht ganz leer wer. Oben standen in grauer Schrift die ersten anderthalb Zeilen, die normalerseise beim Starten des Boards kommen. Der Programm-Upload funktionierte zwar, aber alle AT-Kommandos kamen mit Fehler zurück. Manuell eingegebene AT-Kommandos liefern Buchstabensalat, wei bei einer falsch eingestellten Baud-Rate, ist aber alles richtig eingestellt. Das Board reagiert auch noch auf AT-Kommandos.\nEs lassen sich auch weiterhin Programme hochladen. Ich habe einen Minimal-Sketch geschrieben, der mir die D3_LED blinken lässt - funktioniert einwandfrei. Nur die Kommunikation mit dem ESP funtkoniert nicht mehr richtig, sodass ich im Programm keine AT-Kommandos mehr nutzen kann.\nLässt sich der Speicher irgendiwe zurücksetzen?\n(Den Tipp von kusmi im Forum \u0026ldquo;Adventskalender\u0026rdquo; habe ich schon erfolglos probiert. [http://iot.fkainka.de/forum/topic/kein-sketch-upload-mehr-moeglich-avrdude-stk500_recv/page/2/#post-959])\n11 Antworten klaus – 27.12.2015\nIch vermute, aus irgendeinem Grund ist die Baudrate des ESP-Moduls verstellt. Das NanoESP bestelt ja aus 2 Modulen, einmal dem Arduino Nano (den Du erfolgreich getestet hast) und dem ESP8266. Der Arduino ist noch erreichbar, aber der ESP scheint eine andere Baudrate zu haben. Ich weiß nicht, welche Baudraten der Arduino noch zuverlässig kann. Eventuell ist Dein Board auf eine der beiden Standardeinstellungen zurück gegangen. Das sind entweder 9600, oder 115200. 9600 kann der Arduino bestimmt, die hohe weiß ich nicht. Du müsstest also versuchen, die Baudrate im Sketch zu verändern und das Modul zu erreichen. Klappt das alles nicht, müsstest Du über den 8-poligen Anschluss seitlich direkt an das Modul gehen. Dann könntest Du zur Not auch neu flashen.\nDie Belegung des einzelnen Moduls habe ich mal angehängt.\nDie Vorgehensweise zu flashen findest Du unter:\nhttp://www.xess.com/blog/esp8266-reflash/\nDas NanoESP nutzt die Firmware mit dem AT-Befehlssatz 0.22. Also nicht die neueste Firmware nehmen, die könnte mit den Projekten nicht gehen.\nAnhänge:\nklaus – 27.12.2015\nNachtrag:\nWenn Du an den Anschluss auf dem Board gehst, denke bitte dran, dass das Modul mit 3,3V arbeitet. Du musst also einen USB-TTL-Adapter mit 3,3V Signalspannung nehmen, sonst schrottest Du alles.\ngeneralovernight – 27.12.2015\nVielen Dank für die Antwort. Nachdem ich noch etwas im Forum herumgeforscht hatte, konnte ich das Board wieder zu korrekter Funktion überreden. Dazu habe ich zuerst mit AT+RESTORE einen Factory-Reset durchgeführt und anschließend mit ein paar Zeilen aus Fabians Initialisierungsprogramm die Baud-Rate wieder richtig eingestellt:\nesp8266.end(); esp8266.begin(115200); sendCom(\u0026quot;AT+UART_DEF=19200,8,1,0,0\u0026quot;, \u0026quot;OK\u0026quot;); esp8266.end(); esp8266.begin(19200);\nDabei habe ich dann auch die \u0026ldquo;geheime\u0026rdquo; Webseite entdeckt, die man auf neu gekauften nanoESPs vorfindet. Die Ausgabe der Zahl der glücklichen Finder hat bei mir allerdings nicht funktioniert, da stand nur \u0026ldquo;the \u0026rsquo;th \u0026hellip;\u0026rdquo;\nklaus – 27.12.2015\nDas ist aber komisch. Die \u0026ldquo;geheime\u0026rdquo; Webseite war doch auf dem Atmel, nicht auf dem ESP. Aber ich kann sie mir auch wieder jederzeit ansehen, hab nämlich vor der ersten Verwendung ein Backup gemacht.\nFreut mich, dass ich Dir helfen konnte.\ngeneralovernight – 28.12.2015\nNein, auf dem Board hatte ich die Seite schon vorher gefunden, was ich meinte war der Quellcode der Seite in Fabians Initialisierungsprogramm - von wo sie augenscheinlich ihren Weg auf die nanoESP-Boards findet.\nAbgesehen davon würde mich mal interessieren, wie du das aktuelle Programm wieder ausliest. Ich hatte zwar schon vermutet, dass das irgendwie gehen müsste, aber bisher zuviel andere Dinge auf der Liste, die mir wichtiger waren.\nklaus – 28.12.2015\nNein, auf dem Board hatte ich die Seite schon vorher gefunden, was ich meinte war der Quellcode der Seite in Fabians Initialisierungsprogramm – von wo sie augenscheinlich ihren Weg auf die nanoESP-Boards findet.\nJetzt hast Du mich aber neugierig gemacht. Wo findet man einen Quellcode von Fabian und welches Initialisierungsprogramm?\nIch habe mir den ISP-Stecker aufs Board gelötet und den Flash ausgelesen. Damit habe ich den kompletten Speicherinhalt im Auslieferungszustand gesichert, incl. des Bootloaders.\ngeneralovernight – 30.12.2015\nAchso, na ich hatte auf eine Software-Lösung gehofft ;-)\nDas Programm habe ich über einen Link hier im Forum gefunden, den ich aber leider nicht gespeichert habe und jetzt nicht wiederfinde. Es war irgendeine Diskussion irgendeine Diskussion um ein Board aus dem Adventskalender, das nicht mehr funktionierte. Das Archiv heiß ConfigTest2.zip.\nklaus – 31.12.2015\nKannst Du das hier mal hoch laden? Würde mich auch mal interessieren.\ngeneralovernight – 02.01.2016\nhabe den Link wiedergefunden: ConfigTest2\nklaus – 03.01.2016\nDanke für den Link!\nIch habe zwar keine Ahnung, wie man da über \u0026ldquo;normale\u0026rdquo; Wege hin kommt, aber das sind nochmal insgesamt interessante Informationen.\ngeneralovernight – 06.01.2016\nWie man da \u0026ldquo;normal\u0026rdquo; hinkommt steht in oben in meinem Kommentar. Welche Diskussion das war habe ich mir aber definitiv nicht gemerkt und sehe auch zu wenig Sinn darin, sie wieder rauszusuchen ;-)\n","permalink":"https://iot.fkainka.de/forum/topic/upload-zur-falschen-zeit-speicher-zerschossen-abhilfe/","summary":"\u003cp\u003eHabe wohl zum falschen Zeitpunkt auf den Upload-Button gedrückt, anscheinend gerade als das Board neu startete. Zuerst fiel mir auf, dass die SerialConsole zwar grau, aber nicht ganz leer wer. Oben standen in grauer Schrift die ersten anderthalb Zeilen, die normalerseise beim Starten des Boards kommen. Der Programm-Upload funktionierte zwar, aber alle AT-Kommandos kamen mit Fehler zurück. Manuell eingegebene AT-Kommandos liefern Buchstabensalat, wei bei einer falsch eingestellten Baud-Rate, ist aber alles richtig eingestellt. Das Board reagiert auch noch auf AT-Kommandos.\u003c/p\u003e","title":"Upload zur falschen Zeit - Speicher zerschossen - Abhilfe?"},{"content":"Das Abschlussprojekt besteht aus mehreren Elementen, die Sie im Laufe der Adventszeit kennengelernt haben. Eine Funktion ist die am vorrangegangenen Tag vorgestellte Cheerlights-Funktion. Sie können weiterhin die aktuelle Farbe des Cheerlights-Projekts empfangen und mit der RGB-LED darstellen. Außerdem wird das Board zur Langzeitüberwachung der Temperatur eingesetzt. Gleichzeitig kann das Board einen Alarmton ausgeben, wenn die Temperatur einen bestimmten Wert überschreitet, z.B. weil ein Feuer entsteht. Und als letzte Funktion kann das Board als Weihnachtsglocke eingesetzt werden, indem es über ein zeitgesteuertes TalkBack-Kommando dazu gebracht wird, den Song Jingle Bells zu spielen. Alles in allem ist das heutige Projekt ein Allrounder für den Weihnachtsbaum.\nHinter dem heutigen Türchen befindet sich noch einmal ein recht spannender Sensor, nämlich einen NTC (Negative Temperature Coefficient). Dieser verändert seinen Widerstand in Abhängigkeit von der Temperatur. Es lohnt sich also durchaus auch ein paar der älteren Versuche neu aufzurollen und diesmal den Tempertursensor zu verwenden. Der heutige Aufbau besteht aus recht vielen Elementen. Auch das Poti kommt erneut zum Einsatz, um eine Feinabstimmung am NTC vornehmen zu können. Alternativ können Sie auch den 10-kΩ-Widerstand einsetzen, dann ist allerdings keine Feinabstimmung möglich.\nDer Aufbau des letzten Versuchs Das Programm: Day24_Christmas\nDas finale Programm muss nun die vielen verschiedenen Elemente miteinander vereinen. Dabei kommt der ThingSpeak Seite wieder eine große Bedeutung zu. Unter anderem wird diesmal auch die Schwellwert-Überwachung des NTCs von einer ThingSpeak App übernommen. Von dort werden dann auch die Alarmaktionen ausgeführt, nämlich einmal eine Twitter Nachricht gesendet und ein TalkBack-Kommando eingefügt, welches auf dem Controller den Alarm auslöst. Über die Time-Control App der ThingSpeak Seite können Sie außerdem einen Zeitpunkt festlegen, an dem mit dem Jingle Bells Song die Familie zum Tannenbaum gerufen wird oder Sie am nächsten Tag von der Musik geweckt werden möchten.\nIm ersten Schritt müssen Sie auf der ThingSpeak Seite einen neuen Kanal erstellen. Diesen können Sie beispielweise FireAlarm nennen. Das field1 bekommt dann die Bezeichnung Temp. Unter API-Keys finden Sie dann den ersten Schlüssel, den Sie in für ThingSpeakKEY eintragen müssen. Damit wäre schon mal die Übertragung des aktuellen Temperaturwerts gewährleistet.\nAls zweiten Schritt sollten Sie nun ein neues TalkBack-Element erstellen. Als Namen können Sie beispielsweise Alarms verwenden. Außerdem können Sie die Kommandos im Channel FireAlarm loggen lassen. Den API-Key müssen Sie nun hinter TalkBackKEY und die ID hinter TalkBackID eintragen. Nun können Sie auch schon Kommandos an das Board senden. Sie können Kommandos auch manuell eintragen indem Sie in der TalkBack-Übersicht des Alarm-Channels auf Add a new Command klicken und dort unter Command String entweder Alarm oder Jingle eintragen. Eine Angabe der Position ist nicht nötig, da der Befehl automatisch an erster Stelle gespeichert wird. Sie können das Programm nun schon uploaden und testen, ob die Übertragung des aktuellen Temperaturwertes funktioniert und ob das Board die Kommandos ausführt. An dieser Stelle lohnt es sich auch, mit einen Raumthermometer den NTC über das Poti zu kalibrieren.\nIm Grunde wäre dies nun schon ein vollwertiges Projekt aber es fehlen noch die Bonus-Funktionen. Diese müssen allerdings nicht mehr im Programm vorgenommen werden, sondern nur noch auf der ThingSpeak Seite. Dazu gehen Sie auf Apps und wählen anschließend React aus. Mit React kann auf bestimmte Ereignisse reagiert werden. Erstellen Sie also mit Klick auf New React eine neue React-Funktion und geben folgende Werte ein:\nName: FireDetect1\nCondition Type: Numeric\nTest Frequency: On Data Insertion\nCondition: If Channel\nFireAlarm\nfield 1 (Temp)\nis great than\n40\nAction: ThingTweet\nthen tweet:\nFire Alarm on the #NanoESP! Temp: %%trigger%%C #ThingSpeak #IoT\nUsing Twitter Account\n[Twitter Account]\nOptions: Run action only the first time the condition is met\nThingSpeak React mit Twitter-Anbindung ThingSpeak React mit ThingHTTP-Anbindung Mit Save React speichern Sie die Einstellungen. Damit ist der erste Schritt der Überwachung bereits getan. Wenn der Wert überschritten wird, sendet ThingSpeak über Ihren Account eine Twitter-Nachricht gesendet. Für den zweiten Schritt, dem Einfügen des Alarm-Kommandos müssen Sie nun noch etwas tiefer in die Trickkiste greifen, denn die Funktion wird nicht automatisch unterstützt. Was unterstütz wird ist aber ThingHTTP. Also klicken Sie auf Apps und dann auf ThingHTTP. Dort erstellen Sie ein neues Element und stellen Folgendes ein:\nName: Alarm\nURL: [https://api.thingspeak.com/talkbacks/YOUR TALKBACK ID]/commands\nMethod: POST\nHTTP Version: 1.1\nHost: api.thingspeak.com\nHeaders:\nBody: api_key=[YOUR TALKBACK ID]\u0026amp;command_string=Alarm\u0026amp;position=1\nDie TalkBack-Einstellungen Achten Sie darauf, dass Sie die [YOUR TALKBACK ID] und [YOUR TALKBACK KEY] in der URL und im Body-Part durch Ihre TalkBack ID und KEY ersetzen. Nun können Sie einen weiteres React-Element erstellen, welches die gleichen Parameter wie das erste enthält, nur mit der Änderung, dass Sie bei Action nun ThingHTTP und dort den Punkt Alarm auswählen. Damit haben Sie nun sichergestellt, dass ein Alarm ertönt, wenn der kritische Wert überschritten wird.\nAls letzte Funktion können Sie nun noch ein zeitgesteuertes Jingle Bells einrichten. Dazu klicken Sie unter Apps auf TimeControl und erstellen ein neues Element, z.B. mit dem Namen Bell. Dort nehmen Sie nun die folgenden Einstellungen vor:\nName: Presents\nFrequency: One Time\nTime Zone: Berlin\nRun At: 2015-24-12 7:00 pm\nFuzzy Time: ± 0 minutes\nTalkBack: Alarms, add command: Jingle\nDie TimeControll-Einstellungen Für einen ersten Test empfiehlt es sich, einen Zeitpunkt in ein paar Minuten zu wählen. Wenn dies funktioniert hat, kann man den richtigen Zeitpunkt einstellen.\nAlles in allem kann man nun noch das Projekt mit dem 9V-Batterie-Clip oder auch einer Akku-Bank mobil machen. Wenn das Board nun im Tannenbaum versteckt wird, so dass nur die RGB-LED an passender Stelle aus dem Geäst lugt, wird das Ambiente auch nicht unnötig gestört. Und pünktlich um 19.00 werden alle Familienmittglieder durch die Klänge von Jingle Bells zum Baum gerufen.\nIch wünsche ein frohes Weihnachtsfest!\n","permalink":"https://iot.fkainka.de/day-24/","summary":"\u003cp\u003eDas Abschlussprojekt besteht aus mehreren Elementen, die Sie im Laufe der Adventszeit kennengelernt haben. Eine Funktion ist die am vorrangegangenen Tag vorgestellte Cheerlights-Funktion. Sie können weiterhin die aktuelle Farbe des Cheerlights-Projekts empfangen und mit der RGB-LED darstellen. Außerdem wird das Board zur Langzeitüberwachung der Temperatur eingesetzt. Gleichzeitig kann das Board einen Alarmton ausgeben, wenn die Temperatur einen bestimmten Wert überschreitet, z.B. weil ein Feuer entsteht. Und als letzte Funktion kann das Board als Weihnachtsglocke eingesetzt werden, indem es über ein zeitgesteuertes TalkBack-Kommando dazu gebracht wird, den Song Jingle Bells zu spielen. Alles in allem ist das heutige Projekt ein Allrounder für den Weihnachtsbaum.\u003c/p\u003e","title":"Tag 24: Feuermelder für den Weihnachtsbaum"},{"content":"Der heutige Versuch basiert auf einem Projekt von Hans Scharler, das sich Cheerlights nennt. Die Idee: weltweit vernetzte Lichter, die sich simultan über Twitter Kommandos steuern lassen. Eine gutes Beispiel, dass die Welt mit dem Internet immer enger zusammenwächst.\nHinter dem heutigen Türchen befindet sich ein viertes Verlängerungskabel mit dem sich nun auch endlich die RGB-Led abseits vom Board platzieren lässt. Das kann besonders praktisch sein, wenn Sie beispielsweise das Board im Weihnachtsbaum verstecken wollen während die RGB-LED die Krone des Baums schmückt.\nDie RGB-Led auf dem Steckboard an den Pins D3, D5 und D6 Das Programm: Day23_CheerLights\nFür das heutige Programm müssen Sie ausnahmsweise keine eigenen ThingSpeak Änderungen vornehmen, denn das Projekt hat einen öffentlichen Kanal, den Sie unter dem Link\nhttps://thingspeak.com/channels/1417\nfinden. Auf der Seite finden Sie außerdem immer die aktuelle Farbe angezeigt und weitere Informationen über das Projekt.\nDie öffentliche ThingSpeak Seite für das Cheerlights-Projekt Für das Programm ist zudem die Crossfade-Library von Radek Wierzbicki notwendig (Quelle: https://github.com/radekw/Arduino/tree/5f24ce7c8db9dfbb5252b59824c3217d851b3a3c). Aus praktischen Gründen ist eine Kopie der verwendeten Library-Version im Sketchordner enthalten. Diese muss in den libraries-Ordner Ihres Sketchbook-Ordners kopiert werden. Die Library ermöglicht es schnell und einfach Farben zu definieren und sorgt zusätzlich dafür, dass die LEDs langsam in eine andere Farbe überblenden (fade genannt).\nWenn Sie nun das Programm uploaden, wird nach ein paar Sekunden die aktuelle Farbe von der LED angezeigt. Sie können nun eine Twitter-Nachricht verfassen und damit Ihre, und auch die Farbe aller anderen Cheerlights Nutzer verändern. Die Nachricht muss zum einen #Cheerlights, @Cheerlights oder einfach nur das Stichwort Cheerlights enthalten und zum anderen eine der vordefinierten Farben hinter dem Stichwort stehen haben. Zu den vordefinierten Farben gehören:\nred, green, blue, cyan, white, warmwhite, purple, magenta, yellow, orange, pink\nEin Möglicher Tweet also:\nTesting my #cheerlights project on my #NanoESP with the color blue #ThingSpeak #IoT\noder eine ähnliche Nachricht. Schon haben Sie der ganzen Welt eine neue Farbe gegeben.\n","permalink":"https://iot.fkainka.de/day-23/","summary":"\u003cp\u003eDer heutige Versuch basiert auf einem Projekt von Hans Scharler, das sich Cheerlights nennt. Die Idee: weltweit vernetzte Lichter,  die sich simultan über Twitter Kommandos steuern lassen. Eine gutes Beispiel, dass die Welt mit dem Internet immer enger zusammenwächst.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein viertes Verlängerungskabel mit dem sich nun auch endlich die RGB-Led abseits vom Board platzieren lässt. Das kann besonders praktisch sein, wenn Sie beispielsweise das Board im Weihnachtsbaum verstecken wollen während die RGB-LED die Krone des Baums schmückt.\u003c/p\u003e","title":"Tag 23: Cheerlights"},{"content":"Hallo,\nich habe den Fehler gemacht die Bauteile des Adventkalenders in einer Tupperdose zusammeln; leider sehen für mich als Laie mache Bauteile gleich aus z.B. FotoDiode, IR-Diode; sieht alles wie eine normale LED aus;\nes wäre nicht schlecht, wenn man Bilder bzw. Erklärungen zur Verfügung hätte, wie man die Bauteile auseinander hält. Markierungen irgendwelcher Art sind da nicht vorhanden.\nDer Helligkeitssensor ist als eckiger durchsichtiges Bauteil abgebildet; in meinem Kalender war so etwas nicht enthalten.\nGruß\nAlfred\n4 Antworten klaus – 22.12.2015\nSchau bitte mal in die Kommentare der letzten Tage. Da wurde mehrfach beschrieben, wie man die Teile (des Adventskalenders) auseinander halten kann.\nLaser – 22.12.2015\nWenn man die Dioden von oben anschaut,\nsieht man:\nWeiss – Diode\nSchwarz – Fotodiode\nSchwarz, kleiner Punkt – IR-Diode\nAm besten mal alle Dioden nebeneinander halten und vergleichen.\nRGH – 23.12.2015\n\u0026hellip; und dann die Unterseite mit farbigem Edding markieren! ;) Bei mir hat die Fotodiode einen schwarzen Boden bekommen und die IR-Diode einen roten.\nGruß\nRoland\nklaus – 25.12.2015\n… und dann die Unterseite mit farbigem Edding markieren! ;) Bei mir hat die Fotodiode einen schwarzen Boden bekommen und die IR-Diode einen roten.\nMenno, Du hast bei mir abgeguckt ;-)\nGenau die Farben hab ich auch genommen.\n","permalink":"https://iot.fkainka.de/forum/topic/bauteile-erkennen/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe den Fehler gemacht die Bauteile des Adventkalenders in einer Tupperdose zusammeln; leider sehen für mich als Laie mache Bauteile gleich aus z.B. FotoDiode, IR-Diode; sieht alles wie eine normale LED aus;\u003cbr\u003e\nes wäre nicht schlecht, wenn man Bilder bzw. Erklärungen zur Verfügung hätte, wie man die Bauteile auseinander hält. Markierungen irgendwelcher Art sind da nicht vorhanden.\u003cbr\u003e\nDer Helligkeitssensor ist als eckiger durchsichtiges Bauteil abgebildet; in meinem Kalender war so etwas nicht enthalten.\u003c/p\u003e","title":"Bauteile erkennen"},{"content":"In dem heutigen Projekt geht es um eine weitere App der ThingSpeak-Seite, nämlich der TalkBack-App. Mit dieser Funktion ist es möglich, ein Kommando zu erstellen, das vom Controller ausgelesen und ausgeführt wird. Was mit nur einem Controller zunächst sinnlos erscheint, macht Sinn, wenn man zwei oder sogar ein ganzes Netzwerk von Controllern einsetzt. Einige Boards können dann als Sensoren agieren, beispielsweise mit Bewegungsmeldern, und beim Entdecken einer Bewegung ein TalkBack-Kommando senden. Ein weiteres Modul liest das Kommando von der ThingSpeak-Seite und öffnet dann die Tür oder meldet Alarm.\nHinter dem heutigen Türchen befindet sich ein weiterer Taster. Der Aufbau des heutigen Versuchs besteht aus einer LED mit Vorwiderstand und zwei Tastern, wie auf dem unteren Bild zu sehen ist.\nAufbau mit zwei Schaltern an D5 und D10 und einer LED an D9 Das Programm: Day22_ThinkSpeakTalkback\nZunächst muss nun unter APPS - TalkBack ein neuer TalkBack-Kanal erstellt werden. Wenn Sie möchten, können Sie die Kommandos auch in einem Channel eintragen lassen. Dies kann der bereits erstellte Light-Kanal des 19. Tages sein, oder auch ein eigener Kanal. Alle Kommandos werden dann protokolliert. Wichtig ist aber vor allem der API-Key den Sie an die Stelle #define TalkBackKEY eintragen. Zusätzlich zum API-KEY ist diesmal auch eine ID notwendig, die Sie in der Übersicht unter TalkBack ID finden, nachdem Sie auf Save-TalkBack geklickt haben. Diese ID Tragen Sie hier #define TalkBackID in das Programm ein.\nDie TalkBack-APP Wenn Sie nun das Programm uploaden und den Seriellen Monitor aufrufen, werden Sie zunächst die Meldung No Command sehen. Drücken Sie nun einen der beiden Taster. Nach kurzer Zeit erscheint dann die Meldung OpenDoor oder CloseDoor, je nach dem welchen Button Sie gedrückt haben. Beim OpenDoor-Kommando beginnt die LED außerdem zu leuchten\n","permalink":"https://iot.fkainka.de/day-22/","summary":"\u003cp\u003eIn dem heutigen Projekt geht es um eine weitere App der ThingSpeak-Seite, nämlich der TalkBack-App. Mit dieser Funktion ist es möglich, ein Kommando zu erstellen, das vom Controller ausgelesen und ausgeführt wird. Was mit nur einem Controller zunächst sinnlos erscheint, macht Sinn, wenn man zwei oder sogar ein ganzes Netzwerk von Controllern einsetzt. Einige Boards können dann als Sensoren agieren, beispielsweise mit Bewegungsmeldern, und beim Entdecken einer Bewegung ein TalkBack-Kommando senden. Ein weiteres Modul liest das Kommando von der ThingSpeak-Seite und öffnet dann die Tür oder meldet Alarm.\u003c/p\u003e","title":"Tag 22: TalkBack"},{"content":"Wie in den Kommentaren zum Tag 20 angegeben, stelle ich hier die berichtigte Version ein.\nAnhänge:\nDay20_ThinkSpeakTwitch-151220a.zip\n","permalink":"https://iot.fkainka.de/forum/topic/tag-20-berichtigung/","summary":"\u003cp\u003eWie in den Kommentaren zum Tag 20 angegeben, stelle ich hier die berichtigte Version ein.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/12/Day20_ThinkSpeakTwitch-151220a.zip\"\u003eDay20_ThinkSpeakTwitch-151220a.zip\u003c/a\u003e\u003c/p\u003e","title":"Tag 20 - Berichtigung"},{"content":"Bei dem Projekt des heutigen Tages handelt es sich um eine Alarmanlage, mit der Sie beispielsweise überprüfen können, ob jemand ungefragt eine Schublade öffnet. Laufend wird überprüft, ob auf den angeschlossenen Lichtsensor zu viel Licht fällt. Ist dies der Fall ertönt ein Alarmsignal und zusätzlich wird eine Nachricht über Twitter gesendet.\nHinter dem Türchen des heutigen Tages befindet sich ein Piezo-Lautsprecher, der als Alarmsignalgeber verwendet wird. Der Aufbau des heutigen Tages sieht folgendermaßen aus:\nLichtsensor an A0 und Piezo an D8 Das Programm: Day21_ThinkSpeakAlarm\nThema des heutigen Tages ist unter anderem die Twitter-App der ThingSpeak-Seite. Klicken Sie also auf Apps und anschließend auf ThingTweet. Mit dem Klick auf Link TwitterAccount und der Eingabe Ihrer Zugangsdaten stellen Sie eine Verbindung zwischen den beiden Diensten her. Falls Sie noch keinen Twitter-Account haben, lohnt es ich für das Bearbeiten des Adventskalenders testweise einen Account zu erstellen. Nachdem Twitter erfolgreich mit ThingSpeak verknüpft wurde, können Sie nun den unter Apps-ThingTweet stehenden API-Key in das heutige Programm hinter den Punkt #define TwitterKEY eintragen. Das Programm überprüft nun permanent, ob die gemessene Helligkeit über einen Wert von 500 steigt. Ist dies der Fall wird eine Twitter-Nachricht gesendet und der Alarm ertönt, und zwar solange, bis die Helligkeit wieder unter 500 sinkt. Die aktuell gemessenen Helligkeitswerte können Sie über den Serial Monitor verfolgen. Für die ersten Versuche empfehle ich, den Lichtsensor abzudecken, damit der Alarm nicht vorzeitig ausgelöst wird.\n","permalink":"https://iot.fkainka.de/day-21/","summary":"\u003cp\u003eBei dem Projekt des heutigen Tages handelt es sich um eine Alarmanlage, mit der Sie beispielsweise überprüfen können, ob jemand ungefragt eine Schublade öffnet. Laufend wird überprüft, ob auf den angeschlossenen Lichtsensor zu viel Licht fällt. Ist dies der Fall ertönt ein Alarmsignal und zusätzlich wird eine Nachricht über Twitter gesendet.\u003c/p\u003e\n\u003cp\u003eHinter dem Türchen des heutigen Tages befindet sich ein Piezo-Lautsprecher, der als Alarmsignalgeber verwendet wird. Der Aufbau des heutigen Tages sieht folgendermaßen aus:\u003c/p\u003e","title":"Tag 21: Twitter Alarmanlage"},{"content":"Die Webseite ThingSpeak bietet einiges mehr als nur die Langzeitüberwachung von Sensoren. Das heutige Projekt ist den Projekten von Tag 9 und Tag 10 in der Grundidee ähnlich. Es werden nämlich Informationen von einer Webseite aus dem Internet bezogen. In diesem Fall geht es darum ob ein bestimmter Stream gerade online ist oder nicht.\nDabei gibt es zwei bedeutende Vorteile der ThingSpeak-Variante gegenüber den ersten Versuchen. Erstens kann über die ThingSpeak Seite auch Webseiten über HTTPS (HyperText Transfer Protocol Secure) angesprochen werden, während das Modul nur das unsicherer HTTP Protokoll unterstützt. Zweites kann die Webseite wichtige Informationen bereits vorfilten und somit die vom Controller zu bearbeitende Datenmenge deutlich verringern.\nIn dem heutigen Projekt werden Sie nun eine Twitch-Streaming-Anzeige realisieren, als exemplarisches Beispiel für verschiedene Möglichkeiten. Twitch ist eine Webseite auf der live Games oder informatives rund ums Thema Computerspiele gestreamt werden. Einer der bekanntesten Streamingchannels heißt RocketBeansTV der ehemaligen GameOne Macher, welcher rund um die Uhr sendet und deswegen für einen ersten Test gut geeignet ist. Später können Sie natürlich einen Kanal Ihrer Wahl einsetzen.\nDer heutige Versuchsaufbau mit einer LED an Pin D9 Das Programm: Day20_ThinkSpeakTwitch\nNeben dem Hardwareaufbau sind auch einige Schritte auf der ThingSpeak Seite nötig. Wenn Sie auf der Webseite im obersten Menü auf APPs klicken, bekommen Sie eine Reihe von verschiedenen Anwendungsmöglichkeiten angezeigt. Heute beschäftigen wir uns mit der ThingHTTP-App. Wenn Sie auf den entsprechenden Button klicken, bekommen Sie zunächst eine recht leere Oberfläche angezeigt. Klicken Sie auf New ThingHTTP. In dem nun erscheinenden Formular geben Sie folgendes ein:\nName: Twitch\nURL: https://api.twitch.tv/kraken/streams?channel=rocketbeanstv\nMethod: GET\nHTTP Version: 1.1\nParse String: _total\nEingaben ThingHTTP-APP Falls Sie einen anderen Streamer bevorzugen, können Sie in der URL hinter channel einen anderen Kanal eingeben. Klicken Sie auf Save ThingHTTP und kopieren Sie anschließen den in der Übersicht erscheinenden API-Key in die Zwischenablage. Den Key müssen Sie nun in das Programm kopieren und zwar hinter #define ThingHTTP. Die WLAN-Daten nicht vergessen und schon können Sie das Programm uploaden. Einmal pro Minute wird nun überprüft, ob ein Stream zu finden ist. Falls dies der Fall ist, beginnt die LED zu leuchten.\n","permalink":"https://iot.fkainka.de/day-20/","summary":"\u003cp\u003eDie Webseite ThingSpeak bietet einiges mehr als nur die Langzeitüberwachung von Sensoren. Das heutige Projekt ist den Projekten von Tag 9 und Tag 10 in der Grundidee ähnlich. Es werden nämlich Informationen von einer Webseite aus dem Internet bezogen. In diesem Fall geht es darum ob ein bestimmter Stream gerade online ist oder nicht.\u003c/p\u003e\n\u003cp\u003eDabei gibt es zwei bedeutende Vorteile der ThingSpeak-Variante gegenüber den ersten Versuchen. Erstens kann über die ThingSpeak Seite auch Webseiten über HTTPS (HyperText Transfer Protocol Secure) angesprochen werden, während das Modul nur das unsicherer HTTP Protokoll unterstützt. Zweites kann die Webseite wichtige Informationen bereits vorfilten und somit die vom Controller zu bearbeitende Datenmenge deutlich verringern.\u003c/p\u003e","title":"Tag 20: Twitch"},{"content":"Mal was Lustiges außer der Reihe. Die Idee kam mir gerade, als ich nochmal bei Conrad reinschaute ;-)\n2 Antworten generalovernight – 19.12.2015\nNoch ein letzter Versuch mit gezipter Datei\ngeneralovernight – 19.12.2015\nSo sollte es gehen, schade dass es hier keine Voransicht gibt.\n","permalink":"https://iot.fkainka.de/forum/topic/ot-jetzt-bei-conrad/","summary":"\u003cp\u003eMal was Lustiges außer der Reihe. Die Idee kam mir gerade, als ich nochmal bei Conrad reinschaute ;-)\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003egeneralovernight\u003c/strong\u003e – 19.12.2015\u003c/p\u003e\n\u003cp\u003eNoch ein letzter Versuch mit gezipter Datei\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003egeneralovernight\u003c/strong\u003e – 19.12.2015\u003c/p\u003e\n\u003cp\u003eSo sollte es gehen, schade dass es hier keine Voransicht gibt.\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Die Macht \u0026hellip; OK, aber Ersatzleuchtmittel nicht vergessen\" loading=\"lazy\" src=\"https://generalovernight.files.wordpress.com/2015/12/starwars_ersatzleuchtmittel.jpg\"\u003e\u003c/p\u003e","title":"OT: Jetzt bei Conrad"},{"content":"In den letzten Tagen der Adventszeit beschäftigen wir uns mit einem ganz neuen Thema, nämlich der Internetseite ThingSpeak. Diese Seite wurde speziell für das Thema Internet of Things entwickelt und hält verschiedene praktische Funktionen für Sie bereit.\nBevor Sie also wie sonst üblich, den Aufbau und das Programm angehen, müssen Sie sich zunächst einen Account auf der Seite\nwww.ThingSpeak.com\nerstellen. Loggen Sie sich dann mit Ihren Nutzerdaten unter dem Punkt Sign In ein. Sie sehen eine Seite, die Ihre Channels zeigt. Da Sie noch keine Kanäle haben, wird diese Seite ziemlich leer aussehen. Klicken Sie auf New Channel und vergeben einen Namen, z.B. Light, denn Sie werden in diesem Projekt die Helligkeit messen. Unter dem Punkt Field1 können Sie nun noch einen Namen für das Feld vergeben, evtl. Brightness. Alle anderen Felder können vorerst leer bleiben.\nErstellen eines Kanals auf der ThingSpeak Seite Klicken Sie auf Save Channel, um die Einstellungen zu speichern. Sie werden zu der Seite Ihres Channels weitergeleitet, auf der aber nur ein leeres Diagramm zu sehen ist. Klicken Sie in dem darüber liegenden Reiter auf API-Keys. Die Zahlen und Buchstabenfolge die Sie unter dem Punkt Write API Key finden, werden Sie gleich benötigen.\nHier finden Sie den Write Key Hinter dem heutigen Türchen finden Sie erneut ein Kabel. Sie können nun auch dreibeinige Bauteile, wie das IR-Empfangsmodul, abseits des Steckboards platzieren. Der Aufbau des heutigen Versuchs ist mit dem Versuchsaufbau des 15. Tages identisch. Ein Spannungsteiler mit 10-kΩ-Widerstand und Fototransistor ermöglicht das Messen der aktuellen Helligkeit.\nDer Aufbau mit Fototransistor an A0 Das Programm: Day19_ThinkSpeak1\nDas heutige Programm misst nun, ähnlich dem Programm des 15. Tages, die Helligkeit. Doch anders als im vergangenen Versuch werden die Daten direkt an die ThingSpeak Seite gesendet. Diese Seite speichert die Daten nicht nur, sondern stellt sie auch übersichtlich in einem Diagramm dar. Eine sehr praktische Funktion für eine Messstation mit Langzeitüberwachung.\nDamit das Programm an die Webseite senden kann, müssen Sie außer Ihren WLAN-Daten zunächst den oben erwähnten API-Key in das Programm unter den Punkt ThingSpeakKEY eintragen. Nach dem Upload empfiehlt es sich, den Serial Monitor zu öffnen. In der Regel sollte eine Update Send Meldung die erfolgreiche Übertragung begleiten. Auf der ThingSpeak Seite können Sie nun wieder auf den Reiter Private View ihres Kanals klicken. Dort sehen Sie das Diagramm Ihres Channels welches alle 10 Sekunden neue Daten empfängt.\nDie Messergebnisse im Diagramm ","permalink":"https://iot.fkainka.de/day-19/","summary":"\u003cp\u003eIn den letzten Tagen der Adventszeit beschäftigen wir uns mit einem ganz neuen Thema, nämlich der Internetseite ThingSpeak. Diese Seite wurde speziell für das Thema Internet of Things entwickelt und hält verschiedene praktische Funktionen für Sie bereit.\u003c/p\u003e\n\u003cp\u003eBevor Sie also wie sonst üblich, den Aufbau und das Programm angehen, müssen Sie sich zunächst einen Account auf der Seite\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.ThingSpeak.com\"\u003ewww.ThingSpeak.com\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eerstellen. Loggen Sie sich dann mit Ihren Nutzerdaten unter dem Punkt Sign In ein. Sie sehen eine Seite, die Ihre Channels zeigt. Da Sie noch keine Kanäle haben, wird diese Seite ziemlich leer aussehen. Klicken Sie auf New Channel und vergeben einen Namen, z.B. Light, denn Sie werden in diesem Projekt die Helligkeit messen. Unter dem Punkt Field1 können Sie nun noch einen Namen für das Feld vergeben, evtl. Brightness. Alle anderen Felder können vorerst leer bleiben.\u003c/p\u003e","title":"Tag 19: ThingSpeak"},{"content":"Gestern haben Sie einen Empfänger für Infrarotfernbedienungen gebaut. Heute bauen Sie sozusagen die Fernbedienung selbst. Genauer gesagt basteln Sie sich eine per Computer oder Smartphone bedienbare Universalfernbedienung, mit der Sie Ihren Fernseher oder andere Geräte steuern können, auch wenn die originale Fernbedienung mal wieder nicht auffindbar ist.\nDamit Sie das Projekt angehen können, benötigen Sie das Bauteil, das sich hinter dem heutigen Türchen befindet, die IR-Diode. Sie sieht aus wie eine einfache LED, allerdings sendet sie Licht im nicht sichtbaren Infrarotbereich aus. Die IR-Signale sind aber für eine digitale Kamera sichtbar. Der Aufbau des heutigen Tages können Sie dem unteren Bild entnehmen. Wundern Sie sich nicht, dass die IR-LED keinen Vorwiderstand bekommt. Der wirksame Vorwiderstand ist allein der On-Widerstand des Ports von ca. 30 Ohm. Damit ist der Strom durch die Diode recht groß, die gesendeten Impulse sind aber so kurz, dass die Diode keinen Schaden nimmt.\nAnschluss der IR-Diode an Pin D3 Das Programm: Day18_IrRemote\nBevor das Projekt funktionieren kann, müssen Sie wieder einige Anpassungen vornehmen. Wenn Sie gestern die Codes Power, Lauter, Leiser, Kanal hoch, Kanal runter, und Mute ausgelesen und verwendet haben, können Sie die Codes einfach der Reihe nach in das Array irCommand eintragen. Falls nicht sollten Sie das gestrige Programm erneut einspielen und die passenden Codes auslesen, Sie können natürlich auch ganz andere Codes nehmen, nur passt die Beschriftung auf der Webseite dann nicht dazu. Neben den Codes müssen Sie auch das verwendete Protokoll in die Variable irProtokoll eintragen, sofern Ihre Fernbedienung unterstützt wird. Zuletzt müssen Sie noch die Länge des zu sendenden Signals eintragen. Diese ermitteln Sie, indem Sie die Stellen des Hex Codes mit vier multiplizieren. Als Beispiel: Mein Code für Power war 0x20DF10EF. 0x ist einfach nur das Zeichen für einen Hex Code, bleiben also 20DF10EF und damit ein achtstelliger Hex-Code. 8*4 = 32, also steht im Beispielprogramm hinter der Variable irLen eine 32. Eine ähnliche Rechnung müssen Sie dann für einen Code vornehmen, der eine andere Länge hat.\nWenn Sie alle Codes und Parameter und natürlich auch Ihre WLAN-Daten eingetragen haben, können Sie das Programm uploaden. Die Webseite des Boards enthält nun sechs Buttons mit passender Beschriftung. Wenn Sie nun einen der Buttons betätigen, sollte eine Meldung über den Serial Monitor erscheinen und Ihr Fernseher oder anderes Gerät passend auf das Signal reagieren. Falls nicht müssen Sie eventuell näher ran gehen, oder Sie überprüfen, ob die IR-Diode überhaupt etwas sendet. Eine falsch gepolte LED wäre z.B. eine Möglichkeit, warum das Projekt nicht wie gewünscht funktioniert.\nDie TV-Remote Webseite ","permalink":"https://iot.fkainka.de/day-18/","summary":"\u003cp\u003eGestern haben Sie einen Empfänger für Infrarotfernbedienungen gebaut. Heute bauen Sie sozusagen die Fernbedienung selbst. Genauer gesagt basteln Sie sich eine per Computer oder Smartphone bedienbare Universalfernbedienung, mit der Sie Ihren Fernseher oder andere Geräte steuern können, auch wenn die originale Fernbedienung mal wieder nicht auffindbar ist.\u003c/p\u003e\n\u003cp\u003eDamit Sie das Projekt angehen können, benötigen Sie das Bauteil, das sich hinter dem heutigen Türchen befindet, die IR-Diode. Sie sieht aus wie eine einfache LED, allerdings sendet sie Licht im nicht sichtbaren Infrarotbereich aus. Die IR-Signale sind aber für eine digitale Kamera sichtbar. Der Aufbau des heutigen Tages können Sie dem unteren Bild entnehmen. Wundern Sie sich nicht, dass die IR-LED keinen Vorwiderstand bekommt. Der wirksame Vorwiderstand ist allein der On-Widerstand des Ports von ca. 30 Ohm.  Damit ist der Strom durch die Diode recht groß, die gesendeten Impulse sind aber so kurz, dass die Diode keinen Schaden nimmt.\u003c/p\u003e","title":"Tag 18: Universal Fernbedienung"},{"content":"Hallo,\nich bin erst etwas später eingestiegen.\nHabe es dadurch erst bis Tag 8 geschafft.\nMeine Frage:\nIch habe auf dem Netbook \u0026ldquo;Packet Sender\u0026rdquo; laufen- klappt.\nWelches Prog. / App. läuft auf Android ?\nDanke und Grüße\nHF\n","permalink":"https://iot.fkainka.de/forum/topic/suche-app-fuer-android/","summary":"\u003cp\u003eHallo,\u003cbr\u003e\nich bin erst etwas später eingestiegen.\u003cbr\u003e\nHabe es dadurch erst bis Tag 8 geschafft.\u003cbr\u003e\nMeine Frage:\u003cbr\u003e\nIch habe auf dem Netbook \u0026ldquo;Packet Sender\u0026rdquo; laufen- klappt.\u003cbr\u003e\nWelches Prog. / App. läuft auf Android ?\u003cbr\u003e\nDanke und Grüße\u003cbr\u003e\nHF\u003c/p\u003e","title":"Suche App für Android"},{"content":"Das Projekt des heutigen Tages ermöglicht die Steuerung des Controllers per Fernbedienung. Mit selbst wählbaren Tasten auf einer Infrarot-Fernbedienung Ihrer Wahl können Sie die Farbe der RGB-LED verändern und die Hintergrundfarbe der Webseite gleich mit.\nHinter dem heutigen Türchen befindet sich das für das heutige Projekt bedeutende Bauteil, nämlich das Infrarot-Empfangsmodul. Sie können das Modul wie auf dem unteren Bild ganz ohne Kabel anschließen. Das Programm setzt die entsprechenden Pins so, dass das Modul mit Strom versorgt wird.\nDas IR-Modul an Pins D7-D9 Das Programm: Day17_IRmodul\nDas Programm des heutigen Tags benutzt wieder eine externe Library, und zwar die IRremote-Library von Ken Shiriff. Eine Kopie der von mir verwendeten Version liegt wieder in dem Sketchorder und muss nur in den library-Ordner ihres Sketchbooks kopiert werden.\nNach dem Upload des Programms sollten Sie den Serial Monitor starten. Suchen Sie eine Fernbedienung und richten Sie sie auf das Modul. Wenn Sie eine Taste drücken sollten Sie im Monitor den Wert des Signals als HEX-Code und den Typ des Protokolls als Zahl ausgegeben bekommen. Wenn als Typ -1 erscheint, wurde das Protokoll nicht erkannt. Es kann auch zu mehreren Fehlversuchen kommen bis ein Kommando richtig decodiert wird. Also probieren Sie einfach ein bisschen herum oder versuchen Sie eine andere Fernbedienung. Haben Sie ein passende gefunden dann wählen Sie sechs Tasten aus (am besten Sie nehmen Power, Lauter, Leiser, Kanal hoch, Kanal runter und Mute). Die Codes der sechs Kommandos müssen Sie nun im Programm hinter die sechs #define irComX kopieren (das 0x vor dem Hex Code nicht vergessen). Vordefiniert sind dort die Kommandos einer LG-TV-Fernbedienung. Wenn Sie die Codes richtig eingetragen haben, können Sie nun das Programm erneut hochladen. Mit den von Ihnen definierten Tasten können Sie nun die Farbe der RGB-LED verändern. Wenn Sie die Boardseite aktualisieren, werden Sie außerdem sehen, dass sich die Farbe verändert hat.\n","permalink":"https://iot.fkainka.de/day-17/","summary":"\u003cp\u003eDas Projekt des heutigen Tages ermöglicht die Steuerung des Controllers per Fernbedienung. Mit selbst wählbaren Tasten auf einer Infrarot-Fernbedienung Ihrer Wahl können Sie die Farbe der RGB-LED verändern und die Hintergrundfarbe der Webseite gleich mit.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich das für das heutige Projekt bedeutende Bauteil, nämlich das Infrarot-Empfangsmodul. Sie können das Modul wie auf dem unteren Bild ganz ohne Kabel anschließen. Das Programm setzt die entsprechenden Pins so, dass das Modul mit Strom versorgt wird.\u003c/p\u003e","title":"Tag 17: IR-Modul"},{"content":"Mit dem Browser von Android 2.2 werden die html-Seiten der Webserverbeispiele nicht angezeigt (Fehlermeldung: Die Serverkommunikation ist fehlgeschlagen)\nGrund:\nDie gelieferte html-Seite des Webservers enthält keinen http-Statuscode, sondern fängt direkt mit dem html-Code an. Dies ist nicht standard-konform.\nZumindest ein\n\u0026ldquo;HTTP/1.1 200 OK\\r\\n\\r\\n\u0026rdquo;\nsollte laut Standard vor dem eigentlichen html-Code geliefert werden.\nAlso z.B. so:\nconst char site[] PROGMEM = { \u0026#34;HTTP/1.1 200 OK\\r\\nConnection: close\\r\\n\\r\\n\u0026lt;HTML\u0026gt;\u0026lt;HEAD\u0026gt; ... Dann klappt die Anzeige auch mit dem Browser von Android 2.2.\n","permalink":"https://iot.fkainka.de/forum/topic/http-statuscode-fehlt-in-den-vom-webserver-gelieferten-html-seiten/","summary":"\u003cp\u003eMit dem Browser von Android 2.2 werden die html-Seiten der Webserverbeispiele nicht angezeigt (Fehlermeldung: Die Serverkommunikation ist fehlgeschlagen)\u003c/p\u003e\n\u003cp\u003eGrund:\u003cbr\u003e\nDie gelieferte html-Seite des Webservers enthält keinen http-Statuscode, sondern fängt direkt mit dem html-Code an. Dies ist nicht standard-konform.\u003c/p\u003e\n\u003cp\u003eZumindest ein\u003cbr\u003e\n\u0026ldquo;HTTP/1.1 200 OK\\r\\n\\r\\n\u0026rdquo;\u003cbr\u003e\nsollte laut Standard vor dem eigentlichen html-Code geliefert werden.\u003c/p\u003e\n\u003cp\u003eAlso z.B. so:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003econst\u003c/span\u003e \u003cspan class=\"kt\"\u003echar\u003c/span\u003e \u003cspan class=\"n\"\u003esite\u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e \u003cspan class=\"n\"\u003ePROGMEM\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s\"\u003e\u0026#34;HTTP/1.1 200 OK\u003c/span\u003e\u003cspan class=\"se\"\u003e\\r\\n\u003c/span\u003e\u003cspan class=\"s\"\u003eConnection: close\u003c/span\u003e\u003cspan class=\"se\"\u003e\\r\\n\\r\\n\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026lt;HTML\u0026gt;\u0026lt;HEAD\u0026gt; ...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eDann klappt die Anzeige auch mit dem Browser von Android 2.2.\u003c/p\u003e","title":"http-Statuscode fehlt in den vom Webserver gelieferten html-Seiten"},{"content":"Das Projekt des heutigen Tages ermöglicht die einfache Ansteuerung der digitalen Pins D2-D7 per Webseite. Der Status des jeweiligen Pins wird ebenfalls auf der Webseite dargestellt, sodass man nie den Überblick verliert.\nDamit sich der Zustand der Pins gut überprüfen lässt, empfiehlt sich ein Aufbau wie auf dem unteren Bild. Sowohl die RGB-LED als auch die normale LED kommen zum Einsatz. Die Kathoden der LEDs sind diesmal aber nicht an die lange Masseleitung auf der Außenseite des Boards angeschlossen, sondern liegen ebenfalls an einem digitalen Ausgang. Nur wenn diese Pins low geschaltet sind, können die LEDs also leuchten.\nDas Kalenderbauteil des heutigen Tages ist ein weiteres Kabel. Dieses ermöglicht die LED abseits des Boards zu legen. Sie können das Board nun beispielweise in ein Gehäuse einbauen und die LED nach außen legen.\nAnschluss der LEDs an D2-D7 Achtung! LEDs dürfen nicht ohne Vorwiderstände angeschlossen werden. Dass es in diesem Fall zulässig ist, liegt an den On-Widerständen der internen Port-FETs von ca. 30 Ohm. Weil die LEDs zwischen zwei Ports liegen, arbeiten sie tatsächlich mit einem Vorwiderstand von 60 Ohm. Je nach LED-Typ und Farbe stellt sich dabei ein LED-Strom zwischen 15 mA und maximal 30 mA ein, was noch zulässig ist.\nDas Programm: Day16_TCPServerGPIO\nDie Webseite des heutigen Programms benutzt sogenannte Checkboxen als HTML-Element. Wenn Sie das Programm hochladen und die Seite des Boards aufrufen, sehen Sie eine Reihe von klickbaren Boxen. Ein Häkchen in der Box bedeutet, dass der Pin high ist. Kein Häkchen bedeutet low. Sie können nun ausprobieren, welche Pins high und welche low sein müssen, damit alle LEDs leuchten.\nDie Webseite GPIO-Control ","permalink":"https://iot.fkainka.de/tag-16-gpio-control/","summary":"\u003cp\u003eDas Projekt des heutigen Tages ermöglicht die einfache Ansteuerung der digitalen Pins D2-D7 per Webseite. Der Status des jeweiligen Pins wird ebenfalls auf der Webseite dargestellt, sodass man nie den Überblick verliert.\u003c/p\u003e\n\u003cp\u003eDamit sich der Zustand der Pins gut überprüfen lässt, empfiehlt sich ein Aufbau wie auf dem unteren Bild. Sowohl die RGB-LED als auch die normale LED kommen zum Einsatz. Die Kathoden der LEDs sind diesmal aber nicht an die lange Masseleitung auf der Außenseite des Boards angeschlossen, sondern liegen ebenfalls an einem digitalen Ausgang. Nur wenn diese Pins low geschaltet sind, können die LEDs also leuchten.\u003c/p\u003e","title":"Tag 16: GPIO Control"},{"content":"Hallo,\nbisher hatte ich viel Freude mit dem Adventskalender. Bis zum Tag 13 lief auch alles gut bis perfekt. Bin fasziniert.\nABER: Seit gestern kommt offenbar keine Verbindung mehr zum ESP zustande. Der Uplaod der Programme funktioniert, die Programme starten, nur wenn der ESP angesprochen werden soll, dann kommen Fehlermeldungen. Auch bei vorhergehenden Projekten, die bisher reibungslos funktionierten, Am Beispiel von Tag 2:\nReset Error\nCWMODE Error\nWLAN Connect Error\nPing Error\nHabe den Timeout für \u0026ldquo;AT+RST\u0026rdquo; am Tag 2 sogar auf 10 Sekunden erhöht. Gleiches Ergebnis.\nBin ratlos, was ich noch versuchen soll und würde mich über Tipps freuen.\nVielen Dank!\nJan\n6 Antworten fk – 15.12.2015\nHi,\nhast du mal mit dem Programm vom ersten Tag versucht AT Befehle Manuelan das Modul zu senden? Und hast du vllt aus versehen den Befehl AT+restore benutzt?\nKannst du sehen ob das Modul sich im Router vllt noch Anmeldet (auch ohne Befehl verbindet sich das Modul nach einer gewissen mit dem Zuletzt bekannten Netzwerk)\nJan – 16.12.2015\nHallo,\ndanke für die Tipps.\nHabe das Programm vom 1.Tag nochmal hochgeladen. -\u0026gt; Keinerlei Ausgaben auf dem Seriellen Monitor, Eingaben erzeugen keine Reaktion\nDer Befehl AT+restore wurde nicht benutzt.\nIm Router meldet sich das Modul nicht an, auch gibt es keinen AP.\nGibt es noch weitere Hinweise?\nViele Grüße\nJan\nfk – 16.12.2015\nHmm ich nehme mal an, dass du auch nicht an Pin11/12 angeschlossen hast? Oder an den ISP Header vom Board?\nIch fürchte das sieht nicht sehr gut aus\u0026hellip;\nLeuchtet die D6 LED?\nJan – 16.12.2015\nHallo,\naußer dem USB-Kabel ist nichts angeschlossen.\nD6 und D2 leuchten.\nNach Stromzufuhr (Anschluss USB-Kabel) blinkt D3 ein paar Mal ist dann aber aus.\nHoffnungslos? Hoffentlich nicht!\nVG - Jan\nAntonireykern – 16.12.2015\nIch habe genau das selbe Problem :'[\nAnhänge:\nmlampl – 12.12.2016\nGuten Tag\nHabe ein ähnliches Problem mit dem Wlan.\nimmer öfters kann des Modul keine Verbindung zum Wlan aufbauen , keine Verbindung zum Wlan möglich.\nGibt es Parameter die man im Modul via AT Befehle ändern kann damit das Modul \u0026ldquo;mehr Zeit\u0026rdquo; hat zum Verbinden oder so ?\nin den letzten 2 Tagen habe keine Verbindung mehr \u0026hellip;\nvielleicht hat jemand eine Lösung, das wäre super.\neinen schönen Tag noch an alle.\nManfred\n","permalink":"https://iot.fkainka.de/forum/topic/esp-defekt/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ebisher hatte ich viel Freude mit dem Adventskalender. Bis zum Tag 13 lief auch alles gut bis perfekt. Bin fasziniert.\u003c/p\u003e\n\u003cp\u003eABER: Seit gestern kommt offenbar keine Verbindung mehr zum ESP zustande. Der Uplaod der Programme funktioniert, die Programme starten, nur wenn der ESP angesprochen werden soll, dann kommen Fehlermeldungen. Auch bei vorhergehenden Projekten, die bisher reibungslos funktionierten, Am Beispiel von Tag 2:\u003c/p\u003e\n\u003cp\u003eReset Error\u003cbr\u003e\nCWMODE Error\u003cbr\u003e\nWLAN Connect Error\u003cbr\u003e\nPing Error\u003c/p\u003e","title":"ESP defekt?"},{"content":"Das Projekt des heutigen Tages benutzt die Webseite des Webservers nicht als Steueroberfläche, sondern als Ausgabeelement. Die über einen Helligkeitssensor gemessene Helligkeit wird als Relativwert übersichtlich dargestellt.\nHinter dem heutigen Türchen befindet sich ein Fototransistor, der als Lichtsensor dient. Der Fototransistor sieht aus wie ein LED, sollte aber nicht mit einer verwechselt werden. Den Aufbau des heutigen Versuchs zeigt das Bild. Der Kollektor des Fototransistors ist der kürzere Anschluss und liegt an +5 V.\nAnschluss des Fototransistors an Pin A0 (R=10 kOhm) Das Programm: Day15_TCPServerBright\nBis heute bestanden die Webseiten des Webservers immer aus einer nicht veränderbaren Seite, die Daten an den Controller geschickt hat. Heute soll die Webseite vor dem Übertragen an den Browser verändert werden, um die gemessene Helligkeit des Fototransistors anzuzeigen. Dies funktioniert, weil im Quellcode der Webseite eine Art Platzhalter versteckt ist. Das Programm ersetzt nun beim Laden der Daten aus der Progmen-Variablen den Platzhalter *bright* durch den aktuellen Helligkeitswert. Somit werden der Ausgabetext und der Ausschlag des Schiebereglers verändert. Eine weitere Zeile in der HTML-Datei sorgt dafür, dass sich die Seite automatisch alle paar Sekunden neu lädt. Schon wird die aktuelle Helligkeit übersichtlich im Browser angezeigt.\nDie Webseite des Helligkeitssensors ","permalink":"https://iot.fkainka.de/day-15/","summary":"\u003cp\u003eDas Projekt des heutigen Tages benutzt die Webseite des Webservers nicht als Steueroberfläche, sondern als Ausgabeelement. Die über einen Helligkeitssensor gemessene Helligkeit wird als Relativwert übersichtlich dargestellt.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein Fototransistor, der als Lichtsensor dient. Der Fototransistor sieht aus wie ein LED, sollte aber nicht mit einer verwechselt werden. Den Aufbau des heutigen Versuchs zeigt das Bild. Der Kollektor des Fototransistors ist der kürzere Anschluss und liegt an +5 V.\u003c/p\u003e","title":"Tag 15: Lichtsensor"},{"content":"Hallo zusammen,\nich hab mal wieder etwas gebastelt und bis dabei gleich noch auf einen Fehler im Programm gestoßen.\nMeine Version zeigt nun die zuletzt gewählte Farbe im Colorpicker an.\nDabei kamen immer wieder Zeichen zum Browser, die ich gar nicht im Quellcode habe. Dann habe ich festgestellt, dass im PROGMEM noch mehr Zeichen stehen, als man sieht. Deshalb darf die Schleife nicht\nfor (int i = 0; i \u0026lt;= sizeof(site); i++)\nsondern\nfor (int i = 0; i \u0026lt; sizeof(site)-1; i++)\nheißen, da 2 Zeichen zu viel aus dem Speicher gelesen werden. Eines wäre mir ja noch klar, wenn es nur das Nullbyte wäre. Aber warum 2? Kennt jemand den Grund dafür?\nAnhänge:\nDay14_TCPServerRGB-151214a.zip\n4 Antworten Raabinator – 14.12.2015\nAlso, bei mir hängen drei Nullen dran (siehe Bild)\nDie erste ist die Null im String, die mit /0 erzeugt wird (ist unnötig) Die zweite Null ist die, die der Compiler automatisch an die Zeichenkette anhängt (site ist eins Größer als Zeichen angegeben sind) Die dritte Null ist das was zufällig als nächstes im Programmspeicher kommt. Leider gibt die Arduino-IDE kein .map-File aus. Dort könnte man nachsehen, was als nächstes kommt. Um das komplette Array zu senden (inkl. der automatischen Ende-Null) sollte die Schleife so aussehen:\nfor (int i = 0; i \u0026lt; sizeof(site); i++)\nDa wir aber eine Zeichenkette senden könnten wir auch die Null als Ende verwenden, dann so:\nint i = 0; while (meinArray[i] != \u0026#39;\\0\u0026#39;) { // ... mach was mit dem Zeichen ... i++; } Das wird aber unübersichtlich, da wir das Zeichen erst mit der Funktion pgm_read_byte_near aus dem Flash lesen müssen.\nIm Sketch des Autors wird der String durch das \u0026lt;= um ein Zeichen überlesen. Richtig wäre \u0026lt;. Damit wird auch die Ende-Null gesendet, die der Browser aber nicht braucht. Daher ganz richtig mit \u0026lt; sizeof(site)-1.\nAnhänge:\nklaus – 15.12.2015\nOK, die ersten beiden leuchten mir ja jetzt ein. Aber warum sendet er dann noch ein drittes Byte zu viel?\nDas mit \u0026lt; sizeof(site) leuchtet ja auch ein, wenn man mal drüber nachdenkt. Man fängt bei 0 an. Die Größe fängt natürlich bei 1 an. Deshalb muss man ja 1 früher aufhören. Aber wie kommt es dann zustande, dass er trotzdem 1 übers Ende raus liest?\nBtw, bei mir liest er anscheinend nur 2 Bytes zu viel, was anhand der Erklärung automatisch \\0 dran hängen und Größe fängt bei 0 an, auch logisch ist.\nIch müsste mal den Sniffer anwerfen, um zu sehen, was er genau sendet. Oder ob das dritte Byte bei mir nur nicht zu sehen ist.\nRaabinator – 16.12.2015\nHallo Klaus\nDas kann man mit Wireshark gut beobachten (www.wireshark.org).\nsizeof() gibt die Größe des Array zurück. Die Indizierung des ersten Elementes beginnt bei 0, das letzte Element ist damit also sizeof()-1.\nUm alle Elemente zu indizieren müsste die Schleife bis \u0026lt;= sizeof()-1 oder gleichbedeutend \u0026lt; sizeof() laufen. Dies beinhaltet dann die 0 in der Zeichenkette und die automatische 0, die auch in die Größe mit eingerechnet ist.\nMit \u0026lt;= sizeof() wird nochmal ein Byte mehr gelesen (durch das =), nämlich das array[sizeof(array)]-Byte. Da an dieser Stelle im Speicher zufällig eine 0 steht -\u0026gt; die dritte 0.\nklaus – 16.12.2015\nDas ist mir schon klar, hatte ich ja oben auch geschrieben. Aber bei meinen Versuchen hatte er noch ein drittes Byte zu viel. Allerdings gestern war das nicht so. Keine Ahnung, was da noch los war. Funktioniert aber inzwischen.\n","permalink":"https://iot.fkainka.de/forum/topic/tag-14-letzte-farbe-anzeigen/","summary":"\u003cp\u003eHallo zusammen,\u003c/p\u003e\n\u003cp\u003eich hab mal wieder etwas gebastelt und bis dabei gleich noch auf einen Fehler im Programm gestoßen.\u003cbr\u003e\nMeine Version zeigt nun die zuletzt gewählte Farbe im Colorpicker an.\u003c/p\u003e\n\u003cp\u003eDabei kamen immer wieder Zeichen zum Browser, die ich gar nicht im Quellcode habe. Dann habe ich festgestellt, dass im PROGMEM noch mehr Zeichen stehen, als man sieht. Deshalb darf die Schleife nicht\u003cbr\u003e\n\u003ccode\u003efor (int i = 0; i \u0026lt;= sizeof(site); i++)\u003c/code\u003e\u003cbr\u003e\nsondern\u003cbr\u003e\n\u003ccode\u003efor (int i = 0; i \u0026lt; sizeof(site)-1; i++)\u003c/code\u003e\u003cbr\u003e\nheißen, da 2 Zeichen zu viel aus dem Speicher gelesen werden. Eines wäre mir ja noch klar, wenn es nur das Nullbyte wäre. Aber warum 2? Kennt jemand den Grund dafür?\u003c/p\u003e","title":"Tag 14 - Letzte Farbe anzeigen"},{"content":"Aufgrund des Posts hier: http://iot.fkainka.de/day-13 (Post Nummer 1355, weiß leider nicht wie man den verlinken kann) habe ich mal ein kleines Tool geschrieben, was für unsere Zwecke ausreichen dürfte.\nDamit ist es möglich, Texte (HTML-Quelltexte) von einer Version in eine andere zu konvertieren. Das Tool unterstützt derzeit Plaintext, C++-Strings und Byte-Arrays, LF, CRLF und kann alles hin und her konvertieren. Es ist ein Windows-Programm, müsste sich aber auch mit Mono unter Linux starten lassen (mono-complete und mono-basic wird benötigt, Repository von Monoproject, nicht in Distributionen eingebaute!!)\nFalls irgendwas noch nicht funktioniert, einfach melden.\nAnhänge:\nTextConverter.zip\n2 Antworten klaus – 15.12.2015\nDa war noch ein Fehler in der Umwandlung nach \u0026ldquo;C++/PHP String\u0026rdquo;.\nHat jemand das Programm schon mal ausprobiert?\nAnhänge:\nTextConverter-1.zip\nMcElch – 03.01.2016\nIch habs jetzt endlich mal ausprobieren können. Klappt super, danke! :)\n","permalink":"https://iot.fkainka.de/forum/topic/textconverter/","summary":"\u003cp\u003eAufgrund des Posts hier: \u003ca href=\"http://iot.fkainka.de/day-13\"\u003ehttp://iot.fkainka.de/day-13\u003c/a\u003e (Post Nummer 1355, weiß leider nicht wie man den verlinken kann) habe ich mal ein kleines Tool geschrieben, was für unsere Zwecke ausreichen dürfte.\u003cbr\u003e\nDamit ist es möglich, Texte (HTML-Quelltexte) von einer Version in eine andere zu konvertieren. Das Tool unterstützt derzeit Plaintext, C++-Strings und Byte-Arrays, LF, CRLF und kann alles hin und her konvertieren. Es ist ein Windows-Programm, müsste sich aber auch mit Mono unter Linux starten lassen (mono-complete und mono-basic wird benötigt, Repository von Monoproject, nicht in Distributionen eingebaute!!)\u003cbr\u003e\nFalls irgendwas noch nicht funktioniert, einfach melden.\u003c/p\u003e","title":"TextConverter"},{"content":"In dem Projekt des heutigen Tages geht es um die Ansteuerung der RGB-LED mittels Webserver. Über eine übersichtliche Oberfläche kann die Farbe der LED verändert werden. Die Webseite wurde außerdem angepasst, und sollte auch auf Smartphones gut darstellbar sein.\nDie Webseite mit ColorPicker Hinter dem heutigen Adventskalendertürchen befindet sich erneut ein Widerstand, diesmal aber mit 10 kΩ (Braun, Schwarz, Orange). Diesen werden Sie für den morgigen Versuch benötigen.\nDer Aufbau des heutigen Versuchs entspricht dem Aufbau des zehnten Tages. Die RGB-LED wird über Vorwiderstände an die PWM-fähigen Pins D3, D5 und D6 angeschlossen\nAnschluss der RGB LED an die Pins D3, D5 und D6 Das Programm: Day14_TCPServerRGB\nDie übertragene Webseite ist erneut in binärer Form in der Progmen-Variablen site verborgen. Auch diesmal können Sie die HTML-Seite im Sketchordner einsehen. Nach dem Einstellen der WLAN-Daten und dem Upload des Programms lässt sich die Webseite des Webservers über die IP des Moduls erreichen. Die Seite ist mit Hintergrundfarbe und Überschrift ähnlich designt wie die vorherige. Doch ein neues Element befindet sich auf der Seite, nämlich das HTML5-Element Color Picker. Mit ihm ist es möglich, eine Farbe für die LED auszusuchen. Sobald Sie die Farbe bestätigt haben, wird Sie von der LED angezeigt. Dabei kann sich die Darstellung des Color-Picker Elements in Abhängigkeit vom gewählten Browser stark unterscheiden.\nDas ColorPicker Element im Android 5.0 Browser Das ColorPicker Element im Android 5.0 Browser ","permalink":"https://iot.fkainka.de/day-14/","summary":"\u003cp\u003eIn dem Projekt des heutigen Tages geht es um die Ansteuerung der RGB-LED mittels Webserver. Über eine übersichtliche Oberfläche kann die Farbe der LED verändert werden. Die Webseite wurde außerdem angepasst, und sollte auch auf Smartphones gut darstellbar sein.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day14-2.jpeg\"\u003e\u003cimg class=\"size-full wp-image-195\" src=\"/images/2015/09/Day14-2.jpeg\" alt=\"Die Webseite mit ColorPicker\" width=\"303\" height=\"310\" data-id=\"195\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDie Webseite mit ColorPicker\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eHinter dem heutigen Adventskalendertürchen befindet sich erneut ein Widerstand, diesmal aber mit 10 kΩ (Braun, Schwarz, Orange). Diesen werden Sie für den morgigen Versuch benötigen.\u003c/p\u003e","title":"Tag 14: Webserver für die RGB-LED"},{"content":"Hallo Forum,\nfür alle Anfänger, die mit dem Arduino-Board noch etwas\nexperiemtieren wollen, hier eine kleine Spielerei:\nÜber den Taster werden die 3 Farben der RGB-LED durchgeschaltet.\nDer gemeinsame Pol der LED liegt auf Masse, die einzelnen\nAnschlüsse der LED\u0026rsquo;s über einen Widerstand von 1kOhm an\nfolgenden Ausgängen:\nLed rot - Digital 4\nLed grün - Digital 5\nLed blau - Digital 6\nDer Taster liegt einerseites auf GND, mit dem anderen\nKontakt auf Digital 3.\nDurch Betätigen des Tasters werden die einzelnen Farben\nnacheinander durchgeschaltet.\nViel Spaß beim Nachbauen.\nAnhänge:\nswitch_rgb.zip\n","permalink":"https://iot.fkainka.de/forum/topic/switch_rgb/","summary":"\u003cp\u003eHallo Forum,\u003c/p\u003e\n\u003cp\u003efür alle Anfänger, die mit dem Arduino-Board noch etwas\u003cbr\u003e\nexperiemtieren wollen, hier eine kleine Spielerei:\u003c/p\u003e\n\u003cp\u003eÜber den Taster werden die 3 Farben der RGB-LED durchgeschaltet.\u003c/p\u003e\n\u003cp\u003eDer gemeinsame Pol der LED liegt auf Masse, die einzelnen\u003cbr\u003e\nAnschlüsse der LED\u0026rsquo;s über einen Widerstand von 1kOhm an\u003cbr\u003e\nfolgenden Ausgängen:\u003c/p\u003e\n\u003cp\u003eLed rot - Digital 4\u003cbr\u003e\nLed grün - Digital 5\u003cbr\u003e\nLed blau - Digital 6\u003c/p\u003e\n\u003cp\u003eDer Taster liegt einerseites auf GND, mit dem anderen\u003cbr\u003e\nKontakt auf Digital 3.\u003c/p\u003e","title":"Switch_RGB"},{"content":"Wie ändere ich die MAC Adresse des Alan Boards\nDie MAC Adresse ist bereits vergeben und ich habe dadurch immer Probleme in mein Netzwerk zu kommen.\nwie kann man die Adresse einstellen ?\nGruß\nJOJU\n7 Antworten JOJU – 13.12.2015\nEinen Befehl habe ich dazu gefunden :\nAT+CIPSTAMAC=18:FE:34:A4:67:10\nAber ich bekomme immer nur eine Fehlermeldung nach Enter:\nAT+CIPSTAMAC=18:FE:34:A4:67:10\nERROR\nIm ersten Beitrag sollte das WLAN Board heißen und nicht Alan Board \u0026hellip;.\nGruß\nJOJU\nÜber eine Antwort würde ich mich sehr freuen.\nfk – 13.12.2015\nHi,\nMAC-Adressen sind eigentlich weltweit eindeutig. Bist du dir sicher, dass die Adresse schon vergeben ist?\nDu kannst mit dem Befehl nur die MAC-Adresse des Boards als AccesPoint ändern soweit ich weiß.\nJOJU – 13.12.2015\nJa war tatsächlich bei mir belegt!\nIch habe jetzt auch die Lösung:\nDer Befehl muss so lauten:\nAT+CIPSTAMAC=\u0026ldquo;18:FE:34:A4:67:10\u0026rdquo;\nAlso die MAC Adresse muss in die \u0026ldquo;\u0026rdquo;.\nDanke für die Antwort.\nGruß\nJOJU\nJOJU – 13.12.2015\nJetzt klappt auch die Verbindung!\nIch war auch überrascht, das die MAC Adresse bei mir Doppel erschienen ist!\nIch habe jetzt aus der 65 eine 10 gemacht und alles läuft wie es soll.\nAnsonsten hatte meine Steckdose die gleiche MAC Adresse.\nhier mal im Anhang ein Bild vom Router\nAnhänge:\nHartmut – 13.12.2015\nDas finde ich ausgesprochen spannend. Die MAC Adresse sollte (wie der Chef schon sagte) vom Hersteller eindeutig vergeben werden. Der Hersteller steckt in den ersten 4-6 Byte der MAC Adresse. Das würde bedeuten, dass in Deiner Steckdose auch so ein Chip von Espressif Systems steckt und dass Espressif Systems die Adresse zweimal vergeben hat. Wenn das öfter vorkommen sollte, so sind Probleme vorprogrammiert.\nWenn Du weitere Erkenntnisse zu diesem Thema hast (von wem ist die Steckdose, was ist darin verbaut usw.), lasse es uns bitte wissen.\nGruß\nHartmut\nBTW. Ich habe früher gelernt (vor TCP/IP Zeiten, z.B. bei IBM SNA), dass selbst administrierte MAC Adressen mit 4000 beginnen.\nHartmut – 13.12.2015\nEntschuldigung: die ersten 24 Bit der MAC Adresse sind die Herstellerkennung.\nklaus – 13.12.2015\nDie MAC Adresse sollte (wie der Chef schon sagte) vom Hersteller eindeutig vergeben werden.\nLeider besteht bei den MAC-Adressen schon einige Jahre das gleiche Problem wie bei den IPv4-Adressen. Deshalb werden schon lange MAC-Adressen mehrfach vergeben. Allerdings ist das bei MAC-Adressen nicht ganz so schlimm, wie bei IPs. MAC-Adressen müssen nur im Netzsegment eindeutig sein. Wenn man dann allerdings 2 gleiche hat, ist es meistens schwierig, diese zu ändern. Bei Geräten geht dies oft noch (Router, etc.). Bei Netzwerkkarten ist dies selten möglich.\n","permalink":"https://iot.fkainka.de/forum/topic/wie-aendere-ich-die-mac-adresse-des-wlan-boards/","summary":"\u003cp\u003eWie ändere ich die MAC Adresse des Alan Boards\u003c/p\u003e\n\u003cp\u003eDie MAC Adresse ist bereits vergeben und ich habe dadurch immer Probleme in mein Netzwerk zu kommen.\u003c/p\u003e\n\u003cp\u003ewie kann man die Adresse einstellen ?\u003c/p\u003e\n\u003cp\u003eGruß\u003cbr\u003e\nJOJU\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"7-antworten\"\u003e7 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJOJU\u003c/strong\u003e – 13.12.2015\u003c/p\u003e\n\u003cp\u003eEinen Befehl habe ich dazu gefunden :\u003c/p\u003e\n\u003cp\u003eAT+CIPSTAMAC=18:FE:34:A4:67:10\u003c/p\u003e\n\u003cp\u003eAber ich bekomme immer nur eine Fehlermeldung nach Enter:\u003c/p\u003e\n\u003cp\u003eAT+CIPSTAMAC=18:FE:34:A4:67:10\u003c/p\u003e\n\u003cp\u003eERROR\u003c/p\u003e\n\u003cp\u003eIm ersten Beitrag sollte das WLAN Board heißen und nicht Alan Board \u0026hellip;.\u003c/p\u003e","title":"Wie ändere ich die MAC Adresse des Wlan Boards"},{"content":"In dem heutigen Versuch ist die Darstellung der Webseite noch ausgefeilter. Außerdem gibt es nun auch Steuerelemente, über die eine LED deutlich komfortabler gesteuert werden kann.\nSo schließen Sie die LED mit Vorwiderstand am Pin D9 an Der Aufbau des heutigen Versuchs unterscheidet sich nicht vom dem des gestrigen: Eine LED am Pin D9 die sich über das Modul steuern lässt. Als zusätzliches Bauteil finden Sie hinter dem Kalendertürchen erneut einen Widerstand mit 1 kΩ. Bei Bedarf können sie nun die Helligkeit einer LED reduzieren, indem Sie zwei Widerstände in Reihe schalten.\nDas Programm: Day13_TCPServerProgmen\nDas heutige Programm speichert die Webseite auf eine etwas andere Art als in dem vorrangegangen Programm. Während gestern die einfach gehaltene Webseite im Quelltext enthalten war, wird diesmal die Seite in einer sogenannten Progmen-Variablen gespeichert. Dies entlastet das SRAM des Boards und ermöglicht eine komplexere Darstellung einer Webseite. Sie haben allerdings nicht mehr eine so gute Übersicht über die Seite.\nDie Webseite des Webservers Sie können aber die HTML-Datei im Sketchorder einsehen und bei Bedarf verändern. Wenn Sie die Webseite auf der Webseite\ntools.thebuzzmedia.com/bytechar\nin Bytes umrechnen lassen und diese in die Program-Variable eintragen, haben Sie eine neue Webseite für Ihren Webserver generiert.\nDie Umwandlung auf der Buzz Media Seite ","permalink":"https://iot.fkainka.de/day-13/","summary":"\u003cp\u003eIn dem heutigen Versuch ist die Darstellung der Webseite noch ausgefeilter. Außerdem gibt es nun auch Steuerelemente, über die eine LED deutlich komfortabler gesteuert werden kann.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day5-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-117\" src=\"/images/2015/09/Day5-1.jpg\" alt=\"So schließen Sie die LED mit Vorwiderstand am Pin D9 an\" width=\"616\" height=\"301\" data-id=\"117\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eSo schließen Sie die LED mit Vorwiderstand am Pin D9 an\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDer Aufbau des heutigen Versuchs unterscheidet sich nicht vom dem des gestrigen: Eine LED am Pin D9 die sich über das Modul steuern lässt. Als zusätzliches Bauteil finden Sie hinter dem Kalendertürchen erneut einen Widerstand mit 1 kΩ. Bei Bedarf können sie nun die Helligkeit einer LED reduzieren, indem Sie zwei Widerstände in Reihe schalten.\u003c/p\u003e","title":"Tag 13: Webseite mit Buttons"},{"content":"Die Ergebnisse des gestrigen Versuches gilt es nun wieder in einem autonomen Programm zu verwenden. Das heutige Programm sendet aber nicht nur eine einfache Webseite an den Browser, sondern es ermöglicht zusätzlich die Ansteuerung einer LED.\nHinter dem heutigen Türchen befindet sich ein 9-V-Batterieclip mit dem Sie das Board mobil machen können. Als Alternative können Sie auch eine Power Bank (ein Akku-Pack, normalerweise für Handys) verwenden. Wenn Sie die 9V-Batterie verwenden wollen, achten Sie darauf, dass der rote Draht mit Vin verbunden werden muss, und der schwarze mit GND. Auf dem unteren Bild sehen Sie den Aufbau des heutigen Versuchs mit externer Stromversorgung.\nSo schließen Sie eine Batterie an den heutigen Versuchsaufbau an Das Programm: Day12_TCPServerLed\nDas heutige Programm sendet eine etwas komplexere Seite als der vorrangegangenen Versuch. Zudem können Sie die LED am Pin D9 schalten, indem Sie hinter die IP des Moduls /LED eintragen. Der aktuelle Zustand der LED wird dann invertiert, also jedes Mal umgeschaltet (toggeln).\nTragen Sie Ihre WLAN-Daten ein und laden Sie das Programm hoch. Die IP des Boards wird im Seriellen Monitor angezeigt. Dann können Sie den Browser öffnen und die IP des Boards aufrufen. Die Webseite hat nun eine Überschrift und etwas mehr Text. Der Text weist Sie auch darauf hin, wie Sie die LED steuern können. Ein erster voll autonomer Webserver also.\n","permalink":"https://iot.fkainka.de/day-12/","summary":"\u003cp\u003eDie Ergebnisse des gestrigen Versuches gilt es nun wieder in einem autonomen Programm zu verwenden. Das heutige Programm sendet aber nicht nur eine einfache Webseite an den Browser, sondern es ermöglicht zusätzlich die Ansteuerung einer LED.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich ein 9-V-Batterieclip mit dem Sie das Board mobil machen können. Als Alternative können Sie auch eine Power Bank (ein Akku-Pack, normalerweise für Handys) verwenden. Wenn Sie die 9V-Batterie verwenden wollen, achten Sie darauf, dass der rote Draht mit Vin verbunden werden muss, und der schwarze mit GND. Auf dem unteren Bild sehen Sie den Aufbau des heutigen Versuchs mit externer Stromversorgung.\u003c/p\u003e","title":"Tag 12: Autonomer Webserver"},{"content":"Ich bin bald am verzweifeln. Ich habe den Sketch von Tag11 mal etwas erweitert, so dass eine Antwort von ganz alleine generiert wird.\nTeste ich den Sketch mit Firefox3, so funktioniert es auch fast einwandfrei. Fast, weil komischerweise in der Rückmeldung auf die Nachricht \u0026ldquo;Hallo\u0026hellip;\u0026rdquo; noch ein \u0026ldquo;busy s\u0026hellip;\u0026rdquo; dran hängt. Dann aber nächste Zeile SEND OK und die Antwort kommt ohne Probleme zurück zum Browser.\nNutze ich stattdessen einen aktuellen Opera, Chrome oder Safari, so werden 2 Verbindungen zum Modul aufgebaut. Auf der Verbindung 0 kommt wie gewohnt die Anfrage des Browsers, Verbindung 1 wird gleich wieder geschlossen. Mein Sketch sendet nun die Antwort wie gewohnt an Verbindung 0, Verbindung 1 wird ignoriert, da keine Anfrage rein kommt. Allerdings wird bei jeder Anfrage 2 Antworten generiert, wovon nur eine durch geht, bei der anderen kommt \u0026ldquo;Send Error\u0026rdquo;.\nVielleicht gibt es ja hier jemanden, der weiß, was die modernen Browser da komisches treiben.\nAnhänge:\nDay11_TCPServer-151211a.zip\n5 Antworten Raabinator – 11.12.2015\nHallo Klaus.\nAus deiner Funktion espConnectionIP gibst du einen Zeiger auf ein char-Array zurück, das nur in dieser Funktion gültig ist.\nDieses Array wird beim Aufruf der Funktion auf dem Stack angelegt. Wird die Funktion verlassen, wird dieser Speicher wieder für die Benutzung freigegeben. D.h. die Daten werden durch Daten der nächsten Funktion überschrieben. Das kann funktionieren, ist aber sehr unwahrscheinlich und unsicher.\nDa gibt es zwei Möglichkeiten:\ndeklariere tmp1 als static (static char tmp1[100];). Damit wird tmp1 global angelegt und nicht mehr überschrieben, ist aber weiterhin nur in dieser Funktion sichtbar. Der Inhalt bleibt zwischen den Funktionsaufrufen erhalten. definiere tmp1 global (vor allen Funktionen). tmp1 ist dann für alle Funktionen sichtbar, ausser für loop(), denn da gibt es nochmal ein lokales tmp1. klaus – 11.12.2015\nIch hab das nur ausgelagert. Als ich es noch direkt in der loop() drin hatte, war das Ergebnis exakt das gleiche.\nklaus – 12.12.2015\nLösung gefunden.\nString tmp; tmp=sendCom(tmp); hat dieses Phänomen erzeugt. sendCom gibt ein boolean zurück. Das wird nicht korrekt umgewandelt. Der alte Inhalt aus tmp bleibt erhalten, aber das Ende-Zeichen wird wohl überschrieben.\nOffen bleibt die Frage, warum die Browser heutzutage eine zweite Verbindung öffnen, die sie gleich wieder schließen?\nRoebi – 16.12.2015\nHallo Klaus.\nEv. könnte\nhttps://en.m.wikipedia.org/wiki/HTTP_persistent_connection#HTTP_1.1\nhttps://en.m.wikipedia.org/wiki/HTTP_persistent_connection#Use_in_web_browsers\nein Grund sein, dass die moderneren Browser (HTTP 1.1) das Verhalten des Webservers auf die Fähigkeit mehrere Verbindungen zu öffnen prüfen.\nGruss Röbi\nklaus – 17.12.2015\nDanke, das hört sich nach einer plausiblen Erklärung an. Fragt sich nur, warum der Browser die Verbindung gleich wieder schließt? Der Server hat ja so gar keine Chance, mehrere Inhalte simultan zu übertragen.\n","permalink":"https://iot.fkainka.de/forum/topic/tag11-automatisch/","summary":"\u003cp\u003eIch bin bald am verzweifeln. Ich habe den Sketch von Tag11 mal etwas erweitert, so dass eine Antwort von ganz alleine generiert wird.\u003cbr\u003e\nTeste ich den Sketch mit Firefox3, so funktioniert es auch fast einwandfrei. Fast, weil komischerweise in der Rückmeldung auf die Nachricht \u0026ldquo;Hallo\u0026hellip;\u0026rdquo; noch ein \u0026ldquo;busy s\u0026hellip;\u0026rdquo; dran hängt. Dann aber nächste Zeile SEND OK und die Antwort kommt ohne Probleme zurück zum Browser.\u003cbr\u003e\nNutze ich stattdessen einen aktuellen Opera, Chrome oder Safari, so werden 2 Verbindungen zum Modul aufgebaut. Auf der Verbindung 0 kommt wie gewohnt die Anfrage des Browsers, Verbindung 1 wird gleich wieder geschlossen. Mein Sketch sendet nun die Antwort wie gewohnt an Verbindung 0, Verbindung 1 wird ignoriert, da keine Anfrage rein kommt. Allerdings wird bei jeder Anfrage 2 Antworten generiert, wovon nur eine durch geht, bei der anderen kommt \u0026ldquo;Send Error\u0026rdquo;.\u003cbr\u003e\nVielleicht gibt es ja hier jemanden, der weiß, was die modernen Browser da komisches treiben.\u003c/p\u003e","title":"Tag11 automatisch"},{"content":"Liebe Adventskalender-Freunde,\nich bekomme neuerdings die folgende Fehlermeldung, wenn ich einen Sketch hochlade.\navrdude: stk500_recv(): programmer is not responding\nEs geschah am Tag 10, der Sketch hat perfekt funktioniert. Dann habe ich eine eigene Version erstellt, bei der ich die Stadt am Serial Monitor eingeben können wollte. Das Teil habe ich dann wegen dem Fehler nicht mehr hochladen können. Ich hoffe, der Code war nicht so schlecht, dass er gleich das ganze Board zerstört hat.\nIch habe schon mehrere Sachen inklusive CH340-Treiber-Reinstallation ausprobiert, mehrmals gebootet usw. Leider erfolglos. Heute habe ich das Board auf meinem Arbeitsrechner angeschlossen, Arduino-IDE installiert, gleiches Problem.\nEs ist nichts an Pin0/1 angeschlossen. Das Board ist völlig nackt, hängt nur am USB-Kabel. Am Kabel liegt es auch nicht, ich habe ein anderes ausprobiert.\nTja, leider kann ich derzeit also nichts machen. Kann hier vielleicht jemand helfen?\n17 Antworten fk – 11.12.2015\nHi,\nalso die Meldung sagt aus, dass der Arduino Bootloader nicht erreicht werden kann. Das kann nun mehrere Ursachen haben.\nDer Bootloader vom Arduino ist zerschossen (selten aber kann vorkommen) Der Arduino Chip ist kaputt (z.B. durch kurze Überspannung) Der USB-to-Serial Chip ist kaputt Für eine bessere Fehlerdiagnose: hast du Zugang zu einem Programmer, einem USB-to-Serial Adapter oder einem anderen Arduino?\nschlork – 11.12.2015\nHallo,\nich habe zuhause noch einen Arduino Uno. Den habe ich gestern abend auch mal angeschlossen und der hat gefunzt.\nfk – 11.12.2015\nOkay das ist gut für die Fehlerdiagnose.\nMir fällt noch ein: kannst du sehen, dass das zuletzte rein geladenen Programm ausgeführt wird? Z.B. indem die blaue LED D3 auf dem Board nach kurze Zeit nach anstecken des Boards beginnt zu leuchten?\nschlork – 12.12.2015\nDas letzte Programm müsste sich eigentlich ins WLAN hängen, die D3 leuchtet aber nicht. Einzig die rote D6 und die blaue D2 (wenn ich das ohne Lupe richtig abgelesen habe).\nschlork – 12.12.2015\nUpdate: In der Fritzbox erscheint das Board als angemeldetes Gerät, d.h. anscheinend läuft das Programm doch irgendwie\u0026hellip;\nschlork – 12.12.2015\nIch habe inzwischen den Verdacht, dass mein letztes Programm das vielleicht verursacht hat. Ich hatte da in der loop-Methode irgendwas mit SerialRead eingebaut. Ist es vielleicht eine Möglichkeit, irgendwie den Werkszustand herzustellen?\nfk – 12.12.2015\nDas WLAN-Modul vom Board meldet sich auch automatisch im WLAN an. Da die LED nicht leuchtet vermute ich, dass der Arduino-Mikrocontroller nicht mehr funktioniert.\nMann kann versuchen, mit einem externen Programmer das Programm im Arduino wieder herzustellen oder zumindest erstmal zu teste, ob der Controller noch zu retten ist. Das ist allerdings relativ aufwändig und schwierig zu erklären.\nAm Besten ist wohl, du schreibst mir über die Mail-Adresse im Impressum eine Mail mit deiner Adresse und ich frage mal, ob Franzis das Board aus Kulanz austauscht.\nKAOS – 12.12.2015\nSchlork, vielleicht ist es gar nicht so dramatisch. :)\nIch hatte das Problem heute auch und es stellte sich heraus, dass (warum auch immer) im Arduino-Programm unter Tools -\u0026gt; Serieller Port die falsche Schnittstelle ausgewählt war. Eine weitere Fehlermöglichkeit ist eine falsche Einstellung unter Tools -\u0026gt; Board.\nschlork – 13.12.2015\n@KAOS: Leider ist es nicht so einfach, trotzdem danke.\n@Fabian: Mail abgeschickt, danke.\nkusmi – 18.12.2015\nIch habe ein ähnliches Problem - ich habe bis zum Tag 14 alle Experimente durchführen können, aber als ich heute das NanoESP Modul für das Experiment 15 programmieren wollte, konnte ich es nicht hochladen und erhielt die Fehlermeldung:\navrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00 ... Immer wenn ich das USB Kabel einstecke leuchtet D2 blau und D6 rot und nach einer Sekunde fängt die LED D3 wie wild an zu blinken und hört nicht mehr auf.\nGibt es eine Möglichkeit das Board zu \u0026ldquo;resetten\u0026rdquo; oder wie könnte ich es wieder re-aktivieren?\nklaus – 19.12.2015\nZur allergrößten Not mit dem Aufspielen eines neuen Bootloaders. Dazu brauchst Du aber einen Programmer, oder einen weiteren Arduino. Hast Du sowas?\nkusmi – 19.12.2015\nMit \u0026ldquo;Programmer\u0026rdquo; meinst Du ein USB ➔ Serial Adapter? Leider nicht - und das ist auch mein erster Arduino.\nGibt es eigentlich eine Übersicht was die LEDs auf dem NanoESP alles bedeuten?\nklaus – 19.12.2015\nIch meine einen ISP-Programmer für Atmels. Hättest Du noch einen weiteren Arduino, so hättest Du damit den Programmer nachbilden können. Damit wäre es dann möglich, wenn Du den 6-poligen Sockel einlötest, direkt den Atmel zu programmieren und so den Bootloader neu zu flaschen. Könnte vielleicht sein, dass der bei Dir aus irgendeinem Grund defekt ist. Kennst Du nicht vielleicht jemanden, der sowas hat?\nLeider gibt es keine exakten Unterlagen über den Nanoesp. Die LEDs neben dem Knopf sind Power, Rx, Tx und Digital IO13. Die anderen zeigen wohl Power, Rx oder Tx des WLAN-Moduls. Eine Schaltung des Boards wurde leider des Öfteren angefragt. Aber irgendwie will das scheinbar jemand geheim halten.\nkusmi – 21.12.2015\nHallo Klaus\nMerci für die Infos - ich habe mir einen zweiten Arduino bestellt und werde das Flashen dann mal ausprobieren - ich bin eigentlich Softwareentwickler, also alles was mit Software (Flashen ;-) zu tun hat, sollte ich eigentlich verstehen. Einfach mit Hardware hapert es noch - das letzte mal wo ich Elektronikbasteleien machte war noch zur Uni-Zeit :-)\nD.h. D3 = Power? oder D2 = Power? Bei mir leuchtet ja D2 gleich beim Einschalten und D3 erst nach einer Sekunde - dann wird wohl D2 = Power sein.\nJetzt hoffe ich mal das wirklich nur der Bootloader kaputt ist und nicht das ganze Board.\nkusmi – 21.12.2015\nOK, ich bin wieder im Rennen, mein NanoESP Board funktioniert wieder - geholfen hat mir die LED Statusmeldung. D3 ist jene LED, die bei Arduino teilweise als \u0026ldquo;LED L\u0026rdquo; bezeichnet wird und normalerweise blinkt die 3-mal wenn der Bootloader drauf ist - aber noch kein Sketch geladen wurde (wahrscheinlich um zu signalisieren, dass man überhaupt einen Bootloader drauf hat). Es kann aber passieren dass der Bootloader in einem Loop gefangen ist und immer wieder neu startet, dann blinkt die D3 LED ewig - genau das scheint bei mir passiert zu sein.\nAuf Arduino Nano not responding with yellow led blinking fast hab ich eine Hilfe gefunden, wie man den Arduino dann wieder zum laufen bringt:\nBoard ausschalten, also USB Kabel ausstecken Reset-Knopf auf Board drücken und gedrückt halten USB Kabel einstecken und immer noch Reset-Knopf gedrückt halten In Arduino-Umgebung einen (leeren) Sketch öffnen und auf \u0026ldquo;Upload\u0026rdquo; drücken, wie gewohnt Warten bis in der Arduino-Umgebung die Statusmeldung \u0026ldquo;Uploading\u0026hellip;\u0026rdquo; erscheint Dann Reset-Knopf loslassen Ich musste 2-3 mal probieren, aber dann hat es funktioniert. Jetzt läuft mein Board wieder und ich kann doch noch den Kalender fertig spielen :-) Jetzt gibt es einiges nachzuholen!\nklaus – 21.12.2015\nInteressanter Zusammenhang. Danke für die Rückmeldung. Kann vielleicht mal irgendwann was nutzen.\nriegler93 – 14.01.2016\nHallo im neuen Jahr!\nIch habe auch das Problem:\n\u0026ldquo;avrdude: stk500_recv(): programmer is not responding\u0026rdquo;\nHabe bereits vieles von diesem und anderen Foren probiert- ohne Erfolg.\nGibt es schon eine Rückmeldung bezüglich der Kulanzanfrage?\n","permalink":"https://iot.fkainka.de/forum/topic/kein-sketch-upload-mehr-moeglich-avrdude-stk500_recv/","summary":"\u003cp\u003eLiebe Adventskalender-Freunde,\u003c/p\u003e\n\u003cp\u003eich bekomme neuerdings die folgende Fehlermeldung, wenn ich einen Sketch hochlade.\u003c/p\u003e\n\u003cp\u003eavrdude: stk500_recv(): programmer is not responding\u003c/p\u003e\n\u003cp\u003eEs geschah am Tag 10, der Sketch hat perfekt funktioniert. Dann habe ich eine eigene Version erstellt, bei der ich die Stadt am Serial Monitor eingeben können wollte. Das Teil habe ich dann wegen dem Fehler nicht mehr hochladen können. Ich hoffe, der Code war nicht so schlecht, dass er gleich das ganze Board zerstört hat.\u003c/p\u003e","title":"Kein Sketch-Upload mehr möglich: avrdude: stk500_recv()"},{"content":"Hi,\nvielen ist es bereits aufgefallen, dass das Board nach kurzer zeit recht warm wird.\nDies ist normal für diesen WLAN-Chip und wurde an mehreren Stellen schon in den Kommentaren diskutiert:\nZitate:\nHartmut - Dienstag, der 1. Dezember 2015 um 23:36\n\u0026ldquo;Bei meinem Board wird der 3.3V Spannungsregler zwischen ATMega und ESP8266 auf der Unterseite des Bords ziemlich heiß. Da fallen ja 5V-3.3V=1.7V * 100mA = 170mW ab. Auf dieser kleinen Fläche ist das schon eine gewisse (Wärme-)Energie. Ohne den Spannungsregler zu kennen, vermute ich aber doch, dass er für diese Belastung ohne weitere Kühlung ausgelegt ist. Auch der WLAN Chip nimmt laut Datenblatt im Schnitt 80mA bei 3.3V = 1/4W auf, die ja im wesentlichen in Wärme verwandelt werden. Wenn er dabei heiß wird, so ist das wohl auslegungsgemäß.\u0026rdquo;\nZitat: BravoSierra - Montag, der 7. Dezember 2015 um 17:16\n\u0026ldquo;Servus\nDas habe ich aus dem Datenblatt:\n„Operating Temperature Range -40°~125°“\u0026rdquo;\nJan - Montag, der 7. Dezember 2015 um 19:35\n\u0026ldquo;Servus,\nich hab das gleiche Problem der Chip wird ziemlich warm (48C auf dem Chip 37 auf der Unterseite)\nBravoSierra meint ja dass die Betriebstemperatur bis 125C reicht. Ich hab allerdings gleich nachdem ich das Modul ausprobiert, und die Temperaturen bemerkt hab einen Kühlkörper für Transistoren aufgeklebt zb. für TO-92 I Gehäuse.\nDanach sind die Temperaturen bei mir auf 37C auf dem Kühlkörper und 35C auf der Unterseite zurückgegangen. (Raumtemperatur von 22C)\nSomit sollte der Arduino hoffentlich noch lange halten ;)\u0026rdquo;\n3 Antworten frubbi – 12.12.2015\nBei meinem Board scheint es einen Zusammenhang zwischen Funktionsfähigkeit und Hitzeentwicklung zu geben.\nZu Beginn bei kaltem Board funktionieren alle WLAN Befehle ohne Probleme. Nach kurzer Zeit (ca. 30 s) wird das Board so heiß, dass es zu Störungen der WLAN Verbindung kommt. Durch Kühlung funktioniert es dann wieder. Ist das Board defekt?\nfk – 12.12.2015\nDas hört sich wirklich nicht ganz richtig an. Die Wärmeentwicklung sollte das Modul nicht beeinflussen. Vermutlich ist das Board nicht in Ordnung.\nklaus – 13.12.2015\nLeider wurden die Links zu den Bildern aus den Kommentaren gelöscht.\nDa das Thema hier nochmal aufgemacht wurde, hier nochmal die Bilder. Ich habe mal das kleine Originalboard und den Nanoesp untersucht. Die Wärmebilder (mit leider Punkten von defekten Pixeln) hänge ich an.\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/pretzelboard-nanoesp-wird-warm/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003evielen ist es bereits aufgefallen, dass das Board nach kurzer zeit recht warm wird.\u003c/p\u003e\n\u003cp\u003eDies ist normal für diesen WLAN-Chip und wurde an mehreren Stellen schon in den Kommentaren diskutiert:\u003c/p\u003e\n\u003cp\u003eZitate:\u003c/p\u003e\n\u003cp\u003eHartmut - Dienstag, der 1. Dezember 2015 um 23:36\u003cbr\u003e\n\u003cem\u003e\u0026ldquo;Bei meinem Board wird der 3.3V Spannungsregler zwischen ATMega und ESP8266 auf der Unterseite des Bords ziemlich heiß. Da fallen ja 5V-3.3V=1.7V * 100mA = 170mW ab. Auf dieser kleinen Fläche ist das schon eine gewisse (Wärme-)Energie. Ohne den Spannungsregler zu kennen, vermute ich aber doch, dass er für diese Belastung ohne weitere Kühlung ausgelegt ist. Auch der WLAN Chip nimmt laut Datenblatt im Schnitt 80mA bei 3.3V = 1/4W auf, die ja im wesentlichen in Wärme verwandelt werden. Wenn er dabei heiß wird, so ist das wohl auslegungsgemäß.\u0026rdquo;\u003c/em\u003e\u003c/p\u003e","title":"Pretzelboard / NanoESP wird warm"},{"content":"Hi,\nda ich es gerade zeitlich nicht schaffe noch ein paar Informationen in einem Beitrag aufzuarbeiten hier mal ein Sammelsurium an Informationshäppchen.\nPDFs:\nSchaltplan Arduino Nano (Original Rev 3) Pinout Arduino Nano (von pighixxx.com) Datenblatt CH340G (USB-to-Serial Chip) Datenblatt ESP8266 (WLAN-Modul) AT-Firmware Informationen Anhänge:\n11 Antworten McElch – 16.12.2015\nEine Frage drängt sich dem Anfänger auf:\nÜberall, wo es ums NanoESP Wifi-Board geht (hier, Conrad, Franzis) steht einerseits, dass das Board Nano-kompatibel ist. Es steht aber auch überall, dass es 6 analoge Eingänge hat.\nIn allen Dokus über den Nano steht, dass er 8 analoge Eingänge hat.\nDas Nano ESP Wifi Board hat auch Pins A0 bis A7, wenn mich meine Augen nicht trügen.\nIm hier oben verlinkten Pinout Arduino Nano steht bei Pin A6 und A7 mit einem roten Ausrufezeichen \u0026ldquo;Analog exclusively Pins\u0026rdquo;.\nWas hat es denn nun mit diesen beiden mysteriösen Pins auf sich? Kann man die als analoge Eingänge nehmen oder nicht?\nAuch an dieser Stelle nochmal: Der Kalender ist klasse, macht großen Spaß, hat einen guten Lerneffekt und wird sicher nicht nur bei mir der Einstieg in das spannende Thema Arduino sein! :)\nVielen Dank!\nfk – 16.12.2015\nHi,\nja du hast recht es gibt 8 analoge Eingänge (2 mehr als beim Uno) die letzen beiden analogen Eingänge (A6 \u0026amp; A7) können allerdings nicht als digitale Ausgänge benutzt werden (im Gegensatz zu den anderen analogen Pins)\nMcElch – 16.12.2015\nNa das ist doch gut zu wissen, danke für die schnelle Info!\nklaus – 17.12.2015\nDie angegebenen Schaltungen passen aber nur sehr oberflächlich zum Nanoesp. Da sind schon vom Arduino Nano einige Unterschiede. Gibt es denn keine Schaltung von genau dem Board? Irgendjemand muss davon doch was haben.\nJoerg – 20.12.2015\nHallo zusammen,\nes wäre interessant zu wissen, welche WLAN-Standards und Verschlüsselungsmodi mit dem NanoESP zuverlässig funktionieren. Laut obigem Datenblatt unterstützt das ESP-Modul ja 802.11 b/g/n und sowohl WPA-PSK als auch WPA2-PSK.\nIm Forum berichteten aber andere Kalenderfreunde von Problemen der Anmeldung am Access-Point unter 802.11n. Bei ist es eher der Verschlüsselungsmodus: die Verbindung zum Access-Point klappt nur, wenn ich diesen auf WPA-PSK [TKIP] einstelle. In der Standard-Einstellung (WPA2-PSK [AES], 802.11n) bekomme ich immer die Meldung +CWJAP:1 FAIL oder auch +CWJAP:3 FAIL.\nAn dem Router/Access-Point selbst scheint es nicht zu liegen, denn das Problem ließ sich an einem anderen Access-Point/Router eines anderen Herstellers reproduzieren.\nMerkwürdig ist auch, dass der gemischte Modus (WPA-PSK [TKIP] + WPA2-PSK [AES]) auch nicht funktioniert, obwohl Clients sich ja hier mit WPA-PSK [TKIP] anmelden können.\nDaher meine Frage: gibt es noch Möglichkeiten, diese Verbindungsprobleme zum Access-Point etwas detaillierter zu analysieren. Das \u0026ldquo;+CWJAP:1 FAIL\u0026rdquo; ist ja nicht gerade übermäßig verbos. Der Rückgabewert CWJAP:1 sagt ja \u0026ldquo;connecting timeout\u0026rdquo;, die Frage wäre also, ob man diesen Timeout des ESP8266 etwas hochsetzten kann (und das ist wohl nicht der einstellbare Timeout der seriellen Schnittstelle).\nHaben vielleicht andere User ähnliche Probleme gehabt und eine Lösung gefunden?\nWäre es vielleicht sinnvoll, ein Firmware-Update auf dem ESP-Modul zu versuchen (die installierte Version ist 0.22 und die aktuelle scheint bei 0.50 zu liegen)?\nVielen Dank, Jörg\nklaus – 20.12.2015\nIch hab es noch nicht ausprobiert. Muss erstmal sehen, mit welchem Router ich das mal probieren kann. Ich habe noch einzelne Module mit denen ich das gefahrlos testen könnte. Weiß nur nicht, wo ich die Firmware habe. Ich war mir sicher, ich habe mal eine runter geladen. Ich habe aber auch nur 4K-Mudule. Da passt nicht alles rein. Hast Du mal nen Link zu der neuen Firmware?\nJoerg – 20.12.2015\nDie AT-Firmware gibt es wohl auf der Espressif-Seite . Ich weiß aber nicht, ob diese gefahrlos auf dem NanoESP installiert werden kann.\nklaus – 21.12.2015\nDanke für den Link. Die Seite hatte ich noch nie gesehen. Muss ich mir gleich mal speichern.\nDen Nanoesp werde ich erstmal gar nicht anrühren. Wie gesagt, ich hab noch kleine Module. Auf denen werde ich das erstmal testen.\nklaus – 21.12.2015\nDie neue Version ist scheinbar leider erst ab 8K. Da ich 4K-Module habe, kann ich sie nicht rein laden.\nklaus – 21.12.2015\nSo, mal beide Module probiert. Also sowohl mit der Version 0.22 vom NanoESP, als auch mit Version 0.51 mit dem kleinen Modul können sich per WPA und WPA2 AES \u0026amp; TKIP verbinden. WEP habe ich jetzt nicht probiert, da das eh keiner mehr haben sollte.\nWas mir aufgefallen war, bei der neuen Version (0.51) passierte es, wenn ich die Verschlüsselung geändert hatte, dass das Modul nicht mehr ansprechbar war. Es bootete, wollte sich zum WLAN verbinden, was ja nicht klappte, und bottete wieder. Nur ein erneutes Aufspielen der Firmware half noch. Beim Nanoesp ist mir das nicht passiert.\nAlso, lieber das Modul mit AT+CWMODE=2 vorher wieder in einen ansprechbaren Modus versetzen, oder WLAN-Daten löschen.\nJoerg – 21.12.2015\nDanke, interessant. Ich habe es gerade an meinem Access-Point nochmal systematisch durchprobiert: bei mir nach wie vor keine Verbindung mit WPA2/AES. Nach Umstellen auf WPA/TKIP geht es wieder. Seltsam. Ich finde auch in der Doku zum AT Instruction Set keine Parameter, die ggf. noch im Flash gesetzt sind und die Verbindung über WPA2/AES verhindern könnten. Da muss ich wohl noch etwas weiter suchen\u0026hellip;\n","permalink":"https://iot.fkainka.de/forum/topic/hardware-informationen/","summary":"\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eda ich es gerade zeitlich nicht schaffe noch ein paar Informationen in einem Beitrag aufzuarbeiten hier mal ein Sammelsurium an Informationshäppchen.\u003c/p\u003e\n\u003cp\u003ePDFs:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf\"\u003eSchaltplan Arduino Nano (Original Rev 3)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://pighixxx.com/nanopdf.pdf\"\u003ePinout Arduino Nano (von pighixxx.com)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.olimex.com/Products/Breadboarding/BB-CH340T/resources/CH340DS1.PDF\"\u003eDatenblatt CH340G (USB-to-Serial Chip)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://nurdspace.nl/images/e/e0/ESP8266_Specifications_English.pdf\"\u003eDatenblatt ESP8266 (WLAN-Modul)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://bbs.espressif.com/download/file.php?id=256\"\u003eAT-Firmware Informationen\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"NEW-NanoESP8266-Adventskalender_Schaltplan.jpg\" loading=\"lazy\" src=\"/images/2015/12/NEW-NanoESP8266-Adventskalender_Schaltplan.jpg\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"11-antworten\"\u003e11 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eMcElch\u003c/strong\u003e – 16.12.2015\u003c/p\u003e\n\u003cp\u003eEine Frage drängt sich dem Anfänger auf:\u003c/p\u003e\n\u003cp\u003eÜberall, wo es ums NanoESP Wifi-Board geht (hier, Conrad, Franzis) steht einerseits, dass das Board Nano-kompatibel ist. Es steht aber auch überall, dass es 6 analoge Eingänge hat.\u003c/p\u003e","title":"Hardware Informationen"},{"content":"In den vorangegangenen Versuchen haben wir uns viel mit dem Thema TCP und dem Zugriff auf Webserver beschäftigt. Heute soll das Modul erstmalig selbst als Webserver fungieren.\nHinter dem Türchen des 11. Tages befindet sich ein besonderes Kabel, das demnächst noch sehr nützlich sein wird. Ein spezieller Aufbau ist heute nicht nötig, da das Programm ähnlich wie das Serial Monitor Programm des ersten Tages funktioniert.\nDas Programm: Day11_TCPServer\nÄndern Sie wie bisher die WLAN-Daten und laden Sie das Programm auf Ihr Board. Dann starten Sie den Monitor. Es kann wieder ein paar Sekunden dauern, bis die Meldung erscheint, dass das Board verbunden ist. Wenn die Erfolgsmeldung erschienen ist und die IP des Moduls angezeigt wird, können Sie im Serial Monitor mit dem ersten Befehl beginnen:\nAT+CIPMUX=1\nMit diesem Befehl lassen Sie mehrere Verbindungen mit dem Modul zu. So können mehrere Rechner auf den Webserver zugreifen. Mit dem nächsten Befehl starten Sie den Webserver:\nAT+CIPSERVER=1,80\nDer Parameter 1 bedeutet, dass der Server gestartet wird. Mit 0 beenden Sie einen Server wieder. Die Zahl 80 steht für den Port, unter dem der Server zu erreichen ist. Vom Browser gesendete HTTP-Anfragen werden generell über den Port 80 gesendet.\nSie können nun einen Browser Ihrer Wahl öffnen und in die Adressleiste die IP des Moduls eintippen und aufrufen. Im Browser erscheint zunächst eine Lademeldung, aber im Serial Monitor können Sie eine Veränderung beobachten. Sie sehen eine Request-Anfrage ähnlich der, die Sie schon manuell versendet haben.\nDie Browser-Anfrage Der Browser wartet nun also auf eine Antwort und zeigt solange ein Ladezeichen, bis die Verbindung wegen Timeout getrennt wird. Sie können dem Browser mit einer Variante eines bekannten Befehls eine Nachricht schicken:\nAT+CIPSEND=0,7\nDer Parameter 0 gibt hier den Client an, an den die Nachricht geschickt werden soll. Das ist nötig, weil mehrere Verbindungen erlaubt sind und deswegen auch mehrere Clients verbunden sein können. Der zweite Parameter, hier 7, gibt erneut die zu sendenden Zeichen an. Es erscheint \u0026gt; und Sie können ein einfaches\nHallo\neintippen und mit Enter senden. In Ihrem Browser wird sich zunächst einmal dennoch nichts ändern, denn Sie müssen die Verbindung erst schließen. Verwenden Sie dazu den Befehl\nAT+CIPCLOSE=0\nNun können Sie im Browser ein Hallo sehen und damit haben Sie eine erste Webserver Anwendung realisiert.\n","permalink":"https://iot.fkainka.de/day-11/","summary":"\u003cp\u003eIn den vorangegangenen Versuchen haben wir uns viel mit dem Thema TCP und dem Zugriff auf Webserver beschäftigt. Heute soll das Modul erstmalig selbst als Webserver fungieren.\u003c/p\u003e\n\u003cp\u003eHinter dem Türchen des 11. Tages befindet sich ein besonderes Kabel, das demnächst noch sehr nützlich sein wird. Ein spezieller Aufbau ist heute nicht nötig, da das Programm ähnlich wie das Serial Monitor Programm des ersten Tages funktioniert.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDas Programm: \u003ca href=\"/images/2015/09/Day11_TCPServer.zip\"\u003eDay11_TCPServer\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eÄndern Sie wie bisher die WLAN-Daten und laden Sie das Programm auf Ihr Board. Dann starten Sie den Monitor. Es kann wieder ein paar Sekunden dauern, bis die Meldung erscheint, dass das Board verbunden ist. Wenn die Erfolgsmeldung erschienen ist und die IP des Moduls angezeigt wird, können Sie im Serial Monitor mit dem ersten Befehl beginnen:\u003c/p\u003e","title":"Tag 11: TCP Webserver"},{"content":"Ich habe mal eine neue Version gebastelt, bei der man über die Konsole jederzeit eine neue Stadt eingeben kann. Ansonsten wird alle Minute die aktuelle Temperatur abgefragt.\nAnhänge:\nDay10_TCPWeatherUpdate-151210a.zip\n","permalink":"https://iot.fkainka.de/forum/topic/tag-10-eingabemoeglichkeit/","summary":"\u003cp\u003eIch habe mal eine neue Version gebastelt, bei der man über die Konsole jederzeit eine neue Stadt eingeben kann. Ansonsten wird alle Minute die aktuelle Temperatur abgefragt.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/12/Day10_TCPWeatherUpdate-151210a.zip\"\u003eDay10_TCPWeatherUpdate-151210a.zip\u003c/a\u003e\u003c/p\u003e","title":"Tag 10 - Eingabemöglichkeit"},{"content":"Hallo Leute,\nich habe hier ein kleines Problem mit meinem NanoESP. Ich kann da nichts mehr drauf Hochladen. Es kommt immer eine Fehlermeldung: avrdude: ser_open(): can\u0026rsquo;t open device \u0026ldquo;\\.\\COM11\u0026rdquo;: Zugriff verweigert\nProblem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.\nund noch solche:\navrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xd4\nBitte um schnelle Hilfe\nMit freundlichen Grüßen\ndaniprog\n1 Antwort daniprog – 10.12.2015\nProblem gelöst.\nFalls das einem weiterhilft: Achten wo man was einsteckt. Wenn der einen konflikt mit einem Kontakt hat, reagiert er wahrscheinlich nicht mehr.\n","permalink":"https://iot.fkainka.de/forum/topic/probleme-beim-hochladen/","summary":"\u003cp\u003eHallo Leute,\u003c/p\u003e\n\u003cp\u003eich habe hier ein kleines Problem mit meinem NanoESP. Ich kann da nichts mehr drauf Hochladen. Es kommt immer eine Fehlermeldung: \u003cstrong\u003eavrdude: ser_open(): can\u0026rsquo;t open device \u0026ldquo;\\.\\COM11\u0026rdquo;: Zugriff verweigert\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eProblem beim Hochladen auf das Board. Hilfestellung dazu unter \u003ca href=\"http://www.arduino.cc/en/Guide/Troubleshooting#upload\"\u003ehttp://www.arduino.cc/en/Guide/Troubleshooting#upload\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eund noch solche:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eavrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xd4\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eBitte um schnelle Hilfe\u003c/p\u003e\n\u003cp\u003eMit freundlichen Grüßen\u003c/p\u003e\n\u003cp\u003edaniprog\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-antwort\"\u003e1 Antwort\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003edaniprog\u003c/strong\u003e – 10.12.2015\u003c/p\u003e\n\u003cp\u003eProblem gelöst.\u003c/p\u003e\n\u003cp\u003eFalls das einem weiterhilft: Achten wo man was einsteckt. Wenn der einen konflikt mit einem Kontakt hat, reagiert er wahrscheinlich nicht mehr.\u003c/p\u003e","title":"Probleme beim Hochladen"},{"content":"Bei mir haben bis heute (Day 10) alle Projekte funktioniert, manche nicht auf Anhieb, aber OK.\nNun habe ich (Neuling) noch einen separaten Adurino Uno und auch ein WiFi Board ESP8266 (beides war unbenutzt) und den Ehrgeiz die Projekte wenigstens zum Teil auch auf dieser Kombination nachzubauen. Doch da bin ich kläglich gescheitert.\nAls erstes wollte das Projekt aus Wlan Kochbuch http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/ nachbauen und testen.\nKein \u0026ldquo;Land in Sicht\u0026rdquo;, geht einfach nicht. Das Wlan Modul meldet sich einfach nicht am Router an. Ich habe die 3 Sketche nacheinander geladen. Hardwareseitig hatte ich einen Stützelko 100uF (220uF war nicht vorrätig) zw. 3,3V und GND, sollte das der Fehler sein?\nIch denke, wenn o.g. Projekt nicht funktioniert kann ich nicht mit den Projekten (incl. WLAN) des Weihnachtskalenders anfangen.\nVielleicht kann jemand helfen, wäre nett.\nPS: Als \u0026ldquo;Neuling\u0026rdquo; hatte ich mal die TX und RX Leitungen an TR und RX vom Arduino Uno und mal an Pin 11 und 10, immer negativ.\n32 Antworten Jonathan – 10.12.2015\nNoch eine Frage: Sind denn hier http://fkainka.de/wlan-modul-esp8266-und-arduino/\nkeine Widerstände zur Spannungsteilung TX (Uno) \u0026ndash;\u0026gt; RX (ESP8266) erforderlich?\nklaus – 11.12.2015\nNoch eine Frage: Sind denn hier http://fkainka.de/wlan-modul-esp8266-und-arduino/\nkeine Widerstände zur Spannungsteilung TX (Uno) –\u0026gt; RX (ESP8266) erforderlich?\nNein. Auf der Seite steht ja, dass das Arduino Nano mit 3,3V arbeitet. Das Adwentskalenderboard arbeitet mit 5V. Also aufpassen, wenn Du damit die Projekte nachbauen willst.\nklaus – 11.12.2015\nDer Sketch hat einige Fehler. Ich habe ihn zwar soweit zum Laufen, dass er mir überhaupt mal die IP richtig sagt und ne Antwort sendet, aber der Browser zeigt mir den kompletten Quelltext an. Außerdem kommt im Browser AT+CIPSEND an, was da ja gar nicht hin gehört.\nJonathan – 11.12.2015\nHi KLaus, Danke dass du dich meiner Problematik angenommen hast. Ich bin heute leider nicht an \u0026ldquo;Ort und Stelle\u0026rdquo; so dass ich erst morgen wieder testen kann. Hast du der Sketch (Kochbuch) auf dem Pretzelboard (NanoESP) mit integriertem WLAN-Modul oder mit einem Uno laufen lassen? Zu 5V und 3,3V. Aha da liefert der Nano 3,3V auf den digitalen Ausgängen. Okay jetzt schlauer! Kannst du zu der erforderlichen Elko Kapazität etwas sagen. Ich hatte einen komischen Effekt. Der upload des Sketch ging meist nicht nach dem Kompelieren (Sync Fehler 1\u0026hellip;10), dann habe ich mal vor dem Upload die 3,3V des ESP8266 WLAN Modules abgezogen, und schon klappte der Upload, dann wieder angesteckt, dann kam aber nicht viel mehr, eine Zeile im Monitor. fk – 11.12.2015\nHi,\nnein der Nano liefert keine 3,3 V auf den Ausgängen. Der von dir gefundene Artikel beschreibt einer meiner ersten Versuche mit dem Modul. Der Uno hat einen 3.3 V Ausgang der leistungsstark genug ist, um das Modul mit zu versorgen. Die 5-V Pegel des Uno habe ich aber knallhart auf die Seriellen Eingänge des ESP-Moduls gelegt. Das hat auf funktioniert aber für das NanoESP-Board habe ich mir doch etwas \u0026ldquo;sichereres\u0026rdquo; Ausgedacht. Infos zu der dafür verwendeten Schaltung findest du im Form unter NanoESP -\u0026gt; Hardware.\nEine wichtige Frage ist: welche Firmware benutzt dein ESP-Modul?\nklaus – 12.12.2015\nTheoretisch gesehen würde ich sagen, dass der Kondensator gar nicht nötig ist. Ich weiß nicht, ob die Ausgangsspannung des Arduino wirklich so schlecht ist. Um kleine \u0026ldquo;Schnicker\u0026rdquo; auszugleichen würde auch 1µF reichen.\nJonathan – 12.12.2015\nHi, Danke FK und Klaus. OK mit dem NanoESP hat der heutige Tag (wie fast immer) auf Anhieb funktioniert. So wollte ich eiskalt den Sketch auf dem Uno mit ESP8266 testen. Da kam\u0026hellip;\nESP SEND ERROR: AT+RST\nESP SEND ERROR: AT+CWMODE=1\nESP SEND ERROR: AT+CWJAP=\u0026ldquo;FRITZ!Box Fon WLAN 7390\u0026rdquo;,\u0026ldquo;xxxxxx\u0026rdquo;\nESP SEND ERROR: AT+CIPMODE=0\nESP SEND ERROR: AT+CIPMUX=0\nESP SEND ERROR: AT+RST\nESP SEND ERROR: AT+CWMODE=1 also besser mit dem Uno am Tag 1 beginnen und lt. FK Version auslesen. Maximal steht im Monitor folgendes:\nÿÂbBšÞ8ké7„RÞXBBß\u0026lt;èÛ8P”kHb7JskøÛ8P”[Hb7JÚ3èÛ8Q”]iBB†ÞxvÒB–¾!bB@\u0026lsquo;BBH/ë?Pj,vA?âó@ê m‰Å\nein \u0026ldquo;ready\u0026rdquo; kommt nie. Auf meine Eingabe AT+RST erfolgt keine Reaktion, somit ist auch kein Auslesen der Version mit AT+GMR mgl.\nAlle Widerstände weggelassen und direkt auf die Pins 11 und 12. Ergebnis ist nicht besser. Auf PIN 11 soll doch TX vom ESP8266 oder?\nHabe zwar auch alle Varianten probiert und so kamen überhaupt ein paar Zeichen. Nun bin bald der Überzeugung, ESP8266 defekt! D.h. Neubestellung mit\nhttp://www.ebay.de/itm/5x-5V-to-3-3V-IIC-I2C-Logic-Level-Converter-Converter-for-Arduino-SFR-/400931343881?\nhash=item5d595ece09:g:~UwAAOSwBahVbske\nund wieder bei Tag 1 anfangen. Leider mit 4 Wochen Wartezeit. Schönen 3. Advent-\nRaabinator – 13.12.2015\nHallo Jonathan.\nDie Ausgabe sieht mir nach einer falschen Baudrate zum ESP-Board aus.\nIm Beispiel in deinem Link ganz oben werden 115200Baud verwendet.\nUnser Board hier verwendet 19200Baud.\nIch weiß aber nicht, ob die SoftwareSerial so eine hohe Baudrate überhaupt zuverlässig schafft. Das o.g. Beispiel verwendet die Hardware-Schnittstelle.\nJonathan – 13.12.2015\nHi. gerade nochmal Tag 1 mit Uno und EP8266 getestet. Sketch auf 19200 und Serial Monitor auf 19200. Leider kommen keine brauchbaren Zeichen und auf AT+RST kommt kein \u0026ldquo;ready\u0026rdquo;. Schade.\nRaabinator – 13.12.2015\nDu solltest im Sketch die Baudrate zum ESP-Board mal auf 115200 stellen. Damit die Übertragung nicht ins Stocken gerät am Besten die zum PC auch auf 115200. Den Serial-Monitor musst du dann natürlich auch auf 115200 einstellen.\nIch vermute mal, dass dein Zusatz-Board anders konfiguriert ist. Es gibt dafür nämlich einen AT-Befehl. Allerdings musst du die eingestellte Baudrate erstmal herausfinden.\nGängige Einstellungen sind: 9600, 19200, 38400, 57600, 115200\nAm Besten mal alle durchprobieren.\nJonathan – 13.12.2015\nOK hab dann mal durchgetestet Baudraten 9600, 19200, 38400, 57600, 115200\nIn der Reihenfolge: Immer im Sketch (Tag 1) 2x Baudrate geändert, im Monitor Schnittttellengeschw. geändert, Sketch Upload, 5V auf auf ESP8266, RESET am Uno. Am ESP8266 in der Hand Temp. gefühlt, (noch zum Anfassen). Im Monitor schreibt es -unbrauchbare Zeichen viele yyyy das über 20 Sek. Eingabe AT+RST oder AT+GMR dann habe ich abgebrochen und die 5V getrennt. Zuerst hatte ich an Pin 12 den Spannungsteiler mit 1,5KOhm und 1KOhm lt. http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/ aber es funktionierte auch nicht.\nRaabinator – 14.12.2015\nSchade, tut mir leid, dass dir das auch nicht weitergeholfen hat.\nEntweder hat\u0026rsquo;s dir die Konfiguration des Moduls komplett verhagelt, es ist eine andere Firmware drauf oder das Ding hat tatsächlich das zeitliche gesegnet.\nSorry\u0026hellip;\nJonathan – 17.12.2015\nHallo Klaus,\nhattest du eigentlich den Sketch \u0026quot; Wlan Kochbuch http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/ \u0026quot; auf dem NanoESP zum laufen bekommen?\nbobby1000 – 18.12.2015\nHallo Jonathan,\nhabe bisher auch Probleme mit dem ESP8266. Aber ich komme Schrittweise weiter. Evtl. hilft dir das Weiter.\nErst einmal einen leeren Sketch auf den Arduino laden. Dann den Seriellen Monitor öffnen.\nOben im Monitor das Kommando AT eingeben. es sollte OK im Monitor erscheinen.\nIst das nicht der Fall mit der Baudrate im Monitor herum spielen. Bei mir musste die Baudrate auf 115200 gestellt werden bis lesbare Zeichen heraus kamen.\nDen Arduino Uno und den esp habe ich wie folgt angeschlossen:\nArduino ESP\n3,3 V VCC\n3,3 V CH_PD\nRX TX\nTX RX\nGND GND\neinen Kondensator mit 470 µF zwischen 3,3V und GND geklemmt.\nAuf diese Art funktionieren die AT Kommandos über den Monitor alle. Sogar eine Verbindung mit dem Heimischen Router konnte ich über AT Kommandos herstellen. Nur im Sketch bin ich noch nicht so weit. Habe aber auch erst gestern Abend die Erleuchtung gehabt und den ESP das erste mal zum antworten bekommen.\nWeitere Versuche mit Sketch werden folgen\nIch hoffe das hilft die weiter\nklaus – 19.12.2015\nIch hab nicht mehr weiter gemacht. Keine Zeit. Mal sehen, irgendwann vielleicht. Ich bin halt auch kein C-Profi. Deswegen macht mir Arduino schon leichte Probleme.\nJonathan – 27.12.2015\nHi, heute kam dann endlich der neue ESP8266 und dazu noch \u0026ldquo;5V to 3.3V IIC I2C Logic Level Converter Converter for Arduino SFR\u0026rdquo; doch es will nicht funktionieren, selbst mit 2. Notebook wo schon alles mit dem Pretzelboard ging.\nZuerst, im Arduino 1.6.6 den UNO ausgewählt. COM Schnittstelle (17) i.O., Sketch vom Tag 1 geladen.\nBaudrate im Sketch original 2x 19200, COM SS auch 19200 sowie CR NL.\nErst vom UNO TX und RX benutzt, negativ, dann PIN 11 und 12 zum Converter Cannel 5V von dort Channel (3,3V) zum ESP8266 RX und TX.\n5V und GND verbunden.\nNix geht im seriellen Monitor. Kein OK, auch auf AT kommt nix.\nVom UNO muss doch PIN 11 und 12 genutzt werden; Stimmt\u0026rsquo;s?\nWenn man die Antenne vom ESP8266 zu sich hält und sieht, dann ist doch rechts oben TX und unten GND, Oder? Somit ganz links oben 3,3V , darunter RX und unter TX GND, oder hab ich hier was falsches?\nCH_PD habe ich auch 3,3V angeschlossen, (da geht die rote LED aus).\nWelche LED vom ESP8266 leuchten bei euch? Es gibt rot und blau bei mir.\nBrauche Hilfe.\ngeneralovernight – 30.12.2015\ndas ist ja auch kein C, sondern C++ ;-)\nJonathan – 30.12.2015\n@generalovernight\nwie, was meinst du?\nJonathan – 07.01.2016\nHi, so langsam ist etwas im serielle Monitor zu sehen. Es hat sich nun herausgestellt, dass mein größtes Problem die Spannungsversorgung 3,3V für das WLAN Modul ESP8266 war. Jetzt habe ich einen Power Converter 12V -\u0026gt; 3,3V und 5 Volt seit dem steht die rote LED am ESP stabil. Das war vorher nicht. Dazu habe ich jetzt einen TTL Converter 5V -\u0026gt; 3,3V, und siehe da, mit der Baudrate 15200 für ESP funktioniert etwas. Die Baudrate für Serial und im Monitor kann fast beliebig sein, nur nicht 230400.\nHier das Ergebnis mit Sketch vom Tag 1:\nAT\nOK\nAT+GMR\nAT version:0.40.0.0(Aug 8 2015 14:45=58)\nSDK veqsion:1.3.0\nAi-Tct32KAT+CWMODE=1\nOK\nAT+CWMODE=1\nO›\nAT+CWLAP\n+CWœAP:(3,\u0026ldquo;HeiiÅ\u0026amp;Kai\u0026rdquo;,-94.\u0026ldquo;e0:19:1d:cf:1d:c6\u0026rdquo;,1,30Q\n+CWLAP:(1\u0026quot;FR7\u0026quot;d\nI bÒÒÂ\n,:,\nAT+CIFSR\n+CIFSR:STAIP.\u0026ldquo;192.168.100.67\u0026rdquo;\n+CIFSQ:STAMAC,\u0026ldquo;5azcf:7f:10:f2:e8\u0026rdquo;\nAT+PING=\u0026ldquo;www.google.de\u0026rdquo;\n+17\nOK Getauscht habe ich das ESP Modul, den TTL Spannungs Converter, Pin RX TX am Arduino, das Ergebnis hat sich nie geändert.\nAuch hatte ich mal die Puffergröße in #define _SS_MAX_RX_BUFF 256 // RX buffer size von 64 auf 256 geändert, doch es wird nicht besser.\nDie Bibliothek steht unter Libraries - SoftwareSerial. Ob dies die richtige Stelle war?\nTag2 sieht so aus:\nReset Error\nCWMODE Error\nReset OK\nCWMODE Error\nWLAN Connect OK\nPing OK Hurra die LED leuchtet!!!!\nHilfe wäre toll.\nfk – 09.01.2016\nHi,\nsehe ich das richtig, dass du das das Modul mit 115200 Baud benutzt? Das Problem könnte sein, dass die SoftwareSerial-Library aber einer gewissen Baudrate ungenau wird. Deswegen läuft das Modul im NanoESP mit 19200. Du kannst die Baudrate des Moduls mit dem Befehl AT+UART_DEF=, ,, ,\u0026lt;ﬂow control\u0026gt; einstellen, oder das Initialisierungsprogramm des NanoESP benutzen: /images/2015/12/ConfigTest2.zip\n(evtl muss das Programm leicht angepasst werden, da FW 0.40 benutzt?)\nJonathan – 09.01.2016\nHi fk, danke für die zeitnahe Info. Richtig ist, dass das ESP8266 nur mit 15200 Baud teilw. lesbaren Text übergibt. Mit 19200 waren es nur Hieroglyphen. OK, dann werde ich mal deinem Vorschlag folgen \u0026hellip; Danke soweit.\nOder, (Gedanke) muß ich eine andere WIFI Library laden, weil das ESP8266 Modul ja nicht 100% gleich ist?\nNur welche? und wo?\nhttps://github.com/esp8266/Arduino/tree/74aec438ae172eb1681e2074b584dbe6919d011c/libraries/ESP8266WiFi/src\nhttps://github.com/sleemanj/ESP8266_Simple\nhttps://github.com/ekstrand/ESP8266wifi\nJonathan – 09.01.2016\nHm, da hab ich im (Day1) Ser. Monitor AT+UART_DEF=19200,8,1,0,3 eingegeben, da kam noch OK, und das war\u0026rsquo;s. Im Sketch (day 1) esp8266.begin(19200); geändert! Aber es ist nix lesbares mehr zu sehen. Hmm, blind ein paar mal (mit unterschiedl. esp8266.begin(\u0026hellip;); ) und AT+UART_DEF=115200,8,1,0,3 zurück ändern wollen. Keine Besserung. Maximal kommt bei esp8266.begin(115200) sowas:\nŒcãoŒ€lìpŒ|�ƒŸìp“Ÿ�“œæŒpŒ8óoŸ\nReset am ESP, wird nicht besser. Hmmm.\nfk – 09.01.2016\nOkay dann hast du das Modul jetzt auf 19200 umgestellt. Das war ja auch gewollt\u0026hellip; jetzt müsstest doch das original Tag1 Programm nutzen können, bei dem die Baudrate der SofwareSeriellen (esp8266.begin(19200)) und der normalen Seriellen beide bei 19200 liegen\u0026hellip; oder übersehe ich noch einen wichtigen Punkt?\nfk – 09.01.2016\nAch und ich sehe gerade in meinem Config-Programm steht AT+UART_DEF=19200,8,1,0,0 \u0026hellip;.\nJonathan – 09.01.2016\nAT+UART_DEF=19200,8,1,0,0 …. Ja und das war gewiss mein Fehler, Naja Lehrgeld der Ahnungslosen,\nJonathan – 09.01.2016\nErst als Nichts mehr ging hab ich die Bedeutung des letzten Parameter gelesen. Zu spät. Ob es eine verständliche Anleitung zum Schreiben der Firmware gibt?\nJonathan – 10.01.2016\nHi, nach endlosen Std.-Versuchen und sammeln von vielen Erfahrungen, bin ich jetzt 2 Schritte weiter. Das Flashen der Firmware wollte lange Zeit nicht klappen (alle mögl. Versionen der .bin Files ) bis ich auf diese ai-thinker-v1.1.1.bin gestoßen bin. Diese funktionierte jetzt vor 20 Min!!!\nSo dass mit Sketch Day 1 wieder AT und OK im ser. Mon. zu lesen war. Dann nun endlich richtig die Baudrate mit AT+UART_DEF=19200,8,1,0,0 eingestellt.\nSketch umgestellt und Super, Super Super auf AT+CWLAP kommt jetzt ALLES ganz sauber. Toll! Vielen Dank für den richtigen Weg.\nHöhere Baudraten funktionieren echt nicht!!!\nEine Frage bleibt noch:\nAT+GMR\nAT version:0.25.0.0(Jun 5 2015 16:27:16)\nSDK version:1.1.1\nAi-Thinker Technology Co. Ltd.\nJun 23 2015 23:23:50\nOK\nAT+RST\nOK\n$aP-ÁdXQ%‰«¡-ÿÂ”§‡#Áläb”R„£?lÉÂ”$J(Îç%)$Sd¸H\u0026rsquo;—‡ÌP?i;ÿòò\nAi-Thinker Technology Co. Ltd.\ninvalid Ja eigentlich gehört doch ready in die letzte Zeile, hmmm? ;-)\nAber nochmals Danke für den \u0026ldquo;Wegweiser\u0026rdquo;\nfk – 11.01.2016\nJa das liegt daran, dass du keine original Firmware sonder eine (vermutlich nur leicht) angepasste Version von Ai-Thinker hast. Ich vermute mal, dass die meisten Versuche trotzdem funktionieren - allerdings solltest du dann in der espConfig()-Funktion die Zeile\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+RST\u0026rdquo;, \u0026ldquo;ready\u0026rdquo;);\nanpassen, z.B. in\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+RST\u0026rdquo;, \u0026ldquo;invalid\u0026rdquo;);\nwenn das die letzte Meldung nach einem Reset ist.\nJonathan – 15.01.2016\nHi Fabian\nsag mal, wäre nicht so eine Lösung für den Arduino eine Herausforderung für dich? - Meldungen über WhatsApp -\nhttp://www.embarcados.com.br/intel-edison-com-whatsapp/\ngeneralovernight – 20.01.2016\nWie ich das meine? Was mir in der Arduino IDE begegnet ist hat genauso viel oder wenig mit C zu tun wie Java - oder eben C++, was es ja auch ist.\nChris – 21.02.2016\nHallo.\nHast du deinen ESP jetzt zu laufen gebracht?\nBei mir ging das laden der neue Firmware und kontakt mit dem ESP mit 115200 ohne größere Probleme aber ich bekomme kein einziges PRogram rauf, so dass der ESP alleine arbeitet und komme einfach nicht weiter.\nJonathan – 25.02.2016\nHi, Chris. Das ESP am Uno oder dgl. funktioniert bei mir auch ohne Probleme. Aber Solo ESP, da fehlt mir noch der 1. Erfolg. Hab es aber auch nur einmal versucht. Ich wollte damit so etwas http://www.instructables.com/id/ESP8266-ESP-12Standalone-Blynk-101/ hinbekommen.\nRückinfo wäre nett, wenn es bei dir klappt. Wobei Blynk schon mit Arduino sehr interessant ist. Viel Erfolg.\n","permalink":"https://iot.fkainka.de/forum/topic/problem-projekte-mit-arduino-uno-r3-und-esp8266-esp-01-nachbasteln/","summary":"\u003cp\u003eBei mir haben bis heute (Day 10) alle Projekte funktioniert, manche nicht auf Anhieb, aber OK.\u003cbr\u003e\nNun habe ich (Neuling) noch einen separaten Adurino Uno und auch ein WiFi Board ESP8266 (beides war unbenutzt) und den Ehrgeiz die Projekte wenigstens zum Teil auch auf dieser Kombination nachzubauen. Doch da bin ich kläglich gescheitert.\u003cbr\u003e\nAls erstes wollte das Projekt aus Wlan Kochbuch \u003ca href=\"http://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/\"\u003ehttp://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/\u003c/a\u003e nachbauen und testen.\u003cbr\u003e\nKein \u0026ldquo;Land in Sicht\u0026rdquo;, geht einfach nicht. Das Wlan Modul meldet sich einfach nicht am Router an. Ich habe die 3 Sketche nacheinander geladen. Hardwareseitig hatte ich einen Stützelko 100uF (220uF war nicht vorrätig) zw. 3,3V und GND, sollte das der Fehler sein?\u003cbr\u003e\nIch denke, wenn o.g. Projekt nicht funktioniert kann ich nicht mit den Projekten (incl. WLAN) des Weihnachtskalenders anfangen.\u003cbr\u003e\nVielleicht kann jemand helfen, wäre nett.\u003cbr\u003e\nPS: Als \u0026ldquo;Neuling\u0026rdquo; hatte ich mal die TX und RX Leitungen an TR und RX vom Arduino Uno und mal an Pin 11 und 10, immer negativ.\u003c/p\u003e","title":"Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln"},{"content":"Wenn ein neues Gerät mit einem virtuellen Seriellen Port an den Windows-PC angesteckt wird, vergibt das Betriebssystem eine neue Port-Nummer.\nJenachdem, wieviele unterschiedliche Geräte schon dran waren oder sind, gibt es eine höhere Nummer.\nDiese herauszufinden ist mit dem Gerätemanager ganz leicht.\nUm den Gerätemanager zu öffnen drückt man gleichzeitig die Windows-Taste und R. Nun erscheint das Dialogfeld \u0026ldquo;Ausführen\u0026rdquo;. Dort eingeben: devmgmt.msc (+ Enter oder OK drücken) Jetzt erscheint der Gerätemanager. Dort, falls vorhanden, den Zweig \u0026ldquo;Anschlüsse (COM \u0026amp; LPT)\u0026rdquo; erweitern. Hier sind alle momentan vorhandenen COM-Ports aufgeführt. Merken, welche Nummern schon belegt sind. Jetzt das Board anstecken. Das neue Board mit seinem COM-Port sollte nun in der Liste erscheinen, voausgesetzt, der Treiber ist installiert. Schon ist die Nummer gefunden. Die COM-Ports 1 und 2 werden für gewöhnlich nicht vergeben. Diese sind traditionell für die alten, 9-poligen D-Sub Anschlüsse auf der Rückseite des Rechners reserviert.\nGefällt die Nummer nicht, kann sie auch von-Hand geändert werden.\nDazu rechte Maustaste auf den Eintrag im Gerätemanager und \u0026ldquo;Eigenschaften\u0026rdquo;. In diesem Dialogfenster auf die Registerseite \u0026ldquo;Anschlusseinstellungen\u0026rdquo; wechseln. Den Button \u0026ldquo;Erweitert\u0026hellip;\u0026rdquo; drücken Im erscheinenden Fenster gibt es eine Auswahlbox \u0026ldquo;COM-Anschlussnummer\u0026rdquo;. Dort kann man eine andere Nummer wählen. Bereits belegte Nummern sind gekennzeichnet und sollten nicht verwendet werden. Das Fenster kann je nach Treiber auch anders aufgebaut sein. Viel Spass beim Basteln und Experimentieren\n1 Antwort Raabinator – 10.12.2015\nNoch eine kleine Ergänzung. Leider kann ich meinen Artikel oben nicht mehr bearbeiten.\nWird das Board an einen anderen USB-Anschluss eingesteckt, kann es sein, dass das Betriebssystem eine neue COM-Port Nummer vergibt.\n","permalink":"https://iot.fkainka.de/forum/topic/com-port-herausfinden-windows/","summary":"\u003cp\u003eWenn ein neues Gerät mit einem virtuellen Seriellen Port an den Windows-PC angesteckt wird, vergibt das Betriebssystem eine neue Port-Nummer.\u003cbr\u003e\nJenachdem, wieviele unterschiedliche Geräte schon dran waren oder sind, gibt es eine höhere Nummer.\u003cbr\u003e\nDiese herauszufinden ist mit dem Gerätemanager ganz leicht.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUm den Gerätemanager zu öffnen drückt man gleichzeitig die Windows-Taste und R. Nun erscheint das Dialogfeld \u0026ldquo;Ausführen\u0026rdquo;.\u003c/li\u003e\n\u003cli\u003eDort eingeben: devmgmt.msc (+ Enter oder OK drücken)\u003c/li\u003e\n\u003cli\u003eJetzt erscheint der Gerätemanager. Dort, falls vorhanden, den Zweig \u0026ldquo;Anschlüsse (COM \u0026amp; LPT)\u0026rdquo; erweitern. Hier sind alle momentan vorhandenen COM-Ports aufgeführt. Merken, welche Nummern schon belegt sind.\u003c/li\u003e\n\u003cli\u003eJetzt das Board anstecken.\u003c/li\u003e\n\u003cli\u003eDas neue Board mit seinem COM-Port sollte nun in der Liste erscheinen, voausgesetzt, der Treiber ist installiert.\u003c/li\u003e\n\u003cli\u003eSchon ist die Nummer gefunden.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDie COM-Ports 1 und 2 werden für gewöhnlich nicht vergeben. Diese sind traditionell für die alten, 9-poligen D-Sub Anschlüsse auf der Rückseite des Rechners reserviert.\u003c/p\u003e","title":"COM-Port herausfinden (Windows)"},{"content":"Wer mit seinem WiFi-Board oder auch anderen Controller-Boards lange Spaß haben möchte, sollte folgenden Tipp beachten.\nOft wird das gleiche Board zum Ausprobieren unteschiedlicher Schaltungen verwendet.\nIm Eifer des Gefechts wird die neu erdachte Schaltung ungeduldig auf\u0026rsquo;s Steckbrett gesteckt. USB oder Stromversorgung dran, und dann die neue Software laden\u0026hellip;\nUPS! Was stinkt denn da so? Auweia!\nDer neue Eingang, der gerade nach GND oder Vcc geschaltet ist, war ja im letzten Projekt ein Ausgang, und meine alte Software ist ja auch noch drin. Kurzschluss!!!\nEvtl. nehmen einem der Controller, externe Bauteile oder die Stromversorgung das übel.\nIm einfachsten Fall kann blos die neue Software nicht geladen werden.\nDaher: Wenn ihr ein neues Projekt beginnt, vor dem Aufbau das Controller-Bord ohne Beschaltung mit einem leeren Sketch laden.\nDadurch sind alle Pins Eingänge und es gibt keinen Kurzschluss, bis die neue, passende Software drin ist.\nViel Spaß beim Bauen und Experimentieren\n","permalink":"https://iot.fkainka.de/forum/topic/tipp-fuer-steckbrett-neulinge/","summary":"\u003cp\u003eWer mit seinem WiFi-Board oder auch anderen Controller-Boards lange Spaß haben möchte, sollte folgenden Tipp beachten.\u003c/p\u003e\n\u003cp\u003eOft wird das gleiche Board zum Ausprobieren unteschiedlicher Schaltungen verwendet.\u003cbr\u003e\nIm Eifer des Gefechts wird die neu erdachte Schaltung ungeduldig auf\u0026rsquo;s Steckbrett gesteckt. USB oder Stromversorgung dran, und dann die neue Software laden\u0026hellip;\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eUPS! Was stinkt denn da so? Auweia!\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eDer neue Eingang, der gerade nach GND oder Vcc geschaltet ist, war ja im letzten Projekt ein Ausgang, und meine alte Software ist ja auch noch drin. Kurzschluss!!!\u003cbr\u003e\nEvtl. nehmen einem der Controller, externe Bauteile oder die Stromversorgung das übel.\u003cbr\u003e\nIm einfachsten Fall kann blos die neue Software nicht geladen werden.\u003c/p\u003e","title":"Tipp für Steckbrett-Neulinge"},{"content":"Hallo,\nIst es normal, dass ich beim Einloggen in das Forum immer zweimal meinen Benutzernamen und Passwort eingeben muss?\nBeim ersten Mal kommt immer \u0026ldquo;Benutzername oder Passwort ungültig\u0026rdquo;. Beim Zweiten funktioniert es dann.\nHab auch genau aufgepasst, dass alles richtig geschrieben ist.\nPassiert jedes Mal, egal welcher Rechner oder ob Smartphone.\n2 Antworten Jonathan – 11.12.2015\nHi, gleiches Problem(chen). Login-Daten kommen vom Browser!\nklaus – 12.12.2015\nIch hatte das mit dem Firefox einige Male. Die maximale Anzahl war theoretisch sogar schon erreicht. Ob das nun wirklich was bewirkt hat, bezweifle ich, aber nachdem ich das Passwort aus meinem Passwortmanager in die Zwischenablage kopiert und dort eingefügt hatte, klappte es. Die Eingabe mit der Tastatur klappte nicht. Die CAPS LOCK war auch nicht an.\nMit Chrome hatte ich das Problem nicht.\n","permalink":"https://iot.fkainka.de/forum/topic/problem-beim-login/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eIst es normal, dass ich beim Einloggen in das Forum immer zweimal meinen Benutzernamen und Passwort eingeben muss?\u003cbr\u003e\nBeim ersten Mal kommt immer \u0026ldquo;Benutzername oder Passwort ungültig\u0026rdquo;. Beim Zweiten funktioniert es dann.\u003cbr\u003e\nHab auch genau aufgepasst, dass alles richtig geschrieben ist.\u003cbr\u003e\nPassiert jedes Mal, egal welcher Rechner oder ob Smartphone.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-antworten\"\u003e2 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eJonathan\u003c/strong\u003e – 11.12.2015\u003c/p\u003e\n\u003cp\u003eHi, gleiches Problem(chen). Login-Daten kommen vom Browser!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eklaus\u003c/strong\u003e – 12.12.2015\u003c/p\u003e\n\u003cp\u003eIch hatte das mit dem Firefox einige Male. Die maximale Anzahl war theoretisch sogar schon erreicht. Ob das nun wirklich was bewirkt hat, bezweifle ich, aber nachdem ich das Passwort aus meinem Passwortmanager in die Zwischenablage kopiert und dort eingefügt hatte, klappte es. Die Eingabe mit der Tastatur klappte nicht. Die CAPS LOCK war auch nicht an.\u003cbr\u003e\nMit Chrome hatte ich das Problem nicht.\u003c/p\u003e","title":"Problem beim Login"},{"content":"Wie schon in den Kommentaren zum Tag10, stelle ich hier mein Programm zum Testen der LED hier zur Verfügung.\nDie LED sollte von blau über grün nach rot und wieder zurück wechseln.\nAußerdem besitzt meine hier verwendete Funktion die Möglichkeit, die Gesamthelligkeit zu verändern.\nNachtrag:\nKann mir mal jemand erklären, wie ich hier die Datei dran bekomme? Die wird nie mit hoch geladen.\n3 Antworten fk – 10.12.2015\nHi,\nja Worpress blockt z.Z. ino-Dateien. Also am besten über die Arduino IDE kurz als Zip generieren.\nklaus – 10.12.2015\nIch hatte die Datei gezippt, allerdings von Hand. Mal sehen, ob es dann jetzt mit der automatisch gezippten was wird.\nLeider wieder nicht. Der lädt nix hoch.\nklaus – 10.12.2015\nNun mal ein Versuch mit Chrome\nAnhänge:\nDay10_LED_Test-151210a.zip\n","permalink":"https://iot.fkainka.de/forum/topic/tag-10-led-test/","summary":"\u003cp\u003eWie schon in den Kommentaren zum Tag10, stelle ich hier mein Programm zum Testen der LED hier zur Verfügung.\u003cbr\u003e\nDie LED sollte von blau über grün nach rot und wieder zurück wechseln.\u003cbr\u003e\nAußerdem besitzt meine hier verwendete Funktion die Möglichkeit, die Gesamthelligkeit zu verändern.\u003c/p\u003e\n\u003cp\u003eNachtrag:\u003cbr\u003e\nKann mir mal jemand erklären, wie ich hier die Datei dran bekomme? Die wird nie mit hoch geladen.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"3-antworten\"\u003e3 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 10.12.2015\u003c/p\u003e\n\u003cp\u003eHi,\u003c/p\u003e\n\u003cp\u003eja Worpress blockt z.Z. ino-Dateien. Also am besten über die Arduino IDE kurz als Zip generieren.\u003c/p\u003e","title":"Tag 10 - LED-Test"},{"content":"Hallo liebe alle,\nDerzeit lässt sich die Led mittels Button ein und ausschalten. Je nachdem welcher Zustand LOW oder HIGH gewählt wurde. Habt ihr eine Idee, ich glaube ich habe schon irgendwo einmal was hier gelesen, dass man den Wert des Buttons über eine andere Variable zwischen speichert. Wie würdet Ihr das umsetzen?\nAnbei simple Status Quo:\nint led = 9;\nint schalter = 5;\nvoid setup() {\npinMode(led,OUTPUT);\npinMode(schalter, INPUT);\ndigitalWrite(schalter, HIGH);\n}\nvoid loop() {\ndigitalWrite(led,!digitalRead(schalter));\n}\nLG\n4 Antworten Raabinator – 10.12.2015\nHallo Stefanie.\nIch nehme an, du möchtest nur auf eine Zustandsänderung des Buttons reagieren. Momentan wird in jedem Durchlauf von loop() nur der aktuelle Zustand an die LED übertragen.\nUm auf diese Schaltflanken zu reagieren, musst du dir den letzten Zustand des Button zwischenspeichern und dann diesen immer mit dem aktuellen Zustand des Button vergleichen.\nZunächst erzeugst zu dir über Setup() eine sogenannte globale Variable:\nint buttonZuletzt;\nAm Ende von setup() initialisierst du diese Variable mit dem Zustand des Button:\nbuttonZuletzt = digitalRead(schalter);\nIn loop() vergleichst du nun immer den Zustand mit dem in der Variablen. Hat er sich geändert, dann reagierst du darauf. Aber nicht vergessen, den dann neuen Zustand wieder merken.\nloop() { if(buttonZuletzt != digitalRead(schalter)) { // Änderung hat stattgefunden if(buttonZuletzt) { // buttonZuletzt war \u0026lt;\u0026gt;0, also nicht gedrückt (low-aktiv) // muss dann jetzt gedrückt sein digitalWrite(led, 1); // LED ein Serial.println(\u0026#34;gedrückt\u0026#34;); buttonZuletzt = 0; // merken, dass jetzt gedrückt } else { // buttonZuletzt war =0, also gedrückt (low-aktiv) // muss dann jetzt nicht gedrückt sein digitalWrite(led, 0); // LED aus Serial.println(\u0026#34;losgelassen\u0026#34;); buttonZuletzt = 1; // merken, dass nicht mehr gedrückt } delay(30); // zum entprelen verzögern (einfache Version) } } Das delay(30) am Ende benötigst du, um dem Button Zeit zu geben (30ms), seinen Kontakt vollständig zu öffnen oder zu schließen. Dein Controller ist nämlich so schnell, dass er ohne mehrere Zustandswechsel erkennen würde, obwohl der Button nur einmal betätigt wurde.\nIch hoffe, damit ist dir etwas geholfen.\nRaabinator – 10.12.2015\nNoch eins. In deiner setup() solltest du\npinMode(schalter, INPUT);\ngegen\npinMode(schalter, INPUT_PULLUP);\nersetzten, wenn du nicht einen externen Pull-Up Widerstand verwendest.\nAnsonsten bekommst du keinen definierten Zustand und der Schalter reagiert evtl. willkürlich.\nStefanie – 11.12.2015\nVielen Dank Raabinator,\nhabe es aufbauend auf deiner Idee so gelöst:\nint led = 9; int schalter = 5; int buttonZuletzt = 0; int led_an = 0; void setup() { pinMode(led,OUTPUT); pinMode(schalter, INPUT_PULLUP); digitalWrite(schalter, HIGH); } void loop() { if((buttonZuletzt == 0) \u0026amp;\u0026amp; (!digitalRead(schalter) == 1)) // ueberpruefe ob schalter gerade rising edge hat (betätigt wurde). { if(led_an == 1) { led_an = 0; } // toggle led_an else { led_an = 1; } } buttonZuletzt = !digitalRead(schalter); // speichere alten schalterzustand digitalWrite(led,led_an); // setze led entsprechend delay(30); // zum entprellen verzögern (einfache version) } Raabinator – 11.12.2015\nHallo Stefanie,\nDu wolltest also die LED mit dem Taster bei Druck Ein-/Ausschalten. Hab ich wohl falsch verstanden.\nEine Variable \u0026ldquo;toggeln\u0026rdquo; geht auch einfacher: led_an = !led_an;\nDas späte Speichern des Schalterzustandes birgt die Gefahr, dass sich der Zustand gerade zwischen deiner Abfrage und dem Speichern ändert. Dann bekommst du einen Tastendruck nicht mit.\nDas delay() am Ende in der Hauptschleife verzögert das gesamte Programm. Solange es nichts anderes machen soll ist das OK.\nBesser ist es, sich nach der Tastenänderung die aktuelle Zeit zu merken (millis()) und vor erneuter Taster-Prüfung nachzusehen, ob bereits genug Zeit vergangen ist.\nBeispiel:\nunsigned long lastTime = 0L; // merkt sich die Zeit der letzten Änderung int buttonZuletzt = 0; // letzter Zustand des Tasters int led_an = 0; // Zustand der LED #define VERZOEGERUNG 30L loop() { // ... Mein übriges Programm, das gerne nicht verzögert wäre ... if((millis() - lastTime) \u0026gt;= VERZOEGERUNG) // Genügend Zeit seit der letzten Änderung vergangen? { // ... ja, Taste auf Änderung prüfen und reagieren int buttonJetzt = digitalRead(schalter); // einmal merken, ist sicherer if(buttonJetzt != buttonZuletzt) { // Zustand geändert buttonZuletzt = buttonJetzt; // neuen Zustand merken lastTime = millis(); // Zeit der Änderung merken // ... Reaktion auf die Änderung if(!buttonJetzt) { // Gedrückt! led_an = !led_an; // toggeln digitalWrite(led,led_an); // setze led entsprechend } } } // ... noch mehr Programm, das gerne nicht verzögert wäre ... } ","permalink":"https://iot.fkainka.de/forum/topic/zu-aufgabe-von-tag-6-udp-button-erweiterung/","summary":"\u003cp\u003eHallo liebe alle,\u003c/p\u003e\n\u003cp\u003eDerzeit lässt sich die Led mittels Button ein und ausschalten. Je nachdem welcher Zustand LOW oder HIGH gewählt wurde. Habt ihr eine Idee, ich glaube ich habe schon irgendwo einmal was hier gelesen, dass man den Wert des Buttons über eine andere Variable zwischen speichert. Wie würdet Ihr das umsetzen?\u003c/p\u003e\n\u003cp\u003eAnbei simple Status Quo:\u003cbr\u003e\nint led = 9;\u003cbr\u003e\nint schalter = 5;\u003c/p\u003e\n\u003cp\u003evoid setup() {\u003cbr\u003e\npinMode(led,OUTPUT);\u003cbr\u003e\npinMode(schalter, INPUT);\u003cbr\u003e\ndigitalWrite(schalter, HIGH);\u003cbr\u003e\n}\u003c/p\u003e","title":"Zu Aufgabe von Tag 6: UDP Button Erweiterung"},{"content":"Bei dem heutigen Projekt handelt es sich um eine intuitive Anzeige der aktuellen Temperatur. Mit nur einem Blick kann man abschätzen, ob es sinnvoll ist, eine warme Jacke mitzunehmen.\nHinter dem heutigen Türchen befindet sich eine weitere LED, allerdings keine gewöhnliche. Es handelt sich um eine RGB-LED. RGB steht für Red, Green, Blue oder Rot, Grün, Blau denn die LED besteht eigentlich aus mehreren LEDs mit einem gemeinsamen Kathodenanschluss. Durch eine Kombination der verschiedenen Farben mit unterschiedlichen Helligkeiten, ist es möglich fast jede Farbe darzustellen. Die LED kann, wie im Bild gezeigt, mit Vorwiderständen an die PWM Ausgänge D3, D5, D6 des Controllers angeschlossen werden.\nAnschluss der RGB LED an die Pins D3, D5 und D6 Das Programm: Day10_TCPWeatherUpdate\nIn dem heutigen Sketch geht es erneut um eine Abfrage einer Internetseite, diesmal aber einem speziell für dieses Projekt programmierten Seite, die Daten von der Wetterseite http://www.openweathermap.com/bezieht. Auf dieser Seite kann man durch Variation der URL Informationen zum Wetter in seiner Stadt bekommen. Die Stadt, die Sie abfragen wollen, können Sie im Quelltext einfach hinter CITY eintragen. Als Beispiel verwende ich meine Heimatstadt Essen: www.temp.fkainka.de/?city=Essen\nDas Programm liest nun aus dieser Seite die Temperatur aus und stellt das Ergebnis farblich über die RGB-LED da. Gleichzeitig wird der Wert auch über den Seriellen Monitor ausgegeben. Der im Beispielprogramm verwendete Temperaturbereich für die Darstellung an der LED beträgt -20°C bis +40°C.\nTemperaturausgabe über den Seriellen Monitor ","permalink":"https://iot.fkainka.de/day-10/","summary":"\u003cp\u003eBei dem heutigen Projekt handelt es sich um eine intuitive Anzeige der aktuellen Temperatur. Mit nur einem Blick kann man abschätzen, ob es sinnvoll ist, eine warme Jacke mitzunehmen.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich eine weitere LED, allerdings keine gewöhnliche. Es handelt sich um eine RGB-LED. RGB steht für Red, Green, Blue oder Rot, Grün, Blau denn die LED besteht eigentlich aus mehreren LEDs mit einem gemeinsamen Kathodenanschluss. Durch eine Kombination der verschiedenen Farben mit unterschiedlichen  Helligkeiten, ist es möglich fast jede Farbe darzustellen. Die LED kann, wie im Bild gezeigt, mit Vorwiderständen an die PWM Ausgänge D3, D5, D6 des Controllers angeschlossen werden.\u003c/p\u003e","title":"Tag 10: Temperaturanzeige"},{"content":"Also, zunächst einmal: Der Kalender ist genial! Selten habe ich mich derart auf das nächste Türchen / Experiment gefreut, wie bei diesem Kalender. Manches ist für jemanden, der überhaupt noch nie mit der Materie zu tun hatte, etwas schlecht dokumentiert. Kompilieren, hä? Und bleiben die Programme immer drauf, und das nächste wird dazu geladen? Wohin soll ich was kopieren?\nAber mal ganz ehrlich, wer an so einem Kalender Freude hat, kann auch bissel googeln, oder? Ich hab mich jedenfalls immer schon fast kindisch gefreut, wenn alles geklappt hat. Und meine Frau, von der ich den Kalender habe, schüttelt nur den Kopf, wenn ich begeistert „Kuck mal, KUCK MAL!!!!“ rufe, wenn sich auf dem Monitor paar Zahlen durch Drehen am Poti verändern… 😊\nDass es jetzt auch noch paar Erklärungen zu Aufbau und Wirkweise der Programme gab, ist auch genial, das hatte ich anfangs vermisst.\nIch habe schon tausend Ideen im Kopf, was ich alles mit dem kleinen Board anstellen könnte, da muss ich noch viel lernen, aber der Einstieg ist gemacht.\nDas erste Projekt wird für unser Boot sein:\nWassermelder in vier Sektionen des Rumpfes Temperaturüberwachung von Motorraum, Kühlwasser, Getriebe und Wellenlager (vielleicht sogar der drehenden Welle über Infrarot?) vielleicht ein Alarm / Buzzer o.ä. falls einer der Werte kritisch ist oder irgendwo Wasser steht Sollten dann noch „Beine“ übrig sein, noch die ein- oder andere Statusmeldung, bspw. Landstrom da oder nicht, oder den Inverter einschalten o.ä. Mal sehen, wie weit ich komme! Vieles aus den ersten Experimenten kann ich da sicher verwerten.\nDie ersten Fragen, die sich ergeben sind:\nLaut Datenblatt 20 I/O, davon 2 für das WLAN, bleiben 18.\nDavon 6 analoge Eingänge, bleiben 12, richtig?\nDavon 6 PWM, das ist etwas , um analoge Ausgänge zu emulieren, wenn ich das richtig verstanden habe. Muss man diese 6 Pins dafür nehmen, oder kann man auch sagen „Ich nehme euch als digitalen Eingang!“?\nFür Ausgänge hab ich nämlich eigentlich wenig Verwendung und fände es daher besser, wenn ich die übrigen 12 Pins als Eingänge nehmen könnte.\nUnd dann zu den Wassermeldern:\nReicht es da vielleicht, einfach einen Pin und einen GND nebeneinander in Wasser zu hängen, um ein spürbares Signal zu bekommen? Ich hab irgendwo gelesen, dass die Eingänge interne Widerstände haben. Kann da mal jemand was dazu sagen? Habe nämlich zum Thema Wassermeldung zwar etliche Vorschläge gefunden, aber nicht wirklich was für Arduino.\nVielen Dank und allen ebenso viel Freude mit dem Kalender!\n11 Antworten Raabinator – 09.12.2015\nHallo McElch,\nFalls dir die digitalen I/Os knapp werden, kannst du dich mit einem externen I/O-Expander behelfen. Ich verwende gerne den MCP2317 mit I²C-Bus oder seinen Bruder den MCP23S17 mit SPI-Bus, je nach dem, was sonst noch extern dran hängt. Dieser Chip bietet 16 als Eingang der Ausgang verwendbare Anschlüsse. Ich meine, es gibt auf Arduino.cc auch irgendwo eine Library dafür (z.B. http://playground.arduino.cc/Main/MCP23S17).\nIch glaube auf eBay schon fertige Platinen gesehen zu haben. Ansonsten gibt\u0026rsquo;s die ICs auch bei Reichelt.de.\nPWM-Ausgänge kannst du auch als Eingänge verwenden. Sind die von vorne herein, bis du sie anders konfigurierst.\nBei den 20 I/Os sind auch die Analogen Eingänge A0 bis A7 eingerechnet. Die kannst du (normal) auch nur dafür verwenden, ist von Arduino so vorgesehen. Über Umwege gehen die auch als Ein-/Ausgang. Dann musst du dich allerdings mit den Registern des Controllers herumschlagen.\nAn die Eingänge kann man sogenannte interne Pull-Up Widerstände schalten (mit pinMode(NR, INPUT_PULLUP)). Die haben die Größenordnung von 20 bis 50kOhm.\nWeiterhin viel Spaß beim rumprobieren\u0026hellip;\nMcElch – 09.12.2015\nIch habe gerade beim Stöbern folgenden Sensor gefunden, den es - für mich ideal - gleich im günstigen 5er-Pack gibt:\nhttp://www.ebay.de/itm/5X-Soil-Humidity-Hygrometer-Moisture-Detection-Water-Sensor-Module-Arduino-Wire-/391172508746?hash=item5b13b2cc4a\u0026tstore=1\u0026tfrom=32258213\nDas sollte doch eigentlich genau das richtige für meine Zwecke sein, oder?\nRaabinator – 09.12.2015\nDie sind eigentlich für Pflanzen gedacht. Mit dem Poti kann man aber die Schaltschwelle des digital Ausganges einstellen. Könnte funktionieren. Am besten probieren.\nAchtung: der Händler ist aus Hong Kong\nMcElch – 09.12.2015\nNa dann darf ich dem Sensor halt nicht verraten, dass es ein Boot und kein Blumenkübel ist\u0026hellip; :)\nDie haben auch Relaiskarten im 5er-Pack und anderes lustiges Zeugs. Ich werde da mal das eine oder andere zum Basteln bestellen. Man investiert ja kein Vermögen. :)\nMcElch – 10.12.2015\nDa habe ich doch gleich die nächste Frage.\nHabe folgende Relaiskarte gefunden:\nhttp://www.ebay.de/itm/5V-4-Kanal-4-Channel-Relais-Schnittstellen-Board-Modul-Relaismodul-Arduino-TE180-/391289172929?tfrom=261941278737\u0026tpos=top\u0026ttype=price\u0026talgo=undefined\nDa steht aber:\n5V 4-Channel Relay interface board, and each one needs 50-60mA Driver Current\nUnd beim WIFI-Board hier auf der Seite steht:\nMaximaler Strom pro I/O-Pin: 40 mA\nDas Relais \u0026ldquo;zieht\u0026rdquo; also Zuviel, um an die Ausgangs-Pins geklemmt zu werden, richtig?\nRaabinator – 10.12.2015\nNein, das ist nicht richtig.\nAuf dem Board sind sogenannte Treiber vorhanden. Diese werden vom Controller mit geringem Strom angesteuert und schalten den großen Laststrom der Relais. Man könnte auch \u0026ldquo;Stromverstärker\u0026rdquo; sagen.\nAuf diesem Board ist sogar noch eine Trennung per Optokoppler vorhanden.\nDer Controller steuert den Optokoppler an. Dieser überträgte die Information per Licht von seinem Eingang auf den Ausgang. Der Ausgang des Optokoppler steuert den Treibertransistor des Relais.\nDa ein 1kOhm Widerstand zum Controller-Pin vorhanden ist und an Optokoppler und der LED ca. 3V abfallen würden, werden vom Controller I/O-Pin ca. 2mA gezogen werden. Das reiecht locker aus.\nDie 60mA pro Relais werden damit vom Anschluss Vcc gezogen. Deine Stromversorgung sollte dafür ausgelegt sein.\nHab noch was zum Thema gefunden:\nhttps://arduino-info.wikispaces.com/ArduinoPower\nDa ist auch etwas unter der Hälfte der Seite ein Schaltbild vorhanden.\nklaus – 10.12.2015\nIch würde gar nicht so einen Aufwand mit Sensoren machen. Einfach 2 Transistoren in Darlington-Schaltung, oder gleich ein Darlington-Transistor genommen ist wesentlich billiger. Die Module kosten knapp 1€ pro Stück, Transistoren ein paar Cent.\nOder nimm gleich ein Array:\nhttp://www.reichelt.de/ULN-2801A/3/index.html?\u0026ACTION=3\u0026LA=446\u0026ARTICLE=22083\u0026artnr=ULN+2801A\nDer ksotet 55 Cent.\nMcElch – 11.12.2015\n@Klaus: Hmm, sollte ich den Eindruck vermittelt haben, mich mit Transistoren usw. auszukennen? :) Nee, da kauf ich lieber die fertigen Module, Zeit ist auch Geld\u0026hellip; :)\n@Raabinator: Danke, das war sehr hilfreich, und auch anfängerfreundlich beschrieben!!! :)\nMcElch – 16.12.2015\nSo, bin ein Stück weiter. Habe mir testweise einen Feuchtigkeitssensor bestellt, um ihn als Wassermelder zu testen.\nFunktioniert hervorragend! Man kann den Wasserstand sozusagen direkt als relativen Wert ablesen. Die Fühler sind etwa 5cm lang (das reicht für ein Boot allemal, denn mehr als 5cm Wasser sollten da eh nicht unten drin stehen).\nMan könnte somit sogar eine Art Hysterese realisieren: Warne mich mit einer LED, sobald Wasser drin steht. Schalte die Bilgenpumpe bei 3cm ein, und bei 0cm wieder aus. Buzzer-Alarm, falls der Pegel trotz allem auf 4cm steigt!\nSo habe ich mir das vorgestellt! :)\nIch füge mal ein Bild von meinem Versuchsaufbau bei.\nAnhänge:\nMcElch – 03.01.2016\nDas Projekt wächst! Am Board hängen jetzt der Thermistor aus dem Kalender sowie ein zugekaufter DHT11 (Temp/Luftfeuchte) sowie der oben schon erwähnte Feuchtesensor.\nIch habe es hinbekommen, dass alle Werte schön über die serielle Schnittstelle angezeigt werden. Ich habe mir auch aus verschiedenen Tagesprogrammen eine Webseite zusammenkopiert, die einen Wert ausgibt. Mehrere Werte bekomme ich nicht hin, dazu fehlt mir ein wenig Doku über die ganzen \u0026ldquo;Subroutinen\u0026rdquo; (ThingSpeak, ESP Config, \u0026hellip;).\nEs wäre wirklich sensationell, wenn das alles im Nachgang nochmal irgendwo erklärt werden würde. Vieles habe ich mir zusammenkopiert, ohne alles wirklich zu verstehen. Das führt dann dazu, das manches geht, manches nicht. Gestern ging ThingSpeak, ich weiss aber nicht, wie man ein zweites field zur Übermittlung hinzu fügt.\nHeute habe ich eigentlich nur den Webserver-Teil dazu kopiert, jetzt geht der Webserver, aber ThingSpeak nicht mehr. Möglicherweise liegt das an der doppelten Verwendung von Variablen wie xBuffer? Ohne Doku für mich nicht zu ermitteln.\nHabe meinen Aufbau mal mit fritzing nachgezeichnet, falls es jemanden interessiert\u0026hellip; :)\nAnhänge:\nFutur377 – 23.02.2016\nIch wollte auch gerne den web-server und Thinkspeak gemeinsam laufen lassen und habe es nicht geschafft. Ich bin da aber noch am probieren.\nDas Problem mit dem Wassermelder hatte ich übrigens auch mal angefangen, damals gab es die Bodensensoren noch nicht. Ich habe derzeit einfach 2 Dräte als Sensoren wie einen Photowiederstand an den Arduino angeschlossen und über einen analogen Eingang auslesen lassen. Damit habe ich den Wasserstand eines Aquariums geprüft und mit einer zweiten Einheit die Bodenfeuchte in einem Blumentopf. Eine kleine Relaikarte steuert nun eine Zahnpumpe an, die Wasser aus dem Aquarium absaugen und in den Blumentopf pumpen kann. Seit über 2 Jahren funktioniert dies 1A.\nAllerdings bemerkte ich nach ca. 3 Monaten eine recht heftige Korrosion der blanken Drähte im Wasser. Daher schaltete ich den 5V-Anschluss meiner beiden Wassersensoren an einen digitalen Ausgang. Nun lasse ich alle 5min messen. A0 ist der analoge Eingang, z.B. D5 und D6 die 5V-Pins der Sensoren. Wenn jetzt gemessen wird, so wird der erste Sensor eingeschaltet (D5), ausgelesen und wieder ausgeschaltet. Danach der zweite Sensor mit (D6). So gibt es an den Sensoren kaum noch Schäden, die wurden durch den Dauerstrom von wenigen mA verursacht. Übrigens ist mein Gummibaum für dieses Experiment sehr dankbar und die Fische für den indirekten Wasserwechsel.\nWerner\nAnhänge:\n","permalink":"https://iot.fkainka.de/forum/topic/anfaengerfragen-zb-wassermelder-ueber-digitalen-eingang/","summary":"\u003cp\u003eAlso, zunächst einmal: Der Kalender ist genial! Selten habe ich mich derart auf das nächste Türchen / Experiment gefreut, wie bei diesem Kalender. Manches ist für jemanden, der überhaupt noch nie mit der Materie zu tun hatte, etwas schlecht dokumentiert. Kompilieren, hä? Und bleiben die Programme immer drauf, und das nächste wird dazu geladen? Wohin soll ich was kopieren?\u003c/p\u003e\n\u003cp\u003eAber mal ganz ehrlich, wer an so einem Kalender Freude hat, kann auch bissel googeln, oder? Ich hab mich jedenfalls immer schon fast kindisch gefreut, wenn alles geklappt hat. Und meine Frau, von der ich den Kalender habe, schüttelt nur den Kopf, wenn ich begeistert „Kuck mal, KUCK MAL!!!!“ rufe, wenn sich auf dem Monitor paar Zahlen durch Drehen am Poti verändern… 😊\u003c/p\u003e","title":"Anfängerfragen, zB: Wassermelder über digitalen Eingang"},{"content":"Sicher ist das nicht das erste Thema. Oder?\n","permalink":"https://iot.fkainka.de/forum/topic/erstes-thema/","summary":"\u003cp\u003eSicher ist das nicht das erste Thema. Oder?\u003c/p\u003e","title":"Erstes Thema?"},{"content":"Hallo,\nich habe einmal mit einigen vorhandenen Bauteilen gespielt.\nJetzt habe ich immer die exakte Uhrzeit !\nRainer\nPS: ich kann leider das Arduino Script nicht hochladen\nAnhänge:\n13 Antworten Rainer – 09.12.2015\njetzt als zip Datei\nAnhänge:\nDay9_TCP_LCD_Uhr.zip\nbastard – 09.12.2015\nHi Rainer,\nkönntest Du noch bitte das \u0026ldquo;DeppenApostroph\u0026rdquo; entfernen?\nDanke!\nMfG\nStefan\nRainer – 09.12.2015\nHallo Stefan,\ndanke für den \u0026ldquo;Deppen\u0026rdquo;, ich benutze wohl zu häufig die englische Sprache, dort ist der Apostroph durchaus als Genitiv -s angebracht.\nAllerdings habe ich auch das gefunden :\nSeit der Einführung der neuen deutschen Rechtschreibung kann auch im Deutschen zur Hervorhebung von Namen der Apostroph Verwendung finden: Jürgen\u0026rsquo;s Imbiss\nIch lasse das Program mal so wie es ist, wer es benutzen will, wird ja wohl dort seinen Namen eintragen.\nBeste Grüße,\nRainer\nfk – 10.12.2015\nHi,\necht schönes Projekt!\nDas mit den ino-Dateien stimmt. Mann sollte die Projekte immer erst Zippen.\nStefanie – 11.12.2015\nLieber Rainer,\nErstens tolle Umsetzung!! Ich habe eine Frage zu den Bauteilen, aus welchem Kalender oder Set stammt der Display und noch viel wichtiger wie heißen die vorgefertigten Verbindungskabel? und wo bekommt man die?\nHerzliche Grüße und Danke im Vorhinein\nRainer – 12.12.2015\nHallo Stefanie,\ndas Display stammt von Adafruit, es gibt es ohne und mit einer zweiten Platine für das I2C Interface, mit 2 oder 4 Zeilen.\nBeim Arduino nano kann man SoftwareSerial und I2C ( \u0026ldquo;wire\u0026rdquo; Bibliothek ) nicht gemeinsam nutzen, daher habe ich das Display direkt über 4 Bit angesteuert. Wichtig ist es, die I/O Pins 11 und 12 nicht zu benutzen, diese sind zwar auf der Stiftleiste herausgeführt, werden aber für das WLAN Modul benötigt.\nAuf der Website von Adafruit ist auch eine super Anleitung, wie man das Display anschliesst und ansteuert !\nWenn man in einer Suchmaschine \u0026ldquo;Adafruit Display\u0026rdquo; oder \u0026ldquo;Adafruit LCD\u0026rdquo; eingibt, findet man auch Anbieter in Deutschland.\nDie Verbindungskabel werden von vielen Anbietern verkauft. Einfach mal nach \u0026ldquo;jumper wire\u0026rdquo; suchen, dann kommen von Amazon über Conrad und eBay etc. viele online Shops. Dort findet man auch die Steckbrücken in unterschiedlicher Länge für das Raster des Steckbretts.\nAus Fernost dauert es etwas länger, aus der EU sind die Lieferzeiten wesentlich kürzer !\nViel Erfolg,\nRainer\nRainer – 13.12.2015\nHallo,\nich habe mal wieder etwas gespielt und das NTP Beispiel aus der Time Library an das ESP Modul angepasst.\nDieses Programm verbindet sich mit dem NTP Server der Telekom ( geht aber auch für andere Server ) und ruft alle Stunde die Uhrzeit zur Synchronisation ab, dazwischen läuft es autonom mit der internen Uhr aus der Time Lib.\nDas Beispiel aus der Lib basiert auf einer LAN Verbindung, die verwendeten IP adressen für die Server scheinen nicht mehr aktuell zu sein. Ich habe den Code umgeschrieben und den Code aus dem Kalender für UDP Verbindungen damit ergänzt, um das WLAN Modul zur Verbindung mit meinen WLAN zu benutzen.\nÜber den seriellen Monitor werden Datum und Uhrzeit ausgegeben, auf dem LCD Display ist nur die Zeit sichtbar.\nDas Protokoll für den NTP Server benutzt binäre Daten und muss für das SEND Kommando umgewandelt werden. Hier darf zum Abschluss kein CR/LF angehängt werden ! Die 4 Bytes mit den Sekundenbruchteilen werden nicht genutzt.\nAn mancher Stelle werden sich guten Programmieren die Nackenhaare sträuben, ich wollte das nur quick \u0026amp; dirty zu Ende bringen, bevor das Wochenende um ist. Es funktioniert aber gut, man muss nur die SSID und das Passwort eintragen. Das Timeout zur WLAN Anmeldung ist auf 20 Sekunden gesetzt, bei mir dauert die Anmeldung manchmal recht lange.\nFür eine tiefere Beschäftigung mit NTP habe aich auch eine etwas ältere Dokumentation des NTP Protokolls angehängt, ich habe nicht weiter nach aktuelleren Ausgaben gesucht, diese hier hat mir gute Dienste getan.\nIch bin für alle Verbesserungsvorschläge offen !\nRainer\nAnhänge:\nUDP_NTP_Time_Server.zip\ndraft-ietf-ntp-ntpv4-proto-13.pdf\nHartmut – 14.12.2015\nPrima Projekt, dass ich auch verfolge. Eigentlich fehlt ja nur noch eine vernünftige Fehlerbehandlung (z.B. ein reconnect nach Abbruch), die aber den Aufwand durchaus mal verdoppeln kann (vorsichtig gerechnet). Aber mehr als ein Proof-Of-Concept ist Deine Uhr ja schon.\nEine kleine Bemerkung zur Time-Library.\nMit setSyncProvider(getNtpTime); übergibts Du einen Funktionspointer an die Time-Library. Die Funktion selbst wird dabei aber gar nicht aufgerufen. Dies geschieht erst in der Funktion now() und zwar alle 5 Minuten (300 Sekunden). Dieses Intervall kann man mit Hilfe der Funktion setSyncInterval(time_t interval) verändern, z.B. häufiger für Debug Zwecke und noch seltener für die Produktion. Der Aufruf von setSyncProvider(getNtpTime); in der Loop ist also überflüssig.\nRainer – 14.12.2015\nHallo Hartmut,\ndanke für den Hinweis, ich habe mich mit der Time Lib ( noch ) nicht näher befasst, wollte das Ganze nur mal ans laufen bringen, daher auch keinerlei Fehlerbehandlung,\nIch habe den Aufruf setSyncProvider(getNtpTime) auch bereits wieder aus der loop entfernt, da war zusätzlich zu Deiner Bemerkung noch ein Gedankenfehler bei der IF Abfrage !\nDafür zeige ich jetzt auch das Datum im LCD Display an !\nWenn ich dann noch eine über UDP ansprechbare Wetterstation finde, werde ich dann auch noch das Wetter anzeigen, habe noch ein Display mit 4 Zeilen, das sollte reichen !\nBeste Grüße,\nRainer\nJonathan – 18.12.2015\n\u0026hellip; Beim Arduino nano kann man SoftwareSerial und I2C ( „wire“ Bibliothek ) nicht gemeinsam nutzen\u0026hellip;\u0026hellip;\nIch wollte mir gerade so ein Display mit I2C bestellen. Das würde echt nicht funktionieren? Oder?\nRainer – 18.12.2015\nHallo Jonathan,\nrichtig, beim nano klappt das nicht.\nIch habe damals aus dem Grund den Leonardo bzw. Micro für meine Projekte genommen, die haben eine zweite Serial Schnittstelle.\nAllerdings kann man das Display bei meiner Version von der I2C Interface Platine abziehen und dann, wie im Bild sichtbar, über 6 I/O Pins ansteuern. Hierbei nicht den Trimmer für den Kontrast vergessen !\nAchtung : die meisten Beispiele in der LiquidCrystal Lib haben 11 und 12 mit genutzt, die werden hier für das WLAN Modul verwendet.\nIch habe mal eine verbesserte Version des NTP Time Servers angehängt :\nder Aufruf des Servers alle 300 Sekunden durch die Time Lib,\ndie LED an PIN 13 leuchtet, wenn die Synchronisation geklappt hat und nicht, wenn die Synchronisation fehlgeschlagen ist,\nDatum und Uhrzeit werden angezeigt.\nViel Erfolg,\nRainer\nAnhänge:\nNTP_Time_Server.ino_.zip\nfk – 25.01.2016\nHi Rainer,\nich habe dein Bild von der tollen Uhr als Titelbild für eine neue Kategorie \u0026ldquo;User Projekte\u0026rdquo; genommen. Ist das für dich in Ordnung oder soll ich ein anderes Bild benutzen?\nLG Fabian\nRainer – 25.01.2016\nHallo Fabian,\nkein Problem, gerne !\nGruß, Rainer\n","permalink":"https://iot.fkainka.de/forum/topic/rainers-uhr/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003eich habe einmal mit einigen vorhandenen Bauteilen gespielt.\u003c/p\u003e\n\u003cp\u003eJetzt habe ich immer die exakte Uhrzeit !\u003c/p\u003e\n\u003cp\u003eRainer\u003c/p\u003e\n\u003cp\u003ePS: ich kann leider das Arduino Script nicht hochladen\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"IMG_3481.jpg\" loading=\"lazy\" src=\"/images/2015/12/IMG_3481.jpg\"\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"13-antworten\"\u003e13 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eRainer\u003c/strong\u003e – 09.12.2015\u003c/p\u003e\n\u003cp\u003ejetzt als zip Datei\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAnhänge:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/images/2015/12/Day9_TCP_LCD_Uhr.zip\"\u003eDay9_TCP_LCD_Uhr.zip\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ebastard\u003c/strong\u003e – 09.12.2015\u003c/p\u003e\n\u003cp\u003eHi Rainer,\u003c/p\u003e\n\u003cp\u003ekönntest Du noch bitte das \u0026ldquo;\u003ca href=\"http://heise.forenwiki.de/index.php?title=Deppenapostroph\"\u003eDeppenApostroph\u003c/a\u003e\u0026rdquo; entfernen?\u003c/p\u003e\n\u003cp\u003eDanke!\u003c/p\u003e\n\u003cp\u003eMfG\u003c/p\u003e\n\u003cp\u003eStefan\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRainer\u003c/strong\u003e – 09.12.2015\u003c/p\u003e\n\u003cp\u003eHallo Stefan,\u003c/p\u003e\n\u003cp\u003edanke für den \u0026ldquo;Deppen\u0026rdquo;, ich benutze wohl zu häufig die englische Sprache, dort ist der Apostroph durchaus als Genitiv -s angebracht.\u003c/p\u003e","title":"Rainer's Uhr"},{"content":"Das Projekt des heutigen Tages benutzt die Funktionen des vorigen Tests, um selbständig Informationen aus einer Webseite zu beziehen. Konkret lädt das Programm die aktuelle Uhrzeit von einer speziell dafür konzipierten Seite und stellt damit die per Library realisierte interne Uhr des Controllers.\nHinter dem heutigen Türchen befindet sich erneut ein Widerstand mit 1 kΩ. Für den morgigen Versuch werden alle drei Widerstände benötigt.\nDas Programm: Day9_TCPAutoTime\nWährend das gestrige Programm noch größtenteils per Hand bedient werden musste, arbeitet das heutige Programm weitgehend autonom. Völlig selbständig verbindet sich der Controller mit der Webseite:\nhttp://chronic.herokuapp.com/\nÜber die URL können verschiedene Zeitsysteme und Umstellungen abgerufen werden. Die aktuelle, in Deutschland im Winter gültige Zeit, wird durch die URL\nhttp://chronic.herokuapp.com/utc/in-one-hour\nabgefragt. Deswegen steht im Aufruf der Funktion getTime als zweiter Parameter „utc/in-one-hour“. Ausgehend von der UTC (koordinierte Weltzeit) müssten Sie im Sommer den Aufruf ändern zu „utc/in-two-hours“. Nach demselben System können Sie auch alle anderen Zeitzonen behandeln.\nAusgabe der Uhrzeit über den Seriellen Monitor Die ermittelte Zeit wird nun an die Time-Library von Michael Margolis übergeben (Quelle: http://www.pjrc.com/teensy/td_libs_Time.html). Aus praktischen Gründen ist eine Kopie der von mir verwendeten Time-Library-Version im Sketchordner enthalten. Diese muss in den libraries-Ordner Ihres Sketchbook-Ordners kopiert werden. Im Hintergrund wird nun permanent die neue Uhrzeit berechnet und jede Sekunde im Terminal ausgegeben. Sie könnten nun auf einfache Weise einen Wecker oder eine andere zeitgesteuerte Anwendung programmieren.\n","permalink":"https://iot.fkainka.de/day-9/","summary":"\u003cp\u003eDas Projekt des heutigen Tages benutzt die Funktionen des vorigen Tests, um selbständig Informationen aus einer Webseite zu beziehen. Konkret lädt das Programm die aktuelle Uhrzeit von einer speziell dafür konzipierten Seite und stellt damit die per Library realisierte interne Uhr des Controllers.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen befindet sich erneut ein Widerstand mit 1 kΩ. Für den morgigen Versuch werden alle drei Widerstände benötigt.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDas Programm: \u003ca href=\"/images/2015/09/Day9_TCPAutoTime.zip\"\u003eDay9_TCPAutoTime\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWährend das gestrige Programm noch größtenteils per Hand bedient werden musste, arbeitet das heutige Programm weitgehend autonom. Völlig selbständig verbindet sich der Controller mit der Webseite:\u003c/p\u003e","title":"Tag 9: TCP Uhrzeit"},{"content":"Hallo,\nwie kompiliere ich den Treiber unter openSuse 13.2.\nC Compiler, Kernel-Headers sind natürlich installiert;\nbeim Aufruf vom make erhalte ich Fehler (sind aber keine fehlenden Dateien)\nGruß\nAlfred\n4 Antworten fk – 11.12.2015\nHi,\nwarum möchtest du den Treiber kompilieren? Ist der Treiber nicht schon zur Installation bereit?\nAlfredW – 22.12.2015\nHallo,\nmittlerweile habe ich den Treiber für Linux (OpenSuse 13.2) compiliert bekommen; dieser liegt ja nur im Source Code vor;\ngenau nachvollziehen konnte ich das nicht wieso es jetzt geht;\nopenSuse bringt wie ich im Nachhinein feststellen musste den Treiber schon mit (/lib/module/drivers); dieser braucht nur noch mit insmod hinzugefügt werden.\nGruß\nAlfred\nDas_Sams – 31.01.2016\nLiebe Linux User,\naktuelle Kernel haben den Treiber dabei. Ihr braucht NIX RUNTERLADEN. Bei vielen Distributionen wird er automatisch geladen, wenn man das board anschliesst. Wer seine Kernel selber baut findet ihn unter:\n| Symbol: USB_SERIAL_CH341 [=m] │\n│ Type : tristate │\n│ Prompt: USB Winchiphead CH341 Single Port Serial Driver │\n│ Location: │\n│ -\u0026gt; Device Drivers │\n│ -\u0026gt; USB support (USB_SUPPORT [=y]) │\n│ (1) -\u0026gt; USB Serial Converter support (USB_SERIAL [=m]) │\n│ Defined at drivers/usb/serial/Kconfig:102 │\n│ Depends on: USB_SUPPORT [=y] \u0026amp;\u0026amp; USB [=y] \u0026amp;\u0026amp; USB_SERIAL [=m] |\n:-)\ngeneralovernight – 31.01.2016\nDas ist richtig und das hatte ich auch schon einmal hier erwähnt, aber man findet solche Informationen in Foren und Blogs nur schwer - außer man fragt, aber dann gibt\u0026rsquo;s bei länger existierenden Foren oft Antworten wie \u0026ldquo;Das ist doch schon x-mal hier beantwortet\u0026rdquo;.\nDaher habe ich mal eine Linux-FAQ für das Pretzelboard eröffnet, in den Thread können jetzt weitere Infos zum Pretzelboard unter Linux eingetragen werden.\n","permalink":"https://iot.fkainka.de/forum/topic/treiber-compilieren/","summary":"\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003ewie kompiliere ich den Treiber unter openSuse 13.2.\u003cbr\u003e\nC Compiler, Kernel-Headers sind natürlich installiert;\u003cbr\u003e\nbeim Aufruf vom make erhalte ich Fehler (sind aber keine fehlenden Dateien)\u003c/p\u003e\n\u003cp\u003eGruß\u003c/p\u003e\n\u003cp\u003eAlfred\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"4-antworten\"\u003e4 Antworten\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003efk\u003c/strong\u003e – 11.12.2015\u003c/p\u003e\n\u003cp\u003eHi,\u003cbr\u003e\nwarum möchtest du den Treiber kompilieren? Ist der Treiber nicht schon zur Installation bereit?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAlfredW\u003c/strong\u003e – 22.12.2015\u003c/p\u003e\n\u003cp\u003eHallo,\u003c/p\u003e\n\u003cp\u003emittlerweile habe ich den Treiber für Linux (OpenSuse 13.2) compiliert bekommen; dieser liegt ja nur im Source Code vor;\u003cbr\u003e\ngenau nachvollziehen konnte ich das nicht wieso es jetzt geht;\u003cbr\u003e\nopenSuse bringt wie ich im Nachhinein feststellen musste den Treiber schon mit (/lib/module/drivers); dieser braucht nur noch mit insmod hinzugefügt werden.\u003c/p\u003e","title":"Treiber compilieren"},{"content":"In den vorangegangen Tagen haben wir uns vor allem mit dem UDP-Protokoll befasst, mit dem sich einfach und direkt Daten verschicken lassen. Die folgenden Tage werden wir uns mit dem TCP-Protokoll (Transmission Control Protocol) beschäftigen. TCP lässt immer nur eine Verbindung zwischen genau zwei Rechnern zu. Es kommt vor allem im Internet zum Einsatz wenn es ums Browsen auf Webseiten geht.\nHinter dem heutigen Türchen findet sich erneut ein Widerstand 1 kΩ (Braun, Schwarz, Rot). Wie auch bei allen anderen Bauteilen gilt: gut aufbewahren, auch wenn das Bauteil am heutigen Tag noch nicht zum Einsatz kommen wird.\nDas Programm: Day8_TCPBrowser\nDas Programm ähnelt in der Funktionsweise dem SoftwareSerial Programm vom ersten Tag, stellt allerdings unter anderem die WLAN-Verbindung beim Start selbständig her. So sparen Sie eine Menge Schreibarbeit und können schneller loslegen. Vergessen Sie nicht, die Daten Ihres Heimnetzwerks in das Programm einzutragen. Tippen Sie dann im Seriellen Monitor die folgende Befehlszeile ein:\nAT+CIPSTART=\u0026ldquo;TCP\u0026rdquo;,\u0026ldquo;www.example.com\u0026rdquo;,80\nMit diesem Kommando stellen Sie eine TCP-Verbindung zu der Webseite www.example.com her. Der Port 80 ist der Standardport für HTTP-Anfragen. Nach der Bestätigung der Verbindung mit OK können Sie den nächsten Befehl eintippen, den Sie ja bereits kennen:\nAT+CIPSEND=40\nSie wollen nun nämlich eine Nachricht über die eben hergestellte Verbindung schicken. Wenn Sie mit \u0026gt; dazu aufgefordert werden, einen Text einzugeben, tippen Sie zunächst\nGET / HTTP/1.1\nein und drücken anschließen Enter. Das Enter erscheint nicht im Serial Monitor, aber das Modul hat es empfangen. Danach geht die Nachricht weiter mit:\nHost:www.example.com\ngefolgt von zweimal Enter. Zurück kommt ein langer Text. Der erste Teil ist die Antwort des Servers, der ein paar Informationen für den Browser enthält. Der Text nach \u0026lt;!document html\u0026gt; ist die Webseite, die Sie auch sehen, wenn Sie die Seite www.example.com direkt aufrufen, hier allerdings in reiner Textform. Ein Browser würde diesen Text nun interpretieren und in einer uns geläufigen Form darstellen.\nAuszug der Antwort des Webservers ","permalink":"https://iot.fkainka.de/day-8/","summary":"\u003cp\u003eIn den vorangegangen Tagen haben wir uns vor allem mit dem UDP-Protokoll befasst, mit dem sich einfach und direkt Daten verschicken lassen. Die folgenden Tage werden wir uns mit dem TCP-Protokoll (Transmission Control Protocol) beschäftigen. TCP lässt immer nur eine Verbindung zwischen genau zwei Rechnern zu. Es kommt vor allem im Internet zum Einsatz wenn es ums Browsen auf Webseiten geht.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen findet sich erneut ein Widerstand 1 kΩ (Braun, Schwarz, Rot). Wie auch bei allen anderen Bauteilen gilt: gut aufbewahren, auch wenn das Bauteil am heutigen Tag noch nicht zum Einsatz kommen wird.\u003c/p\u003e","title":"Tag 8: Ein Browser"},{"content":"Der erste Teil Arduino Beginner Kurses war scheinbar für viele sehr hilfreich. Deswegen habe ich mich dazu entschlossen, auch den zweiten Teil des Handbuches zu überarbeiten und online zu stellen.\nIn diesem zweiten Teil geht es nun darum, Programme selbst zu schreiben und dabei auch etwas von den Grundlagen in der Arbeit mit Mikrocontrollern zu lernen. Diese Anleitung habe ich bewusst erst heute veröffentlicht, da an dem heutigen Tag auch alle nötigen Bauteile aus dem Adventskalender vorhanden sind, um die kleinen Projekte selbst testen zu können.\nViel Spaß beim ausprobieren :)\nLink zum Artikel: Teil 2 - Schnellstart mit dem NanoESP für Arduino Neulinge ","permalink":"https://iot.fkainka.de/tag-7-special-hinweis-fuer-arduino-neulinge-teil-2/","summary":"\u003cp\u003eDer erste Teil Arduino Beginner Kurses war scheinbar für viele sehr hilfreich. Deswegen habe ich mich dazu entschlossen, auch den zweiten Teil des Handbuches zu überarbeiten und online zu stellen.\u003c/p\u003e\n\u003cp\u003eIn diesem zweiten Teil geht es nun darum, Programme selbst zu schreiben und dabei auch etwas von den Grundlagen in der Arbeit mit Mikrocontrollern zu lernen. Diese Anleitung habe ich bewusst erst heute veröffentlicht, da an dem heutigen Tag auch alle nötigen Bauteile aus dem Adventskalender vorhanden sind, um die kleinen Projekte selbst testen zu können.\u003c/p\u003e","title":"Tag 7 (special): Hinweis für Arduino Neulinge - Teil 2"},{"content":"Im letzten Projekt wurde mit einem Taster die einfachste Form eines Sensors behandelt. Diesmal soll ein Poti als analoger Sensor zum Einsatz kommen um permanent Messwerte in das Netzwerk zu senden.\nHinter dem 7. Türchen des Adventskalenders befindet sich ein Poti mit 10 kΩ. Der Aufbau wird auf dem untern Bild gezeigt.\nDer Aufbau mit Potentiometer an A0 Das Programm: Day7_UDPAnalog\n! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 100 von\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.255.255\u0026quot;,90,91,2\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\nin\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.255.255\u0026quot;,55005,55006,2\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\numändern.\nNeben dem analogen Sensor gibt es noch eine weitere Änderung im Programm. Diesmal soll der Controller nicht wie sonst im AccesPoint-Modus betrieben werden, sondern sich mit Ihrem Heimnetzwerk verbinden. Ihre Stationsdaten können Sie aber auch diesmal ganz einfach oben im Programm eintragen.\nNach dem Upload kann es eine Weile dauern, bis die Verbindung zum Netzwerk hergestellt wurde. War dies erfolgreich, beginnt die LED D3, die auf dem Board fest bestückt ist, zu leuchten. Dies ist das Zeichen, dass der Controller nun bereit ist. Solange der Serielle Monitor aktiv ist werden Sie zwar auch eine entsprechende Meldung sehen, aber bei späteren Versuchen wollen Sie das Board eventuell autark einsetzen, und dann kann dieses Feedback sehr nützlich sein. Über den Seriellen Monitor bekommen Sie ebenfalls die Information, welche IP das Board vom Router zugewiesen bekommen hat. Diese IP ist wichtig, wenn Sie sich später mit dem Board verbinden wollen.\nDer Packet Sender empfängt die Messwerte Die Verbindung zu dem Board funktioniert ähnlich wie zuvor. Lediglich die IP des Moduls und Ihres Rechners wird sich geändert haben. Das Programm empfängt nun zunächst noch keine Messergebnisse. Sie müssen zuerst noch eine Nachricht, z.B. das Kommando led=1, senden und schon trudeln ca. einmal pro Sekunde neue Messdaten ein.\n","permalink":"https://iot.fkainka.de/day-7/","summary":"\u003cp\u003eIm letzten Projekt wurde mit einem Taster die einfachste Form eines Sensors behandelt. Diesmal soll ein Poti als analoger Sensor zum Einsatz kommen um permanent Messwerte in das Netzwerk zu senden.\u003c/p\u003e\n\u003cp\u003eHinter dem 7. Türchen des Adventskalenders befindet sich ein Poti mit 10 kΩ. Der Aufbau wird auf dem untern Bild gezeigt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day7-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-132\" src=\"/images/2015/09/Day7-1.jpg\" alt=\"Der Aufbau mit Potentiometer an A0\" width=\"616\" height=\"301\" data-id=\"132\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau mit Potentiometer an A0\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003e\u003cstrong\u003eDas Programm: \u003ca href=\"/images/2015/09/Day7_UDPAnalog.zip\"\u003eDay7_UDPAnalog\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 100 von\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003e\u003cstrong\u003esucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.255.255\u0026quot;,90,91,2\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\u003c/strong\u003e\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003ein\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003e\u003cstrong\u003esucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.255.255\u0026quot;,55005,55006,2\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\u003c/strong\u003e\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003eumändern.\u003c/em\u003e\u003c/p\u003e","title":"Tag 7: Analoger Sensor"},{"content":"In dem gestrigen Programm wurden erste Kommandos vom Controller ausgewertet. Das heutige Programm behält diese Funktion, kann aber nun zusätzlich selbstständig ein Kommando in das Netzwerk senden.\nHinter dem heutigen Türchen verbirgt sich ein Tastschalter. Er dient hier als einfacher Sensor. Verbinden Sie ihn mit dem Controller wie auf dem Aufbaubild gezeigt.\nDer Schalter platzsparend an D8 angeschlossen Das Programm: Day6_UDPSwitch\n! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 83 von\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,90,91\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\nin\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,55005,55006\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\numändern.\nDas Programm wertet weiterhin die ankommenden Signale aus. Zusätzlich wird jedoch ständig der Button abgefragt. Wird dieser durch den Nutzer betätigt, sendet der Controller den Text\nButton=1\nan das Netzwerk. Alle mit dem Modul verbundenen Geräte mit einem UDP-Server am Port 90, können den Befehl empfangen. Bei einem Hausautomatisierungsprojekt würde nun ein Server die Statusmeldung beispielsweise von einem Bewegungsmelder empfangen und dann den Befehl led=1 zurücksenden, um das Licht zu aktivieren.\nDie Kommandos im Packet Sender ","permalink":"https://iot.fkainka.de/day-6/","summary":"\u003cp\u003eIn dem gestrigen Programm wurden erste Kommandos vom Controller ausgewertet. Das heutige Programm behält diese Funktion, kann aber nun zusätzlich selbstständig ein Kommando in das Netzwerk senden.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen verbirgt sich ein Tastschalter. Er dient hier als einfacher Sensor. Verbinden Sie ihn mit dem Controller wie auf dem Aufbaubild gezeigt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day6-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-127\" src=\"/images/2015/09/Day6-1.jpg\" alt=\"Der Schalter platzsparend an D8 angeschlossen\" width=\"616\" height=\"301\" data-id=\"127\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Schalter platzsparend an D8 angeschlossen\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003e\u003cstrong\u003eDas Programm: \u003ca href=\"/images/2015/09/Day6_UDPSwitch.zip\"\u003eDay6_UDPSwitch\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 83 von\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003e\u003cstrong\u003esucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,90,91\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\u003c/strong\u003e\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003ein\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003e\u003cstrong\u003esucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,55005,55006\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\u003c/strong\u003e\u003c/em\u003e\u003cbr\u003e\n\u003cem\u003eumändern.\u003c/em\u003e\u003c/p\u003e","title":"Tag 6: UDP Button"},{"content":"Fritzing ist eine Software, mit der man leicht und unkompliziert Aufbaupläne vor allem für Steckboard-Projekte erstellen kann. Viele verschiedene Arduino Controller aber auch Raspberry Pi und andere Boards weden schon in der Software unterstütz und erleichern so den Nutzern, einen übersichtlichen Plan zu erstellen. Dadurch fällt es einem selbst und auch anderen Nutzern leicht, das Projekt nachzuvollziehen und nachzubauen.\nFür die Bilder des Adventskalender habe ich ebenfalls die Fritzing Software benutzt und mir dafür ein NanoESP-Bauteil erstellt. Für alle, die ebenfalls mit dem Bauteil Schaltungen mit Fritzing erstellen wollen gibt es hier das Bauteil zum Downloaden.\nDownload: Fritzing_Part_NanoESP Zum Importieren muss man bei den Bauteilen rechts-klicken und Importieren wählen. Dann kann man die entpackte NanoESP.fzpz-Datei auswählen.\nSo werden Bauteile in Fritzing importiert Das Bauteil in Fritzing ","permalink":"https://iot.fkainka.de/das-nanoesp-pretzelboard-fritzing-bauteil/","summary":"\u003cp\u003e\u003ca href=\"http://fritzing.org/home/\"\u003eFritzing\u003c/a\u003e ist eine Software, mit der man leicht und unkompliziert Aufbaupläne vor allem für Steckboard-Projekte erstellen kann. Viele verschiedene Arduino Controller aber auch Raspberry Pi und andere Boards weden schon in der Software unterstütz und erleichern so den Nutzern, einen übersichtlichen Plan zu erstellen. Dadurch fällt es einem selbst und auch anderen Nutzern leicht, das Projekt nachzuvollziehen und nachzubauen.\u003cbr\u003e\nFür die Bilder des Adventskalender habe ich ebenfalls die Fritzing Software benutzt und mir dafür ein NanoESP-Bauteil erstellt. Für alle, die ebenfalls mit dem Bauteil Schaltungen mit Fritzing erstellen wollen gibt es hier das Bauteil zum Downloaden.\u003c/p\u003e","title":"Fritzing Bauteil - NanoESP \u0026 Pretzel Board"},{"content":"In dem heutigen Programm geht es nun endlich darum, Hardware über das UDP-Protokoll zu steuern. In diesem Fall wird eine LED mit einfachen Befehlen ein- und ausgeschaltet.\nHinter dem fünften Türchen befindet sich eine LED. Der passende Vorwiderstand befand sich schon im gestrigen Fach. Bauen Sie die Schaltung auf, wie es das Bild zeigt.\nSo schließen Sie die LED mit Vorwiderstand am Pin D9 an Das Programm:****Day5_UDPLED\n! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 83 von\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,90,91\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\nin\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,55005,55006\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\numändern.\nWährend die vorangegangen Beispielprogramme viele Eingaben des Nutzers benötigten, soll das heutige Programm autonom arbeiten. Trotzdem werden über den seriellen Monitor weiterhin Informationen zu Debug-Zwecken ausgegeben.\nDie Debug-Ausgabe im Seriellen Monitor Der Controller wartet nun auf vom Modul empfangene Daten, die über die +IPD-Meldung angekündigt werden. Legitime Befehle, die Sie über den Packet Sender schicken können, lauten led1 und led0. Der Controller interpretiert sie und schaltet dementsprechend die LED an oder aus. Eine Rückmeldung an den Sender wird ebenfalls übermittelt. Falls ein anderer Befehl gesendet wird, erscheint im Serial Monitor die Meldung \u0026ldquo;Wrong UDP Command\u0026rdquo;. Die gleiche Nachricht wird auch über das Netzwerk an den Sender übermittelt.\nDie Befehle werden über den Packet Sender übermittelt ","permalink":"https://iot.fkainka.de/day-5/","summary":"\u003cp\u003eIn dem heutigen Programm geht es nun endlich darum, Hardware über das UDP-Protokoll zu steuern. In diesem Fall wird eine LED mit einfachen Befehlen ein- und ausgeschaltet.\u003c/p\u003e\n\u003cp\u003eHinter dem fünften Türchen befindet sich eine LED. Der passende Vorwiderstand befand sich schon im gestrigen Fach. Bauen Sie die Schaltung auf, wie es das Bild zeigt.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day5-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-117\" src=\"/images/2015/09/Day5-1.jpg\" alt=\"So schließen Sie die LED mit Vorwiderstand am Pin D9 an\" width=\"616\" height=\"301\" data-id=\"117\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eSo schließen Sie die LED mit Vorwiderstand am Pin D9 an\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003e\u003cstrong\u003eDas Programm:****\u003ca href=\"/images/2015/09/Day5_UDPLED.zip\"\u003eDay5_UDPLED\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e","title":"Tag 5: LED Schalten"},{"content":"In dem gestrigen Projekt wurde die UDP-Kommunikation in eine Richtung, also vom Board zum PC getestet. In diesem Programm wird das Modul so eingestellt, dass eine Kommunikation auch in die andere Richtung möglich ist, fast so wie in einem Chat.\nHinter dem vierten Türchen des Adventskalenders befindet sich ein Widerstand mit 1 kΩ (Braun, Schwarz, Rot). Das Bauteil wird in dem heutigen Versuch noch nicht verwendet, sollte aber unbedingt für später aufbewahrt werden.\nDas Programm: Day4_UDPBidirectional\nDas Programm von heute enthält im Grunde nur eine minimale Änderung, welche aber große Wirkung auf die Kommunikation mit dem UPD-Protokoll hat. Wenn Sie das Programm hochladen, wird erneut ein AccesPoint erstellt, mit dem Sie sich mit dem PC verbinden können. Auch diesmal werden Sie das Packet Sender, oder ein vergleichbares Programm benötigen. Starten Sie das Programm und nehmen Sie dieselben Einstellungen wie gestern vor (File-\u0026gt; Settings-\u0026gt;Network: Enable UDP Server, Port 90). Anschließend müssen Sie nun noch im Hauptfenster im Feld IP-Adresse die Adresse des Moduls (192.168.4.1) eintippen, den Port auf 91 stellen und im weiter rechts stehenden Dropdown Menü den Punkt UDP wählen. Sind diese Einstellungen gemacht und der Serial Monitor geöffnet, können Sie nun die erste Nachricht an das Modul senden indem Sie z.B. Hi in das mit ASCII beschriftetet Feld eintippen.\nDer Packet Sender hat erfolgreich Hi gesendet ! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 54 von\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,90,91\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\nin\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.255\u0026quot;,55005,55006\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;);\numändern.\nWenn Sie nun auf Send klicken, erscheint im Serial Monitor\n+IPD,2:Hi\nOK\nDie Nachricht wurde also empfangen. Sie können nun auch antworten indem Sie wieder den CIPSEND-Befehl benutzen, also z.B.\nAT+CIPSEND=7\n\u0026gt;Hello\nChatten über zwei Geräte ist also möglich, wenn auch sehr umständlich.\nDer Text wurde erfolgreich gesendet ","permalink":"https://iot.fkainka.de/day-4/","summary":"\u003cp\u003eIn dem gestrigen Projekt wurde die UDP-Kommunikation in eine Richtung, also vom Board zum PC getestet. In diesem Programm wird das Modul so eingestellt, dass eine Kommunikation auch in die andere Richtung möglich ist, fast so wie in einem Chat.\u003c/p\u003e\n\u003cp\u003eHinter dem vierten Türchen des Adventskalenders befindet sich ein Widerstand mit 1 kΩ (Braun, Schwarz, Rot). Das Bauteil wird in dem heutigen Versuch noch nicht verwendet, sollte aber unbedingt für später aufbewahrt werden.\u003c/p\u003e","title":"Tag 4: UDP Bidirektional"},{"content":"In dem heutigen Projekt werden zum ersten Mal Daten zwischen Board und PC über das WLAN ausgetauscht. Voraussetzung dafür ist, dass Ihr Rechner über einen WLAN-Adapter verfügt. Es wird das sogenannte UDP (User Datagram Protocol) verwendet. Ein weiteres Programm auf der PC Seite sorgt für das erfolgreiche Empfangen der Nachrichten.\nHinter dem dritten Türchen des Kalenders finden Sie ein isoliertes Kabel das für den Aufbau von Schaltungen unerlässlich ist. Als Vorbereitung für spätere Versuche können Sie die Versorgungsleitungen Masse und VCC auf die äußeren Bahnen legen.\nDie Versorgungsleitungen auf den äußeren Bahnen Das Programm:****Day3_UPDBasics\nWenn Sie das Programm auf den Controller laden, wird der Controller als AccesPoint konfiguriert und Sie sollten ein offenes Netzwerk mit dem Namen NanoESP sehen. Bevor Sie sich allerdings mit dem Netzwerk verbinden, sollten Sie zunächst noch ein Programm aus dem Internet downloaden. Bei meinen Versuchen habe ich das Programm Packet Sender von Dan Nagle verwendet, welches Sie unter diesem Link downloaden können:\nhttps://packetsender.com/\nNach dem Laden und Installieren des Programms können Sie nun Ihren PC mit dem offenen Netzwerk des NanoESP verbinden. Achten Sie darauf, dass die Firewall das Netzwerk als Heimnetzwerk erkennt, damit keine Daten geblockt werden. Ihr Rechner sollte nun die IP 192.168.4.2 bekommen haben. Sie können dies überprüfen, indem Sie den AT-Befehl\nAT+CWLIF\nüber den Seriellen Monitor an das Modul senden. Dieser Befehl zeigt alle mit dem AccesPoint verbundenen Rechner mit IP und MAC-Adresse an.\nNun starten Sie das Packet Sender Programm und stellen unter Settings-\u0026gt;Network den UDP Server Port auf 90 und klicken die Checkbox \u0026ldquo;Enable UDP Server\u0026rdquo; an. In der Regel sollte unten links dann UDP:90 stehen. Falls nicht müssen Sie die Software einmal neu starten.\nEinstellungen im Packet Sender ! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 55 von\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.2\u0026quot;,90\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;); //UDP-Server\nin\nsucces \u0026amp;= sendCom(\u0026ldquo;AT+CIPSTART=\u0026quot;UDP\u0026quot;,\u0026quot;192.168.4.2\u0026quot;,55005\u0026rdquo;, \u0026ldquo;OK\u0026rdquo;); //UDP-Server\numändern.\nDas Programm auf dem Rechner dient nun als UDP Server, während der Controller als UDP Client eingestellt ist. Im UDP-Protokoll ist die Unterscheidung Client Server nicht eindeutig, aber in diesem Fall bedeute dies, dass Sie mit dem Controller Daten an Ihren Rechner schicken.\nUm Daten zu senden verwenden Sie den Befehl\nAT+CIPSEND=7\nWobei die 7 für die Anzahl der zu sendenden Zeichen steht. Es erscheint das Zeichen \u0026gt; als Rückgabewert. Dies bedeutet, Sie können nun Ihre Nachricht übermitteln. Tippen Sie hello ein und bestätigen Sie wieder mit Enter. Als Rückgabewert sendet das Modul SEND OK, und das obwohl Sie nur 5 Zeichen eingegeben haben. Das liegt daran, dass nach Ihrer Eingabe noch Carriage Return und New Line mit gesendet werden, also zwei Zeichen mehr, die Sie in Ihre Nachrichtenlänge mit einkalkulieren müssen.\nVerwendung des CIPSEND-Befehls Wenn Sie nun wieder zum Paket Sender wechseln und dort unter Traffic Log schauen, können Sie den Eingang der Nachricht sehen. In der ASCII-Ansicht sehen Sie sogar die beiden mitgesendet Zeichen repräsentiert durch \\r und \\n. Die erste Kommunikation zwischen Board und PC über das WLAN war also ein Erfolg.\nDie Nachricht wurde vom Packet Sender Programm empfangen ","permalink":"https://iot.fkainka.de/day-3/","summary":"\u003cp\u003eIn dem heutigen Projekt werden zum ersten Mal Daten zwischen Board und PC über das WLAN ausgetauscht. Voraussetzung dafür ist, dass Ihr Rechner über einen WLAN-Adapter verfügt. Es wird das sogenannte UDP (User Datagram Protocol) verwendet. Ein weiteres Programm auf der PC Seite sorgt für das erfolgreiche Empfangen der Nachrichten.\u003c/p\u003e\n\u003cp\u003eHinter dem dritten Türchen des Kalenders finden Sie ein isoliertes Kabel das für den Aufbau von Schaltungen unerlässlich ist. Als Vorbereitung für spätere Versuche können Sie die Versorgungsleitungen Masse und VCC auf die äußeren Bahnen legen.\u003c/p\u003e","title":"Tag 3: UDP-Send"},{"content":"Mit dem heutigen Projekt wird getestet, ob Sie den Google-Server erreichen können. Dies dient Ihnen als Test, ob eine prinzipielle Verbindung zum Internet vorhanden ist oder beispielsweise eine Firewall das NanoESP-Board blockiert.\nHinter dem heutigen Türchen finden Sie ein Steckboard. Das Steckboard dient später als Experimentierplattform um Sensoren und anderer Elemente anschließen zu können. Am besten ist es, wenn Sie den Controller wie auf dem untern Bild gezeigt auf das Steckboard stecken. Dadurch bleibt der meiste Platz für Experimente während das WLAN-Modul hinten über das Steckboard hinausragt. Das Micro-USB Kabel hängt dann zwischen den Kontaktseiten und stört nur minimal.\nDer NanoESP auf dem Steckboard Das Programm: Day2_GooglePing\nIn dem Beispielprogramm von der Webseite wurden die Vorgänge, die Sie im ersten Beispiel manuell eingetippt haben, nun größtenteils automatisiert. Der Controller schickt nacheinander Befehle an das ESP-Modul und stellt so u.A. die Verdingung zum WLAN her. Die verschieden langen Timeout-Zeiten geben dem Modul genug Zeit zum Antworten.\nBevor das Programm aber richtig funktionieren kann, müssen Sie Ihre WLAN-Daten hinter die beiden #defines SSID und PASSWORT gleich zu Beginn des Programm-Quellcodes eintragen. Das Modul benötigt nämlich Zugang zum Internet um seinen letzten Befehl ausführen zu können. Mit dem Befehl\nAT+PING\nkönnen andere Geräte im Netzwerk angepingt werden. Pingen bedeutet, dass man anfragt, ob eine Adresse grundsätzlich erreichbar ist. Hier wird der Google-Server mit AT+PING=\u0026ldquo;www.google.de\u0026rdquo; angepingt und wenn eine Antwort zurückkommt, erscheint eine Erfolgsmeldung im Serial Monitor und die mit D3 beschriftete LED, die am Pin D13 am Boards angeschlossen ist, wird aktiviert. Die erste Kommunikation mit dem Internet ist geglückt.\n","permalink":"https://iot.fkainka.de/day-2/","summary":"\u003cp\u003eMit dem heutigen Projekt wird getestet, ob Sie den Google-Server erreichen können. Dies dient Ihnen als Test, ob eine prinzipielle Verbindung zum Internet vorhanden ist oder beispielsweise eine Firewall das NanoESP-Board blockiert.\u003c/p\u003e\n\u003cp\u003eHinter dem heutigen Türchen finden Sie ein Steckboard. Das Steckboard dient später als Experimentierplattform um Sensoren und anderer Elemente anschließen zu können. Am besten ist es, wenn Sie den Controller wie auf dem untern Bild gezeigt auf das Steckboard stecken. Dadurch bleibt der meiste Platz für Experimente während das WLAN-Modul hinten über das Steckboard hinausragt. Das Micro-USB Kabel hängt dann zwischen den Kontaktseiten und stört nur minimal.\u003c/p\u003e","title":"Tag 2: Google Ping"},{"content":"Der erste Tag des Adventskalenders ist bereits rum und ich war überrascht und erfreut über all die Kommentare. Sehr gefreut hat mich vor allem die Bereitschaft der Community sich gegengeseitigt mit diesem zugegebenermaßen nicht völlig einfachen Thema zu helfen.\nAus den Kommentaren konnte ich außerdem herauslesen, dass der Ein oder Andere noch nie mit Arduino oder Mikrocontrollern im Allgemeinen zu tun hatte. Deswegen habe ich unter dem unten stehen Link einen längeren Artikel veröffentlicht, der ein Auszug aus einem meiner ersten Schnelleinstieg Hefte darstellt. Ich hoffe, dass ich damit einigen Leuten den Einstieg in den Adventskalender erleichtern kann.\nViel Spaß beim ausprobieren :)\nLink zum Artikel: Schnellstart mit dem NanoESP für Arduino Neulinge ","permalink":"https://iot.fkainka.de/tag-1-hinweis-fuer-arduino-neulinge/","summary":"\u003cp\u003eDer erste Tag des Adventskalenders ist bereits rum und ich war überrascht und erfreut über all die Kommentare. Sehr gefreut hat mich vor allem die Bereitschaft der Community sich gegengeseitigt mit diesem zugegebenermaßen nicht völlig einfachen Thema zu helfen.\u003c/p\u003e\n\u003cp\u003eAus den Kommentaren konnte ich außerdem herauslesen, dass der Ein oder Andere noch nie mit Arduino oder Mikrocontrollern im Allgemeinen zu tun hatte. Deswegen habe ich unter dem unten stehen Link einen längeren Artikel veröffentlicht, der ein Auszug aus einem meiner ersten Schnelleinstieg Hefte darstellt. Ich hoffe, dass ich damit einigen Leuten den Einstieg in den Adventskalender erleichtern kann.\u003c/p\u003e","title":"Tag 1 - Hinweis für Arduino Neulinge"},{"content":"Es ist der erste Tag im Dezember und damit Zeit, das erste Türchen zu öffnen. Hinter dem Türchen befindet sich das wichtigste Bauteil dieses Kalender, nämlich das Arduino-kompatible NanoESP-Board mit integrierten WLAN-Modul, um das es in diesem Kalender geht.\nDas NanoESP Board Wie man an der Platine recht gut erkennen kann, besteht das Board aus zwei Komponenten. Bei der linken Hälfte handelt es sich um ein Arduino kompatibles Mikrocontrollersystem, das mit dem Arduino Nano verglichen werden kann. Der rechte Teil ist das WLAN-Modul mit der Bezeichnung ESP8266. Diese beiden Komponenten kommunizieren über eine per Software generierte serielle Schnittstelle miteinander. Dabei fungiert die Arduino-Seite eher als der Chef, der die Kommandos an das WLAN-Modul leitet. Einige dieser Kommandos werden schon heute am ersten Tag ausprobiert.\nHier können Sie das heutige Programm herunterladen:\nDas Programm:****Day1_SoftwareSerial Als Entwicklungsumgebung kommt die Arduino Software zum Einsatz. Die aktuelle Version finden Sie auf der Internetseite\nwww.arduino.cc\nIch habe mit den Arduino-Versionen 1.6.4 – 1.6.5 gearbeitet. Ältere Versionen können Probleme verursachen. Für manche Linux-Versionen existiert derzeit allerdings nur eine sehr alte Version. Tipps wie Sie dieses und andere Probleme lösen können, finden Sie auf der Internetseite. In der Arduino-Software müssen Sie dann als Board Arduino Nano und den seriellen Port auswählen. Dann können Sie das Programm uploaden.\nBeim heutigen Download handelt sich um ein sehr simples Programm welches nichts weiter tut, als alle Daten, die über die serielle Hardwareschnittstelle des Mikrocontroller empfangen werden, über die selbst definierte Softwareschnittstelle an den ESP-Controller durchzureichen. Das Ganze funktioniert auch in umgekehrter Richtung. Wie man im Quelltext sehen kann, sind die beiden Anschlüsse der Softwareschnittstelle die Pins 11 und 12. Diese sollten in eigenen Projekten nicht als GPIO-Pins verwendet werden. Sie benötigen außerdem die SoftwareSerial-Library. Diese ist bei den meisten Arduino-Versionen schon vorinstalliert, falls nicht sollten Sie die Library über den Manager herunterladen.\nNachdem das Programm hochgeladen wurde, können Sie den Seriellen Monitor der Arduino-Oberfläche starten. Bevor es nun losgehen kann, müssen Sie noch zwei wichtige Einstellung am Serial Monitor vornehmen, nämlich unten rechts in der Ecke die Baudrate auf 19200 stellen und in der Box links daneben die Einstellung \u0026ldquo;CR und NL\u0026rdquo; vornehmen.\nNach dem Einstellen sehen Sie schon eine Meldungen, nämlich ein AT und ein paar Zeilen darunter ein OK. Das Kommando AT wurde vom Mikrocontroller an das ESP-Modul gesendet und das Modul hat mit OK geantwortet. Hieran können Sie erkennen, dass das Modul funktioniert und einsatzbereit ist.\nSie können dies erneut testen, indem Sie selbst den Befehl\nAT\nper Seriellen Monitor senden. Das hochgeladenen Programm reicht den Befehl erneut an das ESP-Modul durch, welches wiederum mit OK antwortet. Den nächsten Befehl den Sie testen können lautet:\nAT+GMR\nMit diesem Befehl wird die aktuelle Firmware und Versionsnummer ausgegeben. Mit dem Befehl\nAT+RST\nkönnen Sie das Modul reseten. Sie sehen dann im Terminal zunächst ein paar unleserliche Zeichen und am Ende ready , das Zeichen, dass das Modul nun bereit ist. Mit\nAT+CWMODE\nKönnen Sie dem Sie den WLAN-Modus festlegen. Es gibt drei Möglichkeiten: Modus 1 ist der Stationsmodus. Das bedeutet, Sie können sich mit dem Modul in ein bestehendes WLAN einwählen. Modus 2 ist der AccesPoint Modus. Das bedeutet, Sie können sich mit einem WLAN-fähigem Gerät in ein vom Modul bereitgestelltes WLAN anmelden. Modus 3 ist der Duale Modus. Sie können sich also sowohl mit dem Modul in ein bestehendes WLAN einwählen, als auch mit einem weiteren Gerät eine direkte Verbindung aufbauen. Testen Sie den AccesPoint-Modus indem Sie den Modus 2 über das Kommando\nAT+CWMODE=2\neinstellen und dann mit dem Befehl\nAT+CWSAP=\u0026ldquo;MyNanoESP\u0026rdquo;,\u0026ldquo;MyPassword\u0026rdquo;,5,3\ndie passenden Parameter zum Access-Point einstellen. Sie können dann z.B. mit einem WLAN-fähigen PC das Netzwerk MyNanoESP suchen und sich mit dem Passwort MyPasswort verbinden. Wurde die Verbindung erfolgreich aufgebaut können Sie mit\nAT+CWLIF\ndas verbundene Gerät mittels IP und MAC Adresse anzeigen lassen.\nDie AT-Kommandos im Seriellen Monitor ((Day1-2.jpg)) Die AT-Kommandos im Seriellen Monitor\nSie können nun auch den Stationsmodus testen indem Sie zunächst mit\nAT+CWMODE=1\nden Modus umstellen. Sie können alle verfügbaren WLAN-Netzwerke in Reichweite durch den Befehl\nAT+CWLAP\nauflisten lassen. Schließlich stellen Sie mit\nAT+CWJAP=\u0026ldquo;MySSID\u0026rdquo;,\u0026ldquo;MyPassword\u0026rdquo;\neine Verbindung mit Ihrem Netzwerk her wobei Sie MySSID und MyPassword durch Ihren Netzwerknamen und Ihr Passwort ersetzen. Es kann eine ganze Weile dauern bis die Verbindung hergestellt wird, aber am Ende steht ein OK als Bestätigung. Der erste Verbindungaufbau wäre damit also geglückt.\n","permalink":"https://iot.fkainka.de/day-1/","summary":"\u003cp\u003eEs ist der erste Tag im Dezember und damit Zeit, das erste Türchen zu öffnen. Hinter dem Türchen befindet sich das wichtigste Bauteil dieses Kalender, nämlich das Arduino-kompatible NanoESP-Board mit integrierten WLAN-Modul, um das es in diesem Kalender geht.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day1-1.jpg\"\u003e\u003cimg class=\"wp-image-84 size-large\" src=\"/images/2015/09/Day1-1.jpg\" alt=\"Das NanoESP Board\" width=\"616\" height=\"240\" data-id=\"84\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDas NanoESP Board\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eWie man an der Platine recht gut erkennen kann, besteht das Board aus zwei Komponenten. Bei der linken Hälfte handelt es sich um ein Arduino kompatibles Mikrocontrollersystem, das mit dem Arduino Nano verglichen werden kann. Der rechte Teil ist das WLAN-Modul mit der Bezeichnung ESP8266. Diese beiden Komponenten kommunizieren über eine per Software generierte serielle Schnittstelle miteinander. Dabei fungiert die Arduino-Seite eher als der Chef, der die Kommandos an das WLAN-Modul leitet. Einige dieser Kommandos werden schon heute am ersten Tag ausprobiert.\u003c/p\u003e","title":"Tag 1: Die ersten Schritte"},{"content":"Der Internet of Things Adventskalender ist nun weitestgehendst ausverkauft. Nur in vereinzelten Conrad Filialen sind noch Exemplare zu erhalten. Viele Leute haben mich allerdings gefragt, ob ich eine Bauteileliste veröffentlichen kann, damit man sich einen Kalender selbst zusammenstellen kann.\nEs ist natürlich nicht möglich, die exakt gleichen Bauteile bei jedem Händler zu bekommen, dafür ist die Menge an Herstellern einfach zu groß. Dennoch habe ich mich bemüht, eine Einkaufsliste zusammenzustellen und dabei darauf geachtet, dass möglichst kompatible Elemente verwendet werden (also identisches Pin-Layout, Kenndaten etc.). Es kann dennoch sein, dass bei dem ein oder anderen Versuchen eine Variation der Schaltung verwendet werden muss.\nDa es für eine online Bestellung mittlerweile zu spät ist, gibt es die Liste nun als PDF zum downloaden. Diese Liste können Sie dann ausdrucken um in einem nahelegenden Conrad Shop alle nötigen Bauteile zu besorgen.\nIn dem Spoiler darunter finden Sie außerdem eine Liste, an welchen Tag welches Bauteil im Adventskalender enthalten ist. Alle die sich lieber überraschen lassen wollen, sollten diese Liste natürlich nicht vor dem 24.12. anschauen. Diejenigen die aber z.B. einen Kalender für andere nachbasteln wollen, dient diese Liste als Hilfestellung. Und natürlich ist auch möglich, dass Nachkäufer mit diesen oder ähnlichen Bauteilen an dem diesjährigen Kalender Wettbewerb teilzunehmen. Viel Spaß beim Basteln!\nDownload Einkaufliste: Conrad Einkaufsliste Liste: Welches Bauteil an welchem Tag? Tag Bauteil Anmerkungen 1 NanoESP 2 Steckboard Bei Reichelt alternatives Steckboard 3 Draht Bei Reichelt 10 Male-Male Drähte anstatt 1m isolierter Draht 4 Widerstand 1KOhm 5 LED 6 Taster 7 Poti Bei Reichelt leider ohne roten Drehknopf 8 Widerstand 1KOhm 9 Widerstand 1KOhm 10 RGB LED Bei Reichelt kein mattes Gehäuse 11 Kabel 1 Male-Female Draht 12 9V Clip 13 Widerstand 1KOhm 14 Widerstand 10kOhm 15 Phototransistor 16 Kabel 1 Male-Female Draht 17 IR-Modul 18 IR Diode 19 Kabel 1 Male-Female Draht 20 Widerstand 1KOhm 21 Piezo Bei Reichelt größerer/lauterer Piezo 22 Taster 23 Kabel 1 Male-Female Draht 24 NTC ","permalink":"https://iot.fkainka.de/day-0-alternative-zum-ausverkauften-adventskalender-spoiler-alert/","summary":"\u003cp\u003eDer Internet of Things Adventskalender ist nun weitestgehendst ausverkauft. Nur in vereinzelten Conrad Filialen sind noch Exemplare zu erhalten. Viele Leute haben mich allerdings gefragt, ob ich eine Bauteileliste veröffentlichen kann, damit man sich einen Kalender selbst zusammenstellen kann.\u003c/p\u003e\n\u003cp\u003eEs ist natürlich nicht möglich, die exakt gleichen Bauteile bei jedem Händler zu bekommen, dafür ist die Menge an Herstellern einfach zu groß. Dennoch habe ich mich bemüht, eine Einkaufsliste zusammenzustellen und dabei darauf geachtet, dass möglichst kompatible Elemente verwendet werden (also identisches Pin-Layout, Kenndaten etc.). Es kann dennoch sein, dass bei dem ein oder anderen Versuchen eine Variation der Schaltung verwendet werden muss.\u003c/p\u003e","title":"Day 0: Alternative zum ausverkauften Adventskalender (Spoiler Alert)"},{"content":"Das Interesse am IoT-Adventskalender scheint recht groß zu sein. Daher kam öfter die Frage auf, wann die Programme veröffentlicht werden.\nMein eigentlicher Plan war, dass die Programme jeden Dezembertag zusammen mit dem passenden Artikel veröffentlicht werden. Dies wird auch weiter der Fall sein, aber für alle diejenigen, die das Warten nicht mehr ertragen, gibt es hier alle Programme in einem Ordner zum Download:\nDownload: CalenderIoT Achtung: Es gab eine Änderung im Programm vom Tag 10. Der Webservice, den ich in diesem Programm verwendet habe, hat vor wenigen Tagen seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite http://www.openweathermap.com/ bezieht. Der Link zu dem neuen und auch in der neuen Versio des Programms verwendeten Dienst lautet:\nwww.temp.fkainka.de\nDurch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:\nwww.temp.fkainka.de/?city=essen\nBauteileliste: In dieser Liste finden Sie alle Bauteile des Kalenders. Achtung Spoiler! NanoESP\n1m Verbindungsdraht\n4 x Male\nFemale Steckkabel\nSteckboard (Standard, SYB-46)\nLED (weiß)\nRGB-LED (gemeinsame Kathode)\n4 Widerstände a 1 kOhm\n1 Widerstand 47 Ohm\n10 kOhm Widerstand\n2 Taster\n1 Poti (10 kOhm)\n1 IR-Sende-Dioden\nIR-Empfangs-Modul (36 kHz)\nBatterieclip (9V - Block)\nFototransitor (10 kOhm)\nPiezoscheibe mit Drähten\nTemperatursensor (NTC 10 kOhm)\n","permalink":"https://iot.fkainka.de/tag-0-alle-projekte-fuer-ungeduldige-spoiler-alert/","summary":"\u003cp\u003eDas Interesse am IoT-Adventskalender scheint recht groß zu sein. Daher kam öfter die Frage auf, wann die Programme veröffentlicht werden.\u003c/p\u003e\n\u003cp\u003eMein eigentlicher Plan war, dass die Programme jeden Dezembertag zusammen mit dem passenden Artikel veröffentlicht werden. Dies wird auch weiter der Fall sein, aber für alle diejenigen, die das Warten nicht mehr ertragen, gibt es hier alle Programme in einem Ordner zum Download:\u003c/p\u003e\n\u003ch3 id=\"downloadcalenderiot\"\u003eDownload: \u003ca href=\"/images/2015/11/CalenderIoT.zip\"\u003eCalenderIoT\u003c/a\u003e\u003c/h3\u003e\n\u003ch4 id=\"achtung\"\u003eAchtung:\u003c/h4\u003e\n\u003cp\u003eEs gab eine Änderung im Programm vom Tag 10. Der Webservice, den ich in diesem Programm verwendet habe, hat vor wenigen Tagen seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite \u003ca href=\"http://www.openweathermap.com/\"\u003ehttp://www.openweathermap.com/\u003c/a\u003e bezieht. Der Link zu dem neuen und auch in der neuen Versio des Programms verwendeten Dienst lautet:\u003c/p\u003e","title":"Tag 0: Alle Projekte für Ungeduldige (Spoiler Alert)"},{"content":"In dem hier vorgestellten Beispielprojekt soll eine einfache Ansteuerung einer bunten RGB-LED realisiert werden. Die Steuerung soll über eine Webseite oder auch über eine Smartphone-App möglich sein. Die Verbindung kann sowohl über einen Router, und damit auch aus der Ferne über das Internet, als auch über den AccesPoint des Moduls hergestellt werden. Es ändert sich jeweils nur die zu adressierende IP.\nSie können das vorgestellte Programm hier herunterladen\nDer Aufbau der Schaltung auf einem Steckboard Die Programmierung erfolgt über die Arduino-Oberfläche, die sich jeder kostenlos auf der Seite www.arduino.cc herunterladen kann. Als Board kann einfach das Arduino Nano Board ausgewählt werden (ATmega328p Version). Bevor das Programm hochgeladen wird, müssen die WLAN Daten am Anfang des Programes eingetragen werden.\nNach dem Upload verbindet sich das Board dann automatisch mit dem Router und die LED D3 leuchtet zur Bestätigung. Über den Seriellen Monitor der Arduino-Umgebung wird nun die vom Router an das Modul vergebene IP ausgegeben. Wenn sich der PC im gleichen Netzwerk befindet, kann man einfach über die IP des Moduls auf die im Quelltext hinterlegte Webseite zugreifen.\nDie Webseite in einem Browser auf dem PC Auf der Webseite wird man aufgefordert, eine Farbe zu wählen. Als Eingabeelement kommt hier das HTML5-Element ColorPicker zum Einsatz. Nach dem Auswählen wird die Farbe in der URL verschlüsselt übermittelt und kann einfach vom Board ausgewertet werden.\nGleichzeitig zu der Verbindung zum Router hat das Modul aber auch sein eigenes Netzwerk mit den Namen NanoESP erstellt, mit dem man sich nun z.B. mit einem Smartphone verbinden kann. Das Passwort und der Name des Netzwerks wurden vorher im Arduino-Programm festgelegt. Die Vergabe einer IP an ein neues Gerät funktioniert vollautomatisch. Die IP des Moduls in seinem selbst erstellen Netzwerk lautet 192.168.4.1. Nach dem Verbinden mit einem Smartphones kann man über diese IP die auch für Smartphones optimierte Webseite des Moduls aufrufen und über das ColorPicker-Element die Farbe auswählen.\nDas ColorPicker Element im Android 5.0 Browser Das Projekt lässt sich gut zu einer bunten Lampe erweitern, die auch aus der Ferne bedient werden kann. Mithilfe einiger weniger zusätzlicher Bauteile kann man so eine Designerlampe für das Wohnzimmer bauen. Die Steuerung kann über die verschiedensten Geräte bedient werden, z.B. auch mit einer Smartphone-App.\nDie Lampe im Einsatz Android App zum Steuern der RGB-LED erstellt mit NetIO http://netio.davideickhoff.de Doch der NanoESP kann noch mehr. Zu den bis jetzt mit dem Board realisierten Projekten gehören unter anderem eine Uhr die sich über das Internet automatisch stellt, eine Universalfernbedienung mit Webinterface, eine Messstation mit Cloud-Anbindung, Ansteuerung über Twitter und vieles mehr. Die Arduino-Oberfläche sorgt dafür, dass alle Programme leicht verständlich und einsteigerfreundlich bleiben. Somit ist das NanoESP-Board ein Allrounder für das Thema Internet of Things.\nAuszug aus dem Arduino-Programm #define SSID \u0026#34;WLAN NAME\u0026#34; #define PASSWORD \u0026#34;XXX\u0026#34; #define LED_WLAN 13 #define RED 3 #define GREEN 5 #define BLUE 6 #define GND 4 #define DEBUG true const char site[] PROGMEM = { \u0026#34;\u0026lt;HTML\u0026gt;\u0026lt;HEAD\u0026gt;\\n\u0026lt;link rel=\\\u0026#34;icon\\\u0026#34; href=\\\u0026#34;data:;base64,iVBORw0KGgo=\\\u0026#34;\u0026gt;\\n\u0026lt;meta name=\\\u0026#34;viewport\\\u0026#34; content=\\\u0026#34;width=device-width, initial-scale=2.0, user-scalable=yes\\\u0026#34;\u0026gt;\\n\u0026lt;title\u0026gt;\\nRGB LED\\n\u0026lt;/title\u0026gt;\\n\u0026lt;/HEAD\u0026gt;\\n\\n\u0026lt;BODY bgcolor=\\\u0026#34;#FFFF99\\\u0026#34; text=\\\u0026#34;#000000\\\u0026#34;\u0026gt;\\n\u0026lt;FONT size=\\\u0026#34;6\\\u0026#34; FACE=\\\u0026#34;Verdana\\\u0026#34;\u0026gt;\\nSelect Color\\n\u0026lt;/FONT\u0026gt;\\n\\n\u0026lt;HR\u0026gt;\\n\u0026lt;BR\u0026gt;\\n\u0026lt;FONT size=\\\u0026#34;3\\\u0026#34; FACE=\\\u0026#34;Verdana\\\u0026#34;\u0026gt;\\nChange the Color\u0026lt;BR\u0026gt;\\nof the RGB-LED\\n\u0026lt;BR\u0026gt;\\n\u0026lt;BR\u0026gt;\\n\u0026lt;form method=\\\u0026#34;GET\\\u0026#34;\u0026gt;\\n\\t\u0026lt;input type=\\\u0026#34;color\\\u0026#34; name=\\\u0026#34;rgb\\\u0026#34; onchange=\\\u0026#34;this.form.submit()\\\u0026#34;\u0026gt;\u0026lt;BR\u0026gt;\\n\u0026lt;/form\u0026gt;\\n\u0026lt;BR\u0026gt;\\n\u0026lt;HR\u0026gt;\\n\\n\u0026lt;/font\u0026gt;\\n\u0026lt;/HTML\u0026gt;\\0\u0026#34; }; #include \u0026lt;SoftwareSerial.h\u0026gt; SoftwareSerial esp8266(11, 12); // RX, TX void setup() { Serial.begin(19200); esp8266.begin(19200); pinMode(RED, OUTPUT); pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); pinMode(GND, OUTPUT); digitalWrite(GND, LOW); if (!espConfig()) serialDebug(); else digitalWrite(LED_WLAN, HIGH); if (configTCPServer()) debug(\u0026#34;Server Aktiv\u0026#34;); else debug(\u0026#34;Server Error\u0026#34;); } void loop() { String xBuffer; if (esp8266.available()) // check if the esp is sending a message { if (esp8266.find(\u0026#34;+IPD,\u0026#34;)) { debug(\u0026#34;Incomming Request\u0026#34;); int connectionId = esp8266.parseInt(); if (esp8266.findUntil(\u0026#34;?rgb=\u0026#34;, \u0026#34;\\n\u0026#34;)) { String hexstring = esp8266.readStringUntil(\u0026#39; \u0026#39;); long number = (long) strtol( \u0026amp;hexstring[3], NULL, 16); // Split them up into r, g, b values int r = number \u0026gt;\u0026gt; 16; int g = number \u0026gt;\u0026gt; 8 \u0026amp; 0xFF; int b = number \u0026amp; 0xFF; analogWrite(RED, r); analogWrite(GREEN, g); analogWrite(BLUE, b); } if (sendWebsite(connectionId, createWebsite())) debug(\u0026#34;Website send OK\u0026#34;); else debug(\u0026#34;Website send Error\u0026#34;); } } } ","permalink":"https://iot.fkainka.de/beispielprojekt/","summary":"\u003cp\u003eIn dem hier vorgestellten Beispielprojekt soll eine einfache Ansteuerung einer bunten RGB-LED realisiert werden. Die Steuerung soll über eine Webseite oder auch über eine Smartphone-App möglich sein. Die Verbindung kann sowohl über einen Router, und damit auch aus der Ferne über das Internet, als auch über den AccesPoint des Moduls hergestellt werden. Es ändert sich jeweils nur die zu adressierende IP.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"/images/2015/09/Webserver_RGB_Example.zip\"\u003eSie können das vorgestellte Programm hier herunterladen\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/Day23-1.jpg\"\u003e\u003cimg class=\"size-large wp-image-255\" src=\"/images/2015/09/Day23-1.jpg\" alt=\"Die RGB-Led auf dem Steckboard an den Pins D3, D5 und D6\" width=\"616\" height=\"363\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDer Aufbau der Schaltung auf einem Steckboard\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eDie Programmierung erfolgt über die Arduino-Oberfläche, die sich jeder kostenlos auf der Seite \u003ca href=\"http://www.arduino.cc\"\u003ewww.arduino.cc\u003c/a\u003e herunterladen kann. Als Board kann einfach das Arduino Nano Board ausgewählt werden (ATmega328p Version). Bevor das Programm hochgeladen wird, müssen die WLAN Daten am Anfang des Programes eingetragen werden.\u003c/p\u003e","title":"Beispielprojekt - NanoESP \u0026 Pretzelboard"},{"content":"Auf dieser Seite können Sie Probleme diskutieren und Hilfe ersuchen rund um das Lernpaket IoT finden.\nAchtung: Es gab eine Änderung im Programm P12_TCPWeather. Der Webservice, den ich in diesem Programm verwendet habe, hat seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite http://www.openweathermap.com/ bezieht. Der Link zu dem neuen und auch in der neuen Version des Programms verwendeten Dienst lautet:\nwww.temp.fkainka.de\nDurch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:\nwww.temp.fkainka.de/?city=essen\n","permalink":"https://iot.fkainka.de/test/","summary":"\u003cp\u003eAuf dieser Seite können Sie Probleme diskutieren und Hilfe ersuchen rund um das Lernpaket IoT finden.\u003c/p\u003e\n\u003ch4 id=\"achtung\"\u003eAchtung:\u003c/h4\u003e\n\u003cp\u003eEs gab eine Änderung im Programm P12_TCPWeather. Der Webservice, den ich in diesem Programm verwendet habe, hat seinen Dienst eingestellt. Ich habe nun einen eigenen Service gestartet, der seine Daten von der Webseite \u003ca href=\"http://www.openweathermap.com/\"\u003ehttp://www.openweathermap.com/\u003c/a\u003e bezieht. Der Link zu dem neuen und auch in der neuen Version des Programms verwendeten Dienst lautet:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.temp.fkainka.de/\"\u003ewww.temp.fkainka.de\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDurch anpassen der URL kann die Temperatur einer Stadt abgefragt werden. Als Beispiel für Essen:\u003c/p\u003e","title":"Diskusionen und Hilfe"},{"content":"Auf dieser Seite finden Sie einige Technische Daten rund um das Modul\nTechnische Daten: Mikrocontroller: ATmega328 Flash Speicher: 32 KB (davon 0,5 KB für den Bootloader) SRAM: 2 KB EEPROM: 1 KB Taktrate: 16 MHz I/O-Pins: 20 (Davon 2 für die Kommunikation mit dem WLAN-Modul davon PWM: 6 davon analoge Eingänge: 6 USB-to-Serial Chip: CH340G Betriebsspannung: 5 V Empfohlene Eingangsspannung: 7-12 V Maximaler Strom pro I/O-Pin: 40 mA Belastbarkeit des 3.3-V-Ausgangs: 50 mA WLAN-Modul: ESP8266\nSPI-Flash 4Mbit Betriebsspannung: 3,3V WLAN-Standarts: 802.11 b/g/n WLAN-Modi: Wi-Fi Direct (P2P), soft-AP Firmware: AT-Firmware Version 0.22 Sonstiges: Integrierter TCP/IP stack +19.5dBm Ausgangsleistung im 802.11b Modus Integrierter low power 32-bit CPU Kommunikation über UART ","permalink":"https://iot.fkainka.de/technische-daten/","summary":"\u003cp\u003eAuf dieser Seite finden Sie einige Technische Daten rund um das Modul\u003c/p\u003e\n\u003ch2 id=\"technische-daten\"\u003eTechnische Daten:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMikrocontroller:                                   ATmega328\u003c/li\u003e\n\u003cli\u003eFlash Speicher:                                  32 KB (davon 0,5 KB für den Bootloader)\u003c/li\u003e\n\u003cli\u003eSRAM:                                              2 KB\u003c/li\u003e\n\u003cli\u003eEEPROM:                                         1 KB\u003c/li\u003e\n\u003cli\u003eTaktrate:                                            16 MHz\u003c/li\u003e\n\u003cli\u003eI/O-Pins:                                            20 (Davon 2 für die Kommunikation mit dem WLAN-Modul\n\u003cul\u003e\n\u003cli\u003edavon PWM:                                  6\u003c/li\u003e\n\u003cli\u003edavon analoge Eingänge:                6\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUSB-to-Serial Chip:                            CH340G\u003c/li\u003e\n\u003cli\u003eBetriebsspannung:                             5 V\u003c/li\u003e\n\u003cli\u003eEmpfohlene Eingangsspannung:         7-12 V\u003c/li\u003e\n\u003cli\u003eMaximaler Strom pro I/O-Pin:             40 mA\u003c/li\u003e\n\u003cli\u003eBelastbarkeit des 3.3-V-Ausgangs:     50 mA\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eWLAN-Modul:                                      ESP8266\u003c/strong\u003e\u003c/p\u003e","title":"Technische Daten NanoESP \u0026 Pretzel Board"},{"content":"Wenn Sie das erste Mal das Board über den MicroUSB-Anschluss verbinden, wird Ihr PC versuchen, einen Treiber zu installieren. Gelingt dies nicht automatisch, laden Sie den Treiber hier herunter.\nDie einfachste Art, das Entwicklungsboard zu programmieren, ist über die Arduino™ IDE. Laden Sie diese über die Webseite www.Arduino.cc herunter. Wenn Sie die Software starten, müssen Sie zunächst den richtigen Port und als Board den Arduino™ Nano (Prozessor ATmega328) auswählen.\nDie Einstellungen der IDE (unten rechts) und des Seriellen Monitors Um das WLAN-Modul zu testen, können Sie den seriellen Monitor öffnen und alsBaudrate 19200 angeben. Wenn Sie noch kein anderes Programm in den Controller geladen haben, sollten nun einige Meldungen im Monitor erscheinen. Außerdem können Sie ein offenes WLAN mit der Bezeichnung NanoESP finden. Um das Modul selbst steuern zu können, verwenden Sie die Software Serial-Library über die Pins 11 und 12 mit einer Baudrate von 19200 oder laden Sie einfach das hier verlinkte Programm herunter und übertragen es mit der Arduino-Software auf das Board:\nDownload: Beispiel Programm\nDer serielle Monitor muss außerdem auf CR und NL eingestellt sein. Folgende AT-Kommandos eignen sich zum ersten Test:\nTest Kommando: AT\nReset: AT+RST\nFirmware Info’s: AT+GMR\n","permalink":"https://iot.fkainka.de/schnellstart-anleitung/","summary":"\u003cp\u003eWenn Sie das erste Mal das Board über den MicroUSB-Anschluss verbinden, wird Ihr PC versuchen, einen Treiber zu installieren. Gelingt dies nicht automatisch, laden Sie \u003ca href=\"/treiber\"\u003eden Treiber hier herunter\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eDie einfachste Art, das Entwicklungsboard zu programmieren, ist über die \u003cstrong\u003eArduino™ IDE\u003c/strong\u003e. Laden Sie diese über die Webseite \u003ca href=\"https://www.arduino.cc/en/Main/Software\"\u003ewww.Arduino.cc\u003c/a\u003e herunter. Wenn Sie die Software starten, müssen Sie zunächst den richtigen Port und als Board den \u003cstrong\u003eArduino™ Nano (Prozessor ATmega328)\u003c/strong\u003e auswählen.\u003c/p\u003e\n\u003cfigure\u003e\u003ca href=\"/images/2015/09/K0-1.jpeg\"\u003e\u003cimg class=\"size-full wp-image-350\" src=\"/images/2015/09/K0-1.jpeg\" alt=\"Die Einstellungen der IDE (unten rechts) und des Seriellen Monitors\" width=\"564\" height=\"603\" /\u003e\u003c/a\u003e\u003cfigcaption\u003eDie Einstellungen der IDE (unten rechts) und des Seriellen Monitors\u003c/figcaption\u003e\u003c/figure\u003e\n\u003cp\u003eUm das WLAN-Modul zu testen, können Sie den seriellen Monitor öffnen und als\u003cstrong\u003eBaudrate 19200\u003c/strong\u003e angeben. Wenn Sie noch kein anderes Programm in den Controller geladen haben, sollten nun einige Meldungen im Monitor erscheinen. Außerdem können Sie ein offenes \u003cstrong\u003eWLAN mit der Bezeichnung NanoESP\u003c/strong\u003e finden. Um das Modul selbst steuern zu können, verwenden Sie die \u003cstrong\u003eSoftware Serial-Library über die Pins 11 und 12\u003c/strong\u003e mit einer \u003cstrong\u003eBaudrate von 19200\u003c/strong\u003e oder laden Sie einfach das hier verlinkte Programm herunter und übertragen es mit der Arduino-Software auf das Board:\u003c/p\u003e","title":"Schnellstart Anleitung - NanoESP \u0026 Pretzelboard"},{"content":"Auf dieser Seite können Sie über die Kommentarfunktion Hilfe ersuchen, Fragen stellen und Vorschläge rund um das Board machen.\n","permalink":"https://iot.fkainka.de/diskusion-und-hilfe/","summary":"\u003cp\u003eAuf dieser Seite können Sie über die Kommentarfunktion Hilfe ersuchen, Fragen stellen und Vorschläge rund um das Board machen.\u003c/p\u003e","title":"Diskusionen und Hilfe -NanoESP \u0026 Pretzelboard"},{"content":"Die folgende kurze Liste enthält die wichtigsten Kommandos für die Nutzung des Boards.\nBefehl Schreibweise Grundlegendes Test Befehl AT Reset AT+RST Firmware Infos AT+GMR Echo An/Aus ATE\u0026lt;1/0\u0026gt; WLAN Befehle WLAN-Modus (1 = Client, 2 = AP, 3 = Dual) AT+CWMODE= WLAN-Netzwerke suchen AT+CWLAP WLAN verbinden AT+CWJAP=““,““ WLAN trennen AT+CWQAP WLAN-AccesPoint Einstellungen AT+CWSAP=““,““[,,] IP-Adresse ausgeben AT+CIFSR DHCP aktivieren/deaktivieren AT+CWDHCP=\u0026lt;1/0\u0026gt; Automatisch mit WLAN verbinden AT+CWAUTOCONN=\u0026lt;1/0\u0026gt; MAC-Adresse der Station ändern AT+CIPSTAMAC= IP-Adresse einstellen (Station) AT+CIPSTA= IP-Adresse einstellen (AccesPoint) AT+CIPAP= Starte SmartConfig AT+CWSTARTSMART= Stoppe SmartConfig AT+CWSTOPSMART Kommunikation Funktion Ping AT+PING= Mehrere Verbindungen zulassen AT+CIPMUX= Datenmodus (0=Transparent, 1=Datenmodus) AT+CIPMODE= Struktur empfangener Daten +IPD,,: Verbindung aufbauen AT+CIPSTART=““,““, Daten senden AT+CIPSEND=, Verbdingung trennen AT+CIPCLOSE= Server Befehle Server starten AT+CIPSERVER=1, Server beenden AT+CIPSERVER=0 Server Status \u0026amp; verbundene Clients AT+CIPSTATUS Server Timeout festlegen AT+CIPSTO= Verbundene Clients anzeigen AT+CWLIF ","permalink":"https://iot.fkainka.de/at-befehlsliste/","summary":"\u003cp\u003eDie folgende kurze Liste enthält die wichtigsten Kommandos für die Nutzung des Boards.\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eBefehl\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eSchreibweise\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eGrundlegendes\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eTest Befehl\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eReset\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+RST\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eFirmware Infos\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+GMR\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eEcho An/Aus\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eATE\u0026lt;1/0\u0026gt;\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eWLAN Befehle\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWLAN-Modus (1 = Client, 2 = AP, 3 = Dual)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWMODE=\u003cmode\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWLAN-Netzwerke suchen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWLAP\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWLAN verbinden\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWJAP=“\u003cssid\u003e“,“\u003cpass\u003e“\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWLAN trennen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWQAP\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eWLAN-AccesPoint Einstellungen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWSAP=“\u003cssid\u003e“,“\u003cpass\u003e“[,\u003cchan\u003e,\u003cenc\u003e]\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eIP-Adresse ausgeben\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIFSR\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eDHCP aktivieren/deaktivieren\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWDHCP=\u0026lt;1/0\u0026gt;\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAutomatisch mit WLAN verbinden\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWAUTOCONN=\u0026lt;1/0\u0026gt;\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMAC-Adresse der Station ändern\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSTAMAC=\u003cMAC\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eIP-Adresse einstellen (Station)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSTA=\u003cIP\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eIP-Adresse einstellen (AccesPoint)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPAP=\u003cIP\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eStarte SmartConfig\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWSTARTSMART=\u003ctyp\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eStoppe SmartConfig\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWSTOPSMART\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eKommunikation\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eFunktion Ping\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+PING=\u003cHOST\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMehrere Verbindungen zulassen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPMUX=\u003cmode\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eDatenmodus (0=Transparent, 1=Datenmodus)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPMODE=\u003cmode\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eStruktur empfangener Daten\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e+IPD,\u003cid\u003e,\u003clen\u003e:\u003cdata\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eVerbindung aufbauen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSTART=“\u003ctype\u003e“,“\u003caddress\u003e“,\u003cport\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eDaten senden\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSEND=\u003cid\u003e,\u003clen\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eVerbdingung trennen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPCLOSE=\u003cid\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eServer Befehle\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eServer starten\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSERVER=1,\u003cport\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eServer beenden\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSERVER=0\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eServer Status \u0026amp; verbundene Clients\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSTATUS\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eServer Timeout festlegen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CIPSTO=\u003ctimeout\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eVerbundene Clients anzeigen\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAT+CWLIF\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e","title":"AT Befehlsliste - NanoESP \u0026 Pretzelboard"},{"content":"Themen RGB-LED – klaus, 16.07.2016 (0 Antworten) SoftwareSerial .find() – philipgreen, 07.05.2016 (0 Antworten) ThingSpeak - mehrere Felder eines Channels updaten? – McElch, 14.01.2016 (0 Antworten) Webserver / AJAX – matten, 08.01.2016 (0 Antworten) Tag 9 - TCP-Uhrzeit – Martin Klein, 06.01.2016 (0 Antworten) Tag 20 Thingspeak andere Website Passen – Ding, 31.12.2015 (0 Antworten) Kann nichts mehr hochladen und das Board reagiert nicht mehr – matten, 30.12.2015 (12 Antworten) Bauteile erkennen – AlfredW, 22.12.2015 (4 Antworten) Tag 20 - Berichtigung – klaus, 21.12.2015 (0 Antworten) Suche App für Android – HF, 17.12.2015 (0 Antworten) http-Statuscode fehlt in den vom Webserver gelieferten html-Seiten – mic, 16.12.2015 (0 Antworten) Tag 14 - Letzte Farbe anzeigen – klaus, 14.12.2015 (4 Antworten) Wie ändere ich die MAC Adresse des Wlan Boards – JOJU, 13.12.2015 (7 Antworten) Kein Sketch-Upload mehr möglich: avrdude: stk500_recv() – schlork, 11.12.2015 (17 Antworten) Tag 10 - Eingabemöglichkeit – klaus, 10.12.2015 (0 Antworten) Tag 10 - LED-Test – klaus, 10.12.2015 (3 Antworten) Zu Aufgabe von Tag 6: UDP Button Erweiterung – Stefanie, 10.12.2015 (4 Antworten) Erstes Thema? – Costa, 09.12.2015 (0 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/adventskalender/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/rgb-led/\"\u003eRGB-LED\u003c/a\u003e – klaus, 16.07.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/softwareserial-find/\"\u003eSoftwareSerial .find()\u003c/a\u003e – philipgreen, 07.05.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/thingspeak-mehrere-felder-eines-channels-updaten/\"\u003eThingSpeak - mehrere Felder eines Channels updaten?\u003c/a\u003e – McElch, 14.01.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/webserver-ajax/\"\u003eWebserver / AJAX\u003c/a\u003e – matten, 08.01.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-9-tcp-uhrzeit/\"\u003eTag 9 - TCP-Uhrzeit\u003c/a\u003e – Martin Klein, 06.01.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-20-thingspeak-andere-website-passen/\"\u003eTag 20 Thingspeak andere Website Passen\u003c/a\u003e – Ding, 31.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kann-nichts-mehr-hochladen-und-das-board-reagiert-nicht-mehr/\"\u003eKann nichts mehr hochladen und das Board reagiert nicht mehr\u003c/a\u003e – matten, 30.12.2015 (12 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bauteile-erkennen/\"\u003eBauteile erkennen\u003c/a\u003e – AlfredW, 22.12.2015 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-20-berichtigung/\"\u003eTag 20 - Berichtigung\u003c/a\u003e – klaus, 21.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/suche-app-fuer-android/\"\u003eSuche App für Android\u003c/a\u003e – HF, 17.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/http-statuscode-fehlt-in-den-vom-webserver-gelieferten-html-seiten/\"\u003ehttp-Statuscode fehlt in den vom Webserver gelieferten html-Seiten\u003c/a\u003e – mic, 16.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-14-letzte-farbe-anzeigen/\"\u003eTag 14 - Letzte Farbe anzeigen\u003c/a\u003e – klaus, 14.12.2015 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wie-aendere-ich-die-mac-adresse-des-wlan-boards/\"\u003eWie ändere ich die MAC Adresse des Wlan Boards\u003c/a\u003e – JOJU, 13.12.2015 (7 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kein-sketch-upload-mehr-moeglich-avrdude-stk500_recv/\"\u003eKein Sketch-Upload mehr möglich: avrdude: stk500_recv()\u003c/a\u003e – schlork, 11.12.2015 (17 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-10-eingabemoeglichkeit/\"\u003eTag 10 - Eingabemöglichkeit\u003c/a\u003e – klaus, 10.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-10-led-test/\"\u003eTag 10 - LED-Test\u003c/a\u003e – klaus, 10.12.2015 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/zu-aufgabe-von-tag-6-udp-button-erweiterung/\"\u003eZu Aufgabe von Tag 6: UDP Button Erweiterung\u003c/a\u003e – Stefanie, 10.12.2015 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/erstes-thema/\"\u003eErstes Thema?\u003c/a\u003e – Costa, 09.12.2015 (0 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Adventskalender"},{"content":"Themen Helligkeit messen und senden an Thinkspeak – bertone, 14.02.2017 (0 Antworten) Pretzelboard schluckt Internet? – AnnaSarah, 31.01.2017 (0 Antworten) All India Results – jitthur, 24.01.2017 (0 Antworten) Internetuhr – saasemer, 11.01.2017 (2 Antworten) Tag 18 NanoESP Climate - Fehlfunktionen ohne Ende? Mal keine Werte, mal Absturz. – Reiny, 11.01.2017 (0 Antworten) Bretzel funktioniert nicht – oe2hem, 07.01.2017 (2 Antworten) InternetVerbindung? – fixrene, 27.12.2016 (7 Antworten) Bauteileliste? – cc13, 26.12.2016 (1 Antwort) Tag 23 Plugin um die Daten vom Broker zu speichern??? – Michel2016, 23.12.2016 (2 Antworten) Kalender Platine def, tot - neue Esp Platine gekauft - WLAN geht nicht – tessiro123, 22.12.2016 (0 Antworten) wie lange hält gekaufte Blynk Energie? – Michel2016, 19.12.2016 (9 Antworten) deprecated conversion bei Verwendung von NanoESP-1.1 – arduinowallah, 18.12.2016 (0 Antworten) 17.Tag \u0026lsquo;Error WLAN Connect\u0026rsquo; – paulaner, 17.12.2016 (2 Antworten) TCP Server – Detlef, 17.12.2016 (2 Antworten) Tag 14 – Larry, 17.12.2016 (5 Antworten) Tag 18 keine werte – GHOST_5482, 14.12.2016 (1 Antwort) Tag 17: \u0026lsquo;setSyncProvider\u0026rsquo; was not declared in this scope – GHOST_5482, 11.12.2016 (5 Antworten) Tag 8 – Burkhard, 11.12.2016 (1 Antwort) Bekomme keine Verbindung mehr zum Pretzel - kein Hochladen möglich – Findus, 08.12.2016 (1 Antwort) Tag 8 Login Timeout – hosi1709, 08.12.2016 (1 Antwort) LED bleibt dunkel – Burkhard, 05.12.2016 (3 Antworten) WiFi Connect – ottoplev, 04.12.2016 (1 Antwort) Werte für Parameter \u0026ldquo;crypt\u0026rdquo; von configWifiAP – arduinowallah, 03.12.2016 (4 Antworten) Access-Point-Modus – ottoplev, 03.12.2016 (0 Antworten) Arduino 1.7.10 Werkeuge leer – Detlef, 03.12.2016 (0 Antworten) Bauteilliste Kalender 2016 – klaus, 02.12.2016 (7 Antworten) NanoESP funktioniert nicht auf Breadboard – DS2072, 02.12.2016 (1 Antwort) Wie beende ich ein laufendes Programm? – El_Barto, 02.12.2016 (4 Antworten) Probleme, die Web-Site aufzurufen – Yogi, 01.12.2016 (2 Antworten) Fehlermeldung [1514] Failed to disable Echo – rudolf32328, 30.11.2016 (1 Antwort) libraries nicht gefunden #include – rudolf32328, 28.11.2016 (1 Antwort) IC ESP8266EX – rudolf32328, 27.11.2016 (1 Antwort) Tag6: – petfield, 26.11.2016 (1 Antwort) Tag 01 - Easter Eggs Website – kia.ora, 23.11.2016 (0 Antworten) Befehlsliste, Beschreibung der Anweisungen – mlampl, 22.11.2016 (0 Antworten) Tag 5 , Fehler: kann ESP8266_SoftSer.h nicht finden ? – mlampl, 19.11.2016 (4 Antworten) Wohinnmit blynk.zip – HF, 16.11.2016 (2 Antworten) Day 4 problem: WLAN-name disappears of the WLAN-list | connection error – TychoNano, 16.11.2016 (2 Antworten) Advent Calender 2015 – Gerrit5, 16.11.2016 (1 Antwort) Fehler beim Hochladen – Hans, 13.11.2016 (1 Antwort) Blynk-App – Kacki, 13.11.2016 (3 Antworten) Tag 16 – Zwerg, 12.11.2016 (0 Antworten) Tag 5 – Ding, 05.11.2016 (10 Antworten) IOT-Kalender 2016: Tag 4 wo ist das Program? – erik99, 23.10.2016 (1 Antwort) Gibt es auch neue Bauteile (im Vergleich zum Vorjahr) ?? – Martin Klein, 10.10.2016 (2 Antworten) Treiber Installation Fehler W10x64 – Ding, 05.10.2016 (0 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/advent-calender-2016/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/helligkeit-messen-und-senden-an-thinkspeak/\"\u003eHelligkeit messen und senden an Thinkspeak\u003c/a\u003e – bertone, 14.02.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/pretzelboard-schluckt-internet/\"\u003ePretzelboard schluckt Internet?\u003c/a\u003e – AnnaSarah, 31.01.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/all-india-results/\"\u003eAll India Results\u003c/a\u003e – jitthur, 24.01.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/internetuhr/\"\u003eInternetuhr\u003c/a\u003e – saasemer, 11.01.2017 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-18-nanoesp-climate-fehlfunktionen-ohne-ende-mal-keine-werte-mal-absturz/\"\u003eTag 18 NanoESP Climate - Fehlfunktionen ohne Ende? Mal keine Werte, mal Absturz.\u003c/a\u003e – Reiny, 11.01.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bretzel-funktioniert-nicht/\"\u003eBretzel funktioniert nicht\u003c/a\u003e – oe2hem, 07.01.2017 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/internetverbindung/\"\u003eInternetVerbindung?\u003c/a\u003e – fixrene, 27.12.2016 (7 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bauteileliste/\"\u003eBauteileliste?\u003c/a\u003e – cc13, 26.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-23-plugin-um-die-daten-vom-broker-zu-speichern/\"\u003eTag 23 Plugin um die Daten vom Broker zu speichern???\u003c/a\u003e – Michel2016, 23.12.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kalender-platine-def-tot-neue-esp-platine-gekauft-wlan-geht-nicht/\"\u003eKalender Platine def, tot - neue Esp Platine gekauft - WLAN geht nicht\u003c/a\u003e – tessiro123, 22.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wie-lange-haelt-gekaufte-blynk-energie/\"\u003ewie lange hält gekaufte Blynk Energie?\u003c/a\u003e – Michel2016, 19.12.2016 (9 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/deprecated-conversion-bei-verwendung-von-nanoesp-1-1/\"\u003edeprecated conversion bei Verwendung von NanoESP-1.1\u003c/a\u003e – arduinowallah, 18.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/17-tag-error-wlan-connect/\"\u003e17.Tag \u0026lsquo;Error WLAN Connect\u0026rsquo;\u003c/a\u003e – paulaner, 17.12.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tcp-server/\"\u003eTCP Server\u003c/a\u003e – Detlef, 17.12.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-14/\"\u003eTag 14\u003c/a\u003e – Larry, 17.12.2016 (5 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-18-keine-werte/\"\u003eTag 18 keine werte\u003c/a\u003e – GHOST_5482, 14.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-17-setsyncprovider-was-not-declared-in-this-scope/\"\u003eTag 17: \u0026lsquo;setSyncProvider\u0026rsquo; was not declared in this scope\u003c/a\u003e – GHOST_5482, 11.12.2016 (5 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-8/\"\u003eTag 8\u003c/a\u003e – Burkhard, 11.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bekomme-keine-verbindung-mehr-zum-pretzel-kein-hochladen-moeglich/\"\u003eBekomme keine Verbindung mehr zum Pretzel - kein Hochladen möglich\u003c/a\u003e – Findus, 08.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-8-login-timeout/\"\u003eTag 8 Login Timeout\u003c/a\u003e – hosi1709, 08.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/led-bleibt-dunkel/\"\u003eLED bleibt dunkel\u003c/a\u003e – Burkhard, 05.12.2016 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wifi-connect/\"\u003eWiFi Connect\u003c/a\u003e – ottoplev, 04.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/werte-fuer-parameter-crypt-von-configwifiap/\"\u003eWerte für Parameter \u0026ldquo;crypt\u0026rdquo; von configWifiAP\u003c/a\u003e – arduinowallah, 03.12.2016 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/access-point-modus/\"\u003eAccess-Point-Modus\u003c/a\u003e – ottoplev, 03.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/arduino-1-7-10-werkeuge-leer/\"\u003eArduino 1.7.10 Werkeuge leer\u003c/a\u003e – Detlef, 03.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bauteilliste-kalender-2016/\"\u003eBauteilliste Kalender 2016\u003c/a\u003e – klaus, 02.12.2016 (7 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nanoesp-funktioniert-nicht-auf-breadboard/\"\u003eNanoESP funktioniert nicht auf Breadboard\u003c/a\u003e – DS2072, 02.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wie-beende-ich-ein-laufendes-programm/\"\u003eWie beende ich ein laufendes Programm?\u003c/a\u003e – El_Barto, 02.12.2016 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/probleme-die-web-site-aufzurufen/\"\u003eProbleme, die Web-Site aufzurufen\u003c/a\u003e – Yogi, 01.12.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/fehlermeldung-1514-failed-to-disable-echo/\"\u003eFehlermeldung [1514] Failed to disable Echo\u003c/a\u003e – rudolf32328, 30.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/libraries-nicht-gefunden-include/\"\u003elibraries nicht gefunden   #include\u003c/a\u003e – rudolf32328, 28.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/ic-esp8266ex/\"\u003eIC ESP8266EX\u003c/a\u003e – rudolf32328, 27.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag6/\"\u003eTag6:\u003c/a\u003e – petfield, 26.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-01-easter-eggs-website/\"\u003eTag 01 - Easter Eggs Website\u003c/a\u003e – kia.ora, 23.11.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/befehlsliste-beschreibung-der-anweisungen/\"\u003eBefehlsliste, Beschreibung der Anweisungen\u003c/a\u003e – mlampl, 22.11.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-5-fehler-kann-esp8266_softser-h-nicht-finden/\"\u003eTag 5 , Fehler: kann ESP8266_SoftSer.h nicht finden ?\u003c/a\u003e – mlampl, 19.11.2016 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wohinnmit-blynk-zip/\"\u003eWohinnmit blynk.zip\u003c/a\u003e – HF, 16.11.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/day-4-problem-wlan-name-disappears-of-the-wlan-list-connection-error/\"\u003eDay 4 problem: WLAN-name disappears of the WLAN-list | connection error\u003c/a\u003e – TychoNano, 16.11.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/advent-calender-2015/\"\u003eAdvent Calender 2015\u003c/a\u003e – Gerrit5, 16.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/fehler-beim-hochladen/\"\u003eFehler beim Hochladen\u003c/a\u003e – Hans, 13.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/blynk-app/\"\u003eBlynk-App\u003c/a\u003e – Kacki, 13.11.2016 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-16/\"\u003eTag 16\u003c/a\u003e – Zwerg, 12.11.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-5/\"\u003eTag 5\u003c/a\u003e – Ding, 05.11.2016 (10 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/iot-kalender-2016-tag-4-wo-ist-das-program/\"\u003eIOT-Kalender 2016: Tag 4 wo ist das Program?\u003c/a\u003e – erik99, 23.10.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/gibt-es-auch-neue-bauteile-im-vergleich-zum-vorjahr/\"\u003eGibt es auch neue Bauteile (im Vergleich zum Vorjahr) ??\u003c/a\u003e – Martin Klein, 10.10.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/treiber-installation-fehler-w10x64/\"\u003eTreiber Installation Fehler W10x64\u003c/a\u003e – Ding, 05.10.2016 (0 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Adventskalender 2016"},{"content":"Themen Tag 6 - Import des Node-RED-Flow\u0026rsquo;s – andiauslpz, 21.12.2019 (0 Antworten) node-red hat Zugriffsproblem – rklass, 04.12.2019 (0 Antworten) WLAN nicht sichtbar - keine Verbindung mit NodeESP möglich – hba, 03.12.2019 (0 Antworten) DUP Funktioniert nicht – juppero, 01.09.2019 (0 Antworten) Ersatzteilliste – Hoerli, 26.03.2019 (0 Antworten) Kalender 2018 - mein Fazit – jue, 31.12.2018 (6 Antworten) NodeESP nicht mehr erreichbar – JanP, 22.12.2018 (1 Antwort) Zielgruppe? – StefanO, 17.12.2018 (2 Antworten) Geschwindigkeitsproblem – therealFrank, 11.12.2018 (0 Antworten) Node-Red und Raspberry Pi – paulaner, 09.12.2018 (0 Antworten) NodeESP Störung nach Tag 6 (Touch to Speech) – m4v3, 09.12.2018 (2 Antworten) NodeESP in Störung – node-esp, 07.12.2018 (2 Antworten) kommunikation mit dem nodeessp Board – hslschulz, 05.12.2018 (0 Antworten) zerschossen? – lintho1st, 05.12.2018 (1 Antwort) Schaltplan NODEESP-Board ? – JogiBaer, 04.12.2018 (1 Antwort) Mein Board funktioniert überhaupt nicht!!!!! – TobiasKarge, 03.12.2018 (1 Antwort) Micro-USB Buchse – larsh, 03.12.2018 (0 Antworten) Konfiguration \u0026ldquo;WiFi Station Settings\u0026rdquo; fehlt – Eddie, 02.12.2018 (2 Antworten) DSL Modem startet ständig neu – StephanH, 02.12.2018 (0 Antworten) OnBoard LED auf NodeESP leuchtet nicht – ulfila, 22.11.2018 (2 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/adventskalender-2018/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag-6-import-des-node-red-flows/\"\u003eTag 6 - Import des Node-RED-Flow\u0026rsquo;s\u003c/a\u003e – andiauslpz, 21.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/node-red-hat-zugriffsproblem/\"\u003enode-red hat Zugriffsproblem\u003c/a\u003e – rklass, 04.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wlan-nicht-sichtbar-keine-verbindung-mit-nodeesp-moeglich/\"\u003eWLAN nicht sichtbar - keine Verbindung mit NodeESP möglich\u003c/a\u003e – hba, 03.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/dup-funktioniert-nicht/\"\u003eDUP Funktioniert nicht\u003c/a\u003e – juppero, 01.09.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/ersatzteilliste/\"\u003eErsatzteilliste\u003c/a\u003e – Hoerli, 26.03.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kalender-2018-mein-fazit/\"\u003eKalender 2018 - mein Fazit\u003c/a\u003e – jue, 31.12.2018 (6 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nodeesp-nicht-mehr-erreichbar/\"\u003eNodeESP nicht mehr erreichbar\u003c/a\u003e – JanP, 22.12.2018 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/zielgruppe/\"\u003eZielgruppe?\u003c/a\u003e – StefanO, 17.12.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/geschwindigkeitsproblem/\"\u003eGeschwindigkeitsproblem\u003c/a\u003e – therealFrank, 11.12.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/node-red-und-raspberry-pi/\"\u003eNode-Red und Raspberry Pi\u003c/a\u003e – paulaner, 09.12.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nodeesp-storung-nach-tag-6-touch-to-speech/\"\u003eNodeESP Störung nach Tag 6 (Touch to Speech)\u003c/a\u003e – m4v3, 09.12.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nodeesp-in-stoerung/\"\u003eNodeESP in Störung\u003c/a\u003e – node-esp, 07.12.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kommunikation-mit-dem-nodeessp-board/\"\u003ekommunikation mit dem nodeessp Board\u003c/a\u003e – hslschulz, 05.12.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/zerschossen/\"\u003ezerschossen?\u003c/a\u003e – lintho1st, 05.12.2018 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/schaltplan-nodeesp-board/\"\u003eSchaltplan NODEESP-Board ?\u003c/a\u003e – JogiBaer, 04.12.2018 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/mein-board-funktioniert-ueberhaupt-nicht/\"\u003eMein Board funktioniert überhaupt nicht!!!!!\u003c/a\u003e – TobiasKarge, 03.12.2018 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/micro-usb-buchse/\"\u003eMicro-USB Buchse\u003c/a\u003e – larsh, 03.12.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/konfiguration-wifi-station-settings-fehlt/\"\u003eKonfiguration \u0026ldquo;WiFi Station Settings\u0026rdquo; fehlt\u003c/a\u003e – Eddie, 02.12.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/dsl-modem-startet-staendig-neu/\"\u003eDSL Modem startet ständig neu\u003c/a\u003e – StephanH, 02.12.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/onboard-led-auf-nodeesp-leuchtet-nicht/\"\u003eOnBoard LED auf NodeESP leuchtet nicht\u003c/a\u003e – ulfila, 22.11.2018 (2 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Adventskalender 2018"},{"content":"Unterforen Hardware Inbetriebnahme Treiber Themen P11_TCPClock.ino \u0026ldquo;hour\u0026rdquo; not declared in this scope – Sabet, 16.01.2020 (3 Antworten) DMX Receiver mit Pretzelboard – formi, 06.11.2019 (0 Antworten) WiFi KRACK Bug – shbert, 04.11.2017 (1 Antwort) openweathermap - Daten lesen und parsen der JSON-Daten – Philipp, 27.10.2017 (1 Antwort) Nano ESP soll eine Datei auf einem Laufwerk ablegen – Daniel, 12.10.2017 (6 Antworten) wie Website aufrufen und Inhalt parsen – owagott, 04.07.2017 (0 Antworten) Day 3 Der NanoESP im AccesPint-Modus – jodebrezel, 04.04.2017 (1 Antwort) NanoESP_MQTT mit Mosquitto Server – chFlorian, 19.03.2017 (0 Antworten) MQTT Library und Thingspeak API – jpb, 08.02.2017 (3 Antworten) Syntaxfehler – Michael, 07.01.2017 (2 Antworten) Email Versand mit Nano ESP – Encom, 30.12.2016 (1 Antwort) Relais für NanoBoard – Michel2016, 29.12.2016 (0 Antworten) Nano ESP Forum in English – Pokes, 11.12.2016 (4 Antworten) Benutzung von ESP8266 Libraries? – Terra, 08.11.2016 (1 Antwort) ESP8266 gebrickt? – UweS, 03.10.2016 (2 Antworten) Kommunikation zwischen zwei Pretzelboard (bidirektional) – TSTELECTRO, 24.08.2016 (1 Antwort) Passwortvergabe – Artur, 25.05.2016 (5 Antworten) Mehrere Boards über Wifi vernetzen – PhilippS, 18.05.2016 (2 Antworten) NanoESP, no response on AT command. – Jitp, 23.03.2016 (1 Antwort) Sd-karte für config – sigmundd, 14.03.2016 (0 Antworten) Pretzelboard Linux-FAQ – generalovernight, 31.01.2016 (0 Antworten) original Firmware – Das_Sams, 31.01.2016 (8 Antworten) HTTPS und IP v6 mit dem ESP 8266 möglich? – rootuser, 09.01.2016 (4 Antworten) Upload zur falschen Zeit - Speicher zerschossen - Abhilfe? – generalovernight, 27.12.2015 (11 Antworten) Probleme beim Hochladen – daniprog, 10.12.2015 (1 Antwort) Tipp für Steckbrett-Neulinge – Raabinator, 10.12.2015 (0 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/nanoesp-board/","summary":"\u003ch2 id=\"unterforen\"\u003eUnterforen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/forum/nanoesp-board/hardware/\"\u003eHardware\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/forum/nanoesp-board/inbetriebnahme/\"\u003eInbetriebnahme\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/forum/nanoesp-board/treiber/\"\u003eTreiber\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/p11_tcpclock-ino-hour-not-declared-in-this-scope/\"\u003eP11_TCPClock.ino \u0026ldquo;hour\u0026rdquo; not declared in this scope\u003c/a\u003e – Sabet, 16.01.2020 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/dmx-receiver-mit-pretzelboard/\"\u003eDMX Receiver mit Pretzelboard\u003c/a\u003e – formi, 06.11.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wifi-krack-bug/\"\u003eWiFi KRACK Bug\u003c/a\u003e – shbert, 04.11.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/openweathermap-daten-lesen-und-parsen-der-json-daten/\"\u003eopenweathermap - Daten lesen und parsen der JSON-Daten\u003c/a\u003e – Philipp, 27.10.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nano-esp-soll-eine-datei-auf-einem-laufwerk-ablegen/\"\u003eNano ESP soll eine Datei auf einem Laufwerk ablegen\u003c/a\u003e – Daniel, 12.10.2017 (6 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wie-website-aufrufen-und-inhalt-parsen/\"\u003ewie Website aufrufen und Inhalt parsen\u003c/a\u003e – owagott, 04.07.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/day-3-der-nanoesp-im-accespint-modus/\"\u003eDay 3 Der NanoESP im AccesPint-Modus\u003c/a\u003e – jodebrezel, 04.04.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nanoesp_mqtt-mit-mosquitto-server/\"\u003eNanoESP_MQTT mit Mosquitto Server\u003c/a\u003e – chFlorian, 19.03.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/mqtt-library-und-thingspeak-api/\"\u003eMQTT Library und Thingspeak API\u003c/a\u003e – jpb, 08.02.2017 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/syntaxfehler/\"\u003eSyntaxfehler\u003c/a\u003e – Michael, 07.01.2017 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/email-versand-mit-nano-esp/\"\u003eEmail Versand mit Nano ESP\u003c/a\u003e – Encom, 30.12.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/relais-fuer-nanoboard/\"\u003eRelais für NanoBoard\u003c/a\u003e – Michel2016, 29.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nano-esp-forum-in-english/\"\u003eNano ESP Forum in English\u003c/a\u003e – Pokes, 11.12.2016 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/benutzung-von-esp8266-libraries/\"\u003eBenutzung von ESP8266 Libraries?\u003c/a\u003e – Terra, 08.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/esp8266-gebrickt/\"\u003eESP8266 gebrickt?\u003c/a\u003e – UweS, 03.10.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kommunikation-zwischen-zwei-pretzelboard-bidirektional/\"\u003eKommunikation zwischen zwei Pretzelboard (bidirektional)\u003c/a\u003e – TSTELECTRO, 24.08.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/passwortvergabe/\"\u003ePasswortvergabe\u003c/a\u003e – Artur, 25.05.2016 (5 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/mehrere-boards-ueber-wifi-vernetzen/\"\u003eMehrere Boards über Wifi vernetzen\u003c/a\u003e – PhilippS, 18.05.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nanoesp-no-response-on-at-command/\"\u003eNanoESP, no response on AT command.\u003c/a\u003e – Jitp, 23.03.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/sd-karte-fuer-config/\"\u003eSd-karte für config\u003c/a\u003e – sigmundd, 14.03.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/pretzelboard-linux-faq/\"\u003ePretzelboard Linux-FAQ\u003c/a\u003e – generalovernight, 31.01.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/original-firmware/\"\u003eoriginal Firmware\u003c/a\u003e – Das_Sams, 31.01.2016 (8 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/https-und-ip-v6-mit-dem-esp-8266-moeglich/\"\u003eHTTPS und IP v6 mit dem ESP 8266 möglich?\u003c/a\u003e – rootuser, 09.01.2016 (4 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/upload-zur-falschen-zeit-speicher-zerschossen-abhilfe/\"\u003eUpload zur falschen Zeit - Speicher zerschossen - Abhilfe?\u003c/a\u003e – generalovernight, 27.12.2015 (11 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/probleme-beim-hochladen/\"\u003eProbleme beim Hochladen\u003c/a\u003e – daniprog, 10.12.2015 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tipp-fuer-steckbrett-neulinge/\"\u003eTipp für Steckbrett-Neulinge\u003c/a\u003e – Raabinator, 10.12.2015 (0 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Das NanoESP \u0026 Pretzel Board Forum"},{"content":"Themen NodeESP Verbindung aufbauen – Manu, 30.12.2019 (0 Antworten) MacOS 10.15 Catalina und NanoESP – mark49, 22.12.2019 (0 Antworten) Arduino IDE – pirate, 05.12.2018 (1 Antwort) ","permalink":"https://iot.fkainka.de/forum/forum/das-nodeesp-forum/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nodeesp-verbindung-aufbauen/\"\u003eNodeESP Verbindung aufbauen\u003c/a\u003e – Manu, 30.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/macos-10-15-catalina-und-nanoesp/\"\u003eMacOS 10.15 Catalina und NanoESP\u003c/a\u003e – mark49, 22.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/arduino-ide/\"\u003eArduino IDE\u003c/a\u003e – pirate, 05.12.2018 (1 Antwort)\u003c/li\u003e\n\u003c/ul\u003e","title":"Das NodeESP Forum"},{"content":"Themen LCD-Diplay – jodebrezel, 31.08.2017 (0 Antworten) LCD-Diplay – jodebrezel, 31.08.2017 (0 Antworten) LCD-Display – IoT, 25.01.2017 (1 Antwort) WLAN-Modul ausschalten zum Stromsparen – Leon, 17.12.2016 (6 Antworten) SPI auf dem nanoESP – jubjub, 12.06.2016 (1 Antwort) Stromversorgung – andib, 31.12.2015 (3 Antworten) Stromverbrauch – generalovernight, 30.12.2015 (9 Antworten) ESP defekt? – Jan, 15.12.2015 (6 Antworten) Pretzelboard / NanoESP wird warm – fk, 11.12.2015 (3 Antworten) Hardware Informationen – fk, 11.12.2015 (11 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/nanoesp-board/hardware/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/lcd-diplay-2/\"\u003eLCD-Diplay\u003c/a\u003e – jodebrezel, 31.08.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/lcd-diplay/\"\u003eLCD-Diplay\u003c/a\u003e – jodebrezel, 31.08.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/lcd-display/\"\u003eLCD-Display\u003c/a\u003e – IoT, 25.01.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wlan-modul-ausschalten-zum-stromsparen/\"\u003eWLAN-Modul ausschalten zum Stromsparen\u003c/a\u003e – Leon, 17.12.2016 (6 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/spi-auf-dem-nanoesp/\"\u003eSPI auf dem nanoESP\u003c/a\u003e – jubjub, 12.06.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/stromversorgung/\"\u003eStromversorgung\u003c/a\u003e – andib, 31.12.2015 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/stromverbrauch/\"\u003eStromverbrauch\u003c/a\u003e – generalovernight, 30.12.2015 (9 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/esp-defekt/\"\u003eESP defekt?\u003c/a\u003e – Jan, 15.12.2015 (6 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/pretzelboard-nanoesp-wird-warm/\"\u003ePretzelboard / NanoESP wird warm\u003c/a\u003e – fk, 11.12.2015 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/hardware-informationen/\"\u003eHardware Informationen\u003c/a\u003e – fk, 11.12.2015 (11 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Hardware"},{"content":"Diese Seite (iot.fkainka.de) wird von Fabian Kainka als Privatperson\nbetrieben und gehört zur Webseite fkainka.de.\nEs gelten das Impressum und die\nDatenschutzerklärung\nder Hauptseite (beide nennen die Subdomains ausdrücklich).\n","permalink":"https://iot.fkainka.de/impressum/","summary":"\u003cp\u003eDiese Seite (iot.fkainka.de) wird von Fabian Kainka als Privatperson\u003cbr\u003e\nbetrieben und gehört zur Webseite \u003ca href=\"https://fkainka.de/\"\u003efkainka.de\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eEs gelten das \u003cstrong\u003e\u003ca href=\"https://fkainka.de/impressum/\"\u003eImpressum\u003c/a\u003e\u003c/strong\u003e und die\u003cbr\u003e\n\u003cstrong\u003e\u003ca href=\"https://fkainka.de/datenschutzerklaerung/\"\u003eDatenschutzerklärung\u003c/a\u003e\u003c/strong\u003e\u003cbr\u003e\nder Hauptseite (beide nennen die Subdomains ausdrücklich).\u003c/p\u003e\n\u003c!-- Die IoT-WordPress-Seite hatte kein eigenes Impressum; die\n     Datenschutzerklärung im Export war nur ein unveröffentlichter\n     Entwurf (content/datenschutzerklaerung.md, draft: true). --\u003e","title":"Impressum"},{"content":"Themen Board nimmt keine AT-Befehle über den Serial Monitor mehr an – Parallaxe, 05.01.2020 (1 Antwort) Firmware Update misslungen – Berner, 26.12.2019 (0 Antworten) NanoESP nimmt keine Befehle an – Herbie, 01.01.2019 (1 Antwort) Keine Verbindung zu nano Board – Frank_FFB, 25.12.2018 (2 Antworten) Auslagern der Webseite in den ESP8266 des NanoESP – HRoth, 31.05.2017 (0 Antworten) Kommunikation zwischen zwei Pretzelboard (bidirektional) – TSTELECTRO, 13.04.2017 (0 Antworten) WPA2-Verschlüsselung – IoT, 14.01.2017 (10 Antworten) Hotspot Passwortgeschützt – Be, 01.12.2016 (0 Antworten) avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0 – OT, 28.11.2016 (1 Antwort) UDP – petfield, 13.11.2016 (0 Antworten) AT+CWJAP – petfield, 12.11.2016 (2 Antworten) WiFi-Board \u0026amp; macOS Sierra – seasidetesting, 10.10.2016 (7 Antworten) Wo ist Po1_softwareserial? – TenA, 02.10.2016 (2 Antworten) installation ubuntu 14.04 – ardy, 04.02.2016 (0 Antworten) COM-Port herausfinden (Windows) – Raabinator, 10.12.2015 (1 Antwort) ","permalink":"https://iot.fkainka.de/forum/forum/nanoesp-board/inbetriebnahme/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/board-nimmt-keine-at-befehle-ueber-den-serial-monitor-mehr-an/\"\u003eBoard nimmt keine AT-Befehle über den Serial Monitor mehr an\u003c/a\u003e – Parallaxe, 05.01.2020 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/firmware-update-misslungen/\"\u003eFirmware Update misslungen\u003c/a\u003e – Berner, 26.12.2019 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nanoesp-nimmt-keine-befehle-an/\"\u003eNanoESP nimmt keine Befehle an\u003c/a\u003e – Herbie, 01.01.2019 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/keine-verbindung-zu-nano-board/\"\u003eKeine Verbindung zu nano Board\u003c/a\u003e – Frank_FFB, 25.12.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/auslagern-der-webseite-in-den-esp8266-des-nanoesp/\"\u003eAuslagern der Webseite in den ESP8266 des NanoESP\u003c/a\u003e – HRoth, 31.05.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/kommunikation-zwischen-zwei-pretzelboard-bidirektional-2/\"\u003eKommunikation zwischen zwei Pretzelboard (bidirektional)\u003c/a\u003e – TSTELECTRO, 13.04.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wpa2-verschluesselung/\"\u003eWPA2-Verschlüsselung\u003c/a\u003e – IoT, 14.01.2017 (10 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/hotspot-passwortgeschuetzt/\"\u003eHotspot Passwortgeschützt\u003c/a\u003e – Be, 01.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/avrdude-stk500_getsync-attempt-10-of-10-not-in-sync-resp0xe0/\"\u003eavrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0\u003c/a\u003e – OT, 28.11.2016 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/udp/\"\u003eUDP\u003c/a\u003e – petfield, 13.11.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/atcwjap/\"\u003eAT+CWJAP\u003c/a\u003e – petfield, 12.11.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wifi-board-macos-sierra/\"\u003eWiFi-Board \u0026amp; macOS Sierra\u003c/a\u003e – seasidetesting, 10.10.2016 (7 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wo-ist-po1_softwareserial/\"\u003eWo ist Po1_softwareserial?\u003c/a\u003e – TenA, 02.10.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/installation-ubuntu-14-04/\"\u003einstallation ubuntu 14.04\u003c/a\u003e – ardy, 04.02.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/com-port-herausfinden-windows/\"\u003eCOM-Port herausfinden (Windows)\u003c/a\u003e – Raabinator, 10.12.2015 (1 Antwort)\u003c/li\u003e\n\u003c/ul\u003e","title":"Inbetriebnahme"},{"content":"Themen NanoESP und DHT 22 und Blynk – saasemer, 13.01.2018 (2 Antworten) Adventskalender 2017 – Jonathan, 15.11.2017 (22 Antworten) Startschwierigkeiten - HTTP-Client – christian06, 14.01.2017 (3 Antworten) Bin zur Zeit absolut unzufrieden - Kritik – saasemer, 14.01.2017 (1 Antwort) Sourcen – flenst, 10.01.2017 (1 Antwort) Arduino Webseite – klaus, 07.01.2017 (1 Antwort) User edit in Wordpress mit Fehler – arduinowallah, 18.12.2016 (0 Antworten) OT: Jetzt bei Conrad – generalovernight, 19.12.2015 (2 Antworten) TextConverter – klaus, 14.12.2015 (2 Antworten) Problem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln – Jonathan, 10.12.2015 (32 Antworten) Problem beim Login – Raabinator, 10.12.2015 (2 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/sonstiges/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nanoesp-und-dht-22-und-blynk/\"\u003eNanoESP und DHT 22 und Blynk\u003c/a\u003e – saasemer, 13.01.2018 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/adventskalender-2017/\"\u003eAdventskalender 2017\u003c/a\u003e – Jonathan, 15.11.2017 (22 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/startschwierigkeiten-http-client/\"\u003eStartschwierigkeiten - HTTP-Client\u003c/a\u003e – christian06, 14.01.2017 (3 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/bin-zur-zeit-absolut-unzufrieden-kritik/\"\u003eBin zur Zeit absolut unzufrieden - Kritik\u003c/a\u003e – saasemer, 14.01.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/sourcen/\"\u003eSourcen\u003c/a\u003e – flenst, 10.01.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/arduino-webseite/\"\u003eArduino Webseite\u003c/a\u003e – klaus, 07.01.2017 (1 Antwort)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/user-edit-in-wordpress-mit-fehler/\"\u003eUser edit in Wordpress mit Fehler\u003c/a\u003e – arduinowallah, 18.12.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/ot-jetzt-bei-conrad/\"\u003eOT: Jetzt bei Conrad\u003c/a\u003e – generalovernight, 19.12.2015 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/textconverter/\"\u003eTextConverter\u003c/a\u003e – klaus, 14.12.2015 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/problem-projekte-mit-arduino-uno-r3-und-esp8266-esp-01-nachbasteln/\"\u003eProblem: Projekte mit Arduino Uno R3 und ESP8266 ESP-01 nachbasteln\u003c/a\u003e – Jonathan, 10.12.2015 (32 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/problem-beim-login/\"\u003eProblem beim Login\u003c/a\u003e – Raabinator, 10.12.2015 (2 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Sonstiges"},{"content":"Themen keine virtuelle Schnittstelle, nur COM1 vorhanden – ben, 16.03.2020 (0 Antworten) Treiber compilieren – AlfredW, 08.12.2015 (4 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/nanoesp-board/treiber/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/keine-virtuelle-schnittstelle-nur-com1-vorhanden/\"\u003ekeine virtuelle Schnittstelle, nur COM1 vorhanden\u003c/a\u003e – ben, 16.03.2020 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/treiber-compilieren/\"\u003eTreiber compilieren\u003c/a\u003e – AlfredW, 08.12.2015 (4 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"Treiber"},{"content":"Themen Nutzung als Modem – raik, 29.01.2018 (0 Antworten) Wake on Lan mit dem NanoESP – ionas_elate, 28.02.2017 (0 Antworten) Modellfernsteuerung mit Smartphone und NanoESP als Empfänger – Makerprojekte, 03.07.2016 (0 Antworten) IOT am Haus mit Thingspeak / Pretzelboard – Futur377, 23.02.2016 (0 Antworten) IR Receive, Send + Webservice Call – Terra, 15.01.2016 (2 Antworten) Switch_RGB – erik, 13.12.2015 (0 Antworten) Tag11 automatisch – klaus, 11.12.2015 (5 Antworten) Anfängerfragen, zB: Wassermelder über digitalen Eingang – McElch, 09.12.2015 (11 Antworten) Rainer\u0026rsquo;s Uhr – Rainer, 09.12.2015 (13 Antworten) ","permalink":"https://iot.fkainka.de/forum/forum/user-projekte/","summary":"\u003ch2 id=\"themen\"\u003eThemen\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/nutzung-als-modem/\"\u003eNutzung als Modem\u003c/a\u003e – raik, 29.01.2018 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/wake-on-lan-mit-dem-nanoesp/\"\u003eWake on Lan mit dem NanoESP\u003c/a\u003e – ionas_elate, 28.02.2017 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/modellfernsteuerung-mit-smartphone-und-nanoesp-als-empfaenger/\"\u003eModellfernsteuerung mit Smartphone und NanoESP als Empfänger\u003c/a\u003e – Makerprojekte, 03.07.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/iot-am-haus-mit-thingspeak-pretzelboard/\"\u003eIOT am Haus mit Thingspeak / Pretzelboard\u003c/a\u003e – Futur377, 23.02.2016 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/ir-receive-send-webservice-call/\"\u003eIR Receive, Send + Webservice Call\u003c/a\u003e – Terra, 15.01.2016 (2 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/switch_rgb/\"\u003eSwitch_RGB\u003c/a\u003e – erik, 13.12.2015 (0 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/tag11-automatisch/\"\u003eTag11 automatisch\u003c/a\u003e – klaus, 11.12.2015 (5 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/anfaengerfragen-zb-wassermelder-ueber-digitalen-eingang/\"\u003eAnfängerfragen, zB: Wassermelder über digitalen Eingang\u003c/a\u003e – McElch, 09.12.2015 (11 Antworten)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/forum/topic/rainers-uhr/\"\u003eRainer\u0026rsquo;s Uhr\u003c/a\u003e – Rainer, 09.12.2015 (13 Antworten)\u003c/li\u003e\n\u003c/ul\u003e","title":"User Projekte"}]