1 00:00:00,000 --> 00:00:12,379 *EH2018 Vorspannmusik* 2 00:00:12,379 --> 00:00:14,759 Jochen Krapf: Okay, hallo zusammen! 3 00:00:14,759 --> 00:00:18,230 Ich bin der Jochen. Ich will heute was erzählen, wie es der Titel schon sagt, 4 00:00:18,230 --> 00:00:21,650 über „Easy Do-It-Yourself Internet-of-Things“, 5 00:00:21,650 --> 00:00:27,470 Sachen mit dem ESP und mal einen kurzen Überblick noch in der Version mit dem 6 00:00:27,470 --> 00:00:31,789 [Raspberry] Pi. So, was wollen wir heute machen? 7 00:00:31,789 --> 00:00:35,800 Also eigentlich ein theoretischer Workshop, wenn man so will. Ich will hier 8 00:00:35,800 --> 00:00:41,150 ein IoT-Gerät bauen, hier als Vortrag, mit dem ich ein paar Sachen 9 00:00:41,150 --> 00:00:48,990 messen will. Als Raumtemperatur, relative Feuchte, und auch ein Bewegungssensor. 10 00:00:48,990 --> 00:00:52,090 Ich will auch die Helligkeit noch ein bisschen schätzen, nicht messen. 11 00:00:52,090 --> 00:00:55,690 Es ist keine genaue Messung, sondern nur, ob es hell oder dunkel im Raum ist. 12 00:00:55,690 --> 00:01:02,531 Noch Tür- oder Fensterkontakte. Und das Ganze soll dann mit MQTT ‒ das ist 13 00:01:02,531 --> 00:01:06,570 ein standardisiertes Protokoll, was bei vielen IoT-Geräten verwendet wird 14 00:01:06,570 --> 00:01:11,070 mittlerweile ‒ soll an irgendeinen Server geschickt werden. Das Ganze 15 00:01:11,070 --> 00:01:17,000 als kleines, einfaches Teil. Und vielleicht noch einen Ausblick, 16 00:01:17,000 --> 00:01:22,080 was man sonst noch so alles mit dem IoT-Gerät machen könnte. 17 00:01:22,080 --> 00:01:27,310 Man kann natürlich auch die Funksteckdosen steuern. Man kann 18 00:01:27,310 --> 00:01:32,890 die Infrarot-Fernbedienung ersetzen durch ein IoT-Gerät, und damit einen Fernseher 19 00:01:32,890 --> 00:01:38,670 quasi fernsteuern. Man kann irgendwelche Taster abfragen, um dann z.B. Lichtschalter 20 00:01:38,670 --> 00:01:46,820 durch ein IoT-Gerät zu ersetzen. Man kann LED-Strips steuern, sowohl die RGB-Strips 21 00:01:46,820 --> 00:01:53,810 als auch WS2812, das sind die einzelsteuerbaren RGB-Sachen, oder 22 00:01:53,810 --> 00:01:59,449 auch Relais, um eine Lampe ein- und auszuschalten. Statusanzeigen über LCD 23 00:01:59,449 --> 00:02:06,480 sind natürlich auch möglich. Und auch weitere Sensoren, wie z.B. Feinstaub, 24 00:02:06,480 --> 00:02:11,380 Stickoxide, organische Gase und so was kann man natürlich auch anschließen. 25 00:02:11,380 --> 00:02:17,490 Da soll mal das grobe Ziel sein, was wir machen wollen. Und bei der Umsetzung 26 00:02:17,490 --> 00:02:20,480 habe ich natürlich auch ein paar Anforderungen. Soll natürlich Open Source 27 00:02:20,480 --> 00:02:27,699 sein. Ist ja hier klar, eigentlich. Möglichst wenig Programmierkenntnisse 28 00:02:27,699 --> 00:02:32,799 und auch wenig Löterfahrung, damit man das einfach und schnell machen kann. 29 00:02:32,799 --> 00:02:37,319 Ich weiß, dass hier auch viele Leute sind, die sehr gute Programmierer sind, 30 00:02:37,319 --> 00:02:40,549 aber hier geht’s eher darum, dass so die breite Masse auch mal schnell 31 00:02:40,549 --> 00:02:46,199 ein IoT-Gerät bauen kann, ohne viel Aufwand. Ich will natürlich 32 00:02:46,199 --> 00:02:51,319 Standardmodule verwenden, die natürlich auch nichts kosten dürfen. 33 00:02:51,319 --> 00:02:57,299 Mit ‘Standardmodule’ meine ich Sachen, die ich überall bei Ebay und sonstigen 34 00:02:57,299 --> 00:03:02,809 Portalen bekomme, für wenig Geld, die oft auch als Arduino-Zusatzmodule 35 00:03:02,809 --> 00:03:07,299 ausgewiesen werden. 36 00:03:07,299 --> 00:03:10,279 Was nimmt man dafür? Man braucht irgendeinen Prozessor. 37 00:03:10,279 --> 00:03:16,979 Das, was am häufigsten verwendet wird, mittlerweile, ist der sogenannte ESP8266. 38 00:03:16,979 --> 00:03:24,219 „-12“ ist dann noch die spezielle Bauform. Und sieht dann entsprechend so aus. 39 00:03:24,219 --> 00:03:30,150 Das ist ein 32 bit-Prozessor mit genügend Megahertz, 40 00:03:30,150 --> 00:03:34,509 um auch ein bisschen Webserver und sowas zu machen. 41 00:03:34,509 --> 00:03:41,310 Hat 4 MB Flash für [das] Programm und auch eine Flash-Disk, 42 00:03:41,310 --> 00:03:46,339 um auch Dateien abzulegen. Mit 20kB RAM kommt man nicht so weit, 43 00:03:46,339 --> 00:03:50,719 aber es reicht, auch für Webserver- Anwendungen. Auf jeden Fall 44 00:03:50,719 --> 00:03:55,069 wesentlich mehr als man beim Arduino, zum Beispiel, hätte. 45 00:03:55,069 --> 00:04:02,799 Der große Vorteil: er hat ein Wi-Fi mit eingebaut. Man sieht ja die Antenne. 46 00:04:02,799 --> 00:04:10,669 Also die interne Antenne, um dann mit 2,4GHz dann gegen den lokalen Access Point 47 00:04:10,669 --> 00:04:17,870 dann Daten zu werfen. Der große Vorteil ist, dass das Ganze über die Arduino-IDE 48 00:04:17,870 --> 00:04:25,300 programmierfähig ist. Und mehr als 90% der Libraries von Arduino auch 49 00:04:25,300 --> 00:04:29,340 mit diesem Prozessor verwendet werden können. Man kann natürlich auch andere 50 00:04:29,340 --> 00:04:36,550 Sachen, wie atom-Umgebung mit platform.io zur Programmierung verwenden. 51 00:04:36,550 --> 00:04:43,970 [Da] gehe ich jetzt nicht näher [darauf] ein, nur… wer damit etwas machen will. 52 00:04:43,970 --> 00:04:51,270 Das Modul hat 2mm Raster, ist damit für Hobbyisten natürlich nicht so gut geeignet. 53 00:04:51,270 --> 00:04:57,500 Mit Anlöten, oder Breadboard-Anwendung. Deshalb gibt es ein paar andere Sachen, 54 00:04:57,500 --> 00:05:01,990 es gibt Hersteller, die dann genau dieses Modul auf Platinen setzen, die dann wieder 55 00:05:01,990 --> 00:05:13,261 mit 2,54mm-Raster arbeiten ‒ dann also Breadboard-fähig ‒ und dann auch schon 56 00:05:13,261 --> 00:05:18,789 USB-Seriell-Wandler mit auf der Platine haben. Um dann gleich an den Rechner 57 00:05:18,789 --> 00:05:25,330 anstecken zu können. Und auch einen Spannungswandler, um dann mit 5V 58 00:05:25,330 --> 00:05:32,220 zu arbeiten. Der Chip selber braucht 3,3V. Auf der linken Seite ist die sogenannte 59 00:05:32,220 --> 00:05:36,800 Node-MCU. Die man nicht nur mit LUA verwenden kann, sondern auch 60 00:05:36,800 --> 00:05:42,729 neu flashen, und dann eben seinen C-Code darauf ausführen kann. 61 00:05:42,729 --> 00:05:48,270 Rechts sieht man das im Prinzip elektronisch Gleiche, nur auf einer 62 00:05:48,270 --> 00:05:53,510 anderen Platine. Das ist der WeMos D1, davon gibt es auch eine Pro-Variante 63 00:05:53,510 --> 00:05:59,680 mit steckbarer Antenne. Hat das gleiche drauf, und den USB-Seriell-Wandler 64 00:05:59,680 --> 00:06:04,490 auf der Unterseite. Deshalb ist die Platine kleiner und kompakter. 65 00:06:04,490 --> 00:06:11,220 Die werde ich jetzt hier für meine Vorführung auch verwenden. 66 00:06:11,220 --> 00:06:16,840 Man hat an dem Prozessor 9 I/O-Pins, 67 00:06:16,840 --> 00:06:19,999 die man frei verwenden kann. 68 00:06:19,999 --> 00:06:23,580 Und damit kann man dann die meisten Sachen auch abdecken. Man hat auch 69 00:06:23,580 --> 00:06:31,739 I2C-Bus, man hat SPI, man hat einen AD-Wandler-Kanal. Fast alle Pins 70 00:06:31,739 --> 00:06:41,090 sind als GPIO verwendbar, um dann alles mögliche zu schalten 71 00:06:41,090 --> 00:06:45,990 und eben einzulesen. 72 00:06:45,990 --> 00:06:50,199 Zu den Sensoren: ich habe ja gesagt, Hauptaufgabe ist Temperatur- 73 00:06:50,199 --> 00:06:57,610 und Feuchtemessung. Dafür gibt es den DHT22, als einen von vielen Sensoren, 74 00:06:57,610 --> 00:07:03,790 nur als Beispiel. Es gibt Infrarot- Bewegungsmelder ‒ kann ich gleich 75 00:07:03,790 --> 00:07:09,370 noch mal live vorführen. Und es gibt auch Standard-LDR’s, die man hier 76 00:07:09,370 --> 00:07:15,300 verwenden kann, um eine Helligkeit abzuschätzen. 77 00:07:15,300 --> 00:07:20,960 Jetzt brauche ich die Kamera! 78 00:07:20,960 --> 00:07:30,780 Nö, ich muss mal kurz… 79 00:07:30,780 --> 00:07:34,950 Halt! Nein… So. 80 00:07:34,950 --> 00:07:39,740 Jetzt! Das ist nochmal der ESP. Hier ist die Rückseite 81 00:07:39,740 --> 00:07:44,370 mit dem USB-Seriell-Wandler. Hier ist die Vorderseite 82 00:07:44,370 --> 00:07:52,739 mit dem ESP, und eben der Antenne auf der Vorderseite für WLAN. 83 00:07:52,739 --> 00:08:03,680 Sensoren ‒ habe ich einmal hier den DHT22, 84 00:08:03,680 --> 00:08:08,800 der hier einfach mit drei Pins am ESP angeschlossen wird, da kommen wir 85 00:08:08,800 --> 00:08:18,969 gleich noch dazu. Ich habe noch den Infrarot-Melder, der sieht dann so aus. 86 00:08:18,969 --> 00:08:23,719 Noch Schärfe… 87 00:08:23,719 --> 00:08:30,780 Und auf der Rückseite ist eben die Elektronik, mit drei Anschlüssen,… 88 00:08:30,780 --> 00:08:38,129 Sieht man’s gut? 89 00:08:38,129 --> 00:08:40,489 So, jetzt. 90 00:08:40,489 --> 00:08:45,050 …der einfach nur ein Signal ausgibt, wenn sich jemand im Raum bewegt hat. 91 00:08:45,050 --> 00:08:51,350 Ansonsten braucht er einfach 5 Volt, und das war’s dann. Zu den Kosten: 92 00:08:51,350 --> 00:08:55,300 der Bewegungsmelder kostet vielleicht 3..4 Euro, wenn man es 93 00:08:55,300 --> 00:09:01,930 in Deutschland kauft. Der Temperatursensor auch 3..4..5 Euro. Es gibt natürlich 94 00:09:01,930 --> 00:09:06,850 noch weitere Module. Es gibt noch jede Menge solche Module ‒ jetzt nur 95 00:09:06,850 --> 00:09:13,070 als Beispiel ‒ die einfach schon 96 00:09:13,070 --> 00:09:17,230 freundlicherweise auf ein Board gelötet sind, und 97 00:09:17,230 --> 00:09:23,660 einfach mit ein paar Steckkontakten an den Prozessor entweder angelötet bzw. 98 00:09:23,660 --> 00:09:27,529 mit Steckkabeln angeschlossen werden kann. 99 00:09:27,529 --> 00:09:35,440 Dann wollten wir ja noch die Helligkeit detektieren. Da gibt es 100 00:09:35,440 --> 00:09:38,570 einen sogenannten LDR ‒ einen lichtempfindlichen Widerstand. 101 00:09:38,570 --> 00:09:44,470 Kostet vielleicht einen Euro, oder weniger, wenn man einen Zehnerpack nimmt. 102 00:09:44,470 --> 00:09:53,540 Dann eventuell noch eine Leuchtdiode als Statusanzeige. 103 00:09:53,540 --> 00:09:58,160 Zu der Verkabelung: ist auch relativ einfach. 104 00:09:58,160 --> 00:10:02,380 Für den Temperatursensor brauche ich hier nur noch einen Widerstand 105 00:10:02,380 --> 00:10:11,250 als sogenannten Pullup, um die Datenleitungen gegen die 3,3 V zu ziehen. 106 00:10:11,250 --> 00:10:14,370 Das heißt, ich brauche einfach nur drei Kabel am Prozessor anlöten, 107 00:10:14,370 --> 00:10:18,660 und habe das Ding schon konnektiert. 108 00:10:18,660 --> 00:10:24,040 Eins daneben, in der Mitte, ist der Bewegungsmelder. Der braucht 5 Volt, 109 00:10:24,040 --> 00:10:30,559 gibt ein 3,3 Volt TTL-Signal raus. Und den kann ich auch einfach am Prozessor, 110 00:10:30,559 --> 00:10:35,490 an einem fast beliebigen Pin anschließen. 111 00:10:35,490 --> 00:10:41,310 Wenn ich die Helligkeit messen will, kann ich den LDR oben rechts einfach so 112 00:10:41,310 --> 00:10:45,550 anschließen, weil, es sind schon Widerstände als Spannungsteiler 113 00:10:45,550 --> 00:10:52,489 aufgelötet. Und damit brauche ich keine weiteren, externen Komponenten. 114 00:10:52,489 --> 00:10:56,680 Wenn ich einen Türschalter habe will, brauche ich natürlich noch einen Pullup, 115 00:10:56,680 --> 00:11:02,240 unten rechts, der mir das Ganze auf 3 Volt zieht. Und der Schalter, ich sage mal, 116 00:11:02,240 --> 00:11:06,490 einen Reed-Schalter, z.B., um einen Fensterkontakt abzufragen, der 117 00:11:06,490 --> 00:11:13,730 gegen Masse schaltet. Optional noch eine LED, die am Fenster anzeigt, ob es 118 00:11:13,730 --> 00:11:20,050 geöffnet ist. Und auch die LED ‒ einfach mit einem Vorwiderstand anschließen. 119 00:11:20,050 --> 00:11:25,339 Wenn ich weitere Sachen anschließen will, nur so mal als Überblick, 120 00:11:25,339 --> 00:11:32,339 alles was einen I2C-Bus hat, einfach mit den zwei Leitungen ‒ also ‘Daten’ 121 00:11:32,339 --> 00:11:39,000 und ‘Clock’ ‒ am Prozessor anschließen, und das war’s. Ich brauche nichts weiteres. 122 00:11:39,000 --> 00:11:43,420 Auch jetzt so ‘Neopixel’ ‒ einfach mit einem Pin anschließen, natürlich 123 00:11:43,420 --> 00:11:48,300 die 5 Volt aus einem starken Netzteil noch beziehen, und dann kann ich 124 00:11:48,300 --> 00:11:53,990 das Ganze betreiben. Auch einen LED-Strip kann ich einfach mit einem Schalttransistor 125 00:11:53,990 --> 00:11:59,399 dann mit PWM auch die Helligkeit steuern. Und man sieht, dass sich die ganze Hardware 126 00:11:59,399 --> 00:12:04,579 eigentlich sehr in Grenzen hält. Und damit auch für Hobbyisten: einfach nur Kabel 127 00:12:04,579 --> 00:12:12,049 an Sensor und Prozessor anschließen, und schon sollte alles funktionieren. 128 00:12:12,049 --> 00:12:16,980 Dann brauche ich natürlich noch ein Netzteil. Da kann man natürlich solche 129 00:12:16,980 --> 00:12:22,829 schönen China-Handyladenetzteile nehmen. Wenn man den USB-Stecker 130 00:12:22,829 --> 00:12:28,059 nicht kaufen will, kann man, wie hier zu sehen, auch einfach aus einem Stück 131 00:12:28,059 --> 00:12:36,840 Lochrasterplatine sich selber schnell einen Stecker bauen, funktioniert wunderbar. 132 00:12:36,840 --> 00:12:42,939 Gehäuse. Da ist man natürlich komplett frei, was man machen will. 133 00:12:42,939 --> 00:12:48,920 Man kann irgendwas nehmen, was eh da ist, eine Haushaltsbox, so eine Verteilerdose, 134 00:12:48,920 --> 00:12:54,960 vielleicht eine Zigarrenkiste oder sonstwas. Wenn man im Hackerspace 135 00:12:54,960 --> 00:12:57,680 oder Fablab einen 3D-Drucker hat, kann man sich natürlich da auch 136 00:12:57,680 --> 00:13:02,130 was beliebiges drucken. Ich nehme natürlich sehr gern den Laser-Cutter, 137 00:13:02,130 --> 00:13:10,530 um damit Gehäuse zu bauen. Und das kann ich dann auch vorführen. 138 00:13:10,530 --> 00:13:24,810 Muss nur schnell noch umbauen. Aus dem Laser-Cutter 139 00:13:24,810 --> 00:13:29,210 würde dann z.B. sowas rausfallen. 140 00:13:29,210 --> 00:13:32,160 Also ein sehr luftiges Gehäuse, dass man dann wirklich 141 00:13:32,160 --> 00:13:34,990 die Raumtemperatur messen kann und nicht die Eigentemperatur 142 00:13:34,990 --> 00:13:42,490 des Prozessors. Und wenn man das Ganze dann entsprechend bestückt, 143 00:13:42,490 --> 00:13:47,259 dann würde das so aussehen. Da habe ich den Bewegungsmelder, ich habe meine 144 00:13:47,259 --> 00:13:56,390 Status-Leuchtdiode. Hier habe ich meinen Temperatur- und Feuchtigkeitssensor. 145 00:13:56,390 --> 00:14:02,480 Hier vorne habe ich den LDR. Hier habe ich noch die Buchsen für die Fensterkontakte, 146 00:14:02,480 --> 00:14:07,949 zwei Stück. Und hier gleich mit eingearbeitet, das USB-Netzteil, 147 00:14:07,949 --> 00:14:11,819 um das Ding einfach in die nächste Steckdose zu stecken und dann 148 00:14:11,819 --> 00:14:16,230 keine weiteren Kabel mehr zu ziehen. Wer keine Steckdose hat, kann 149 00:14:16,230 --> 00:14:22,070 natürlich dann auch so eine Variante nehmen. Das ist das gleiche, 150 00:14:22,070 --> 00:14:25,230 vielleicht muss ich es… naja… ein bisschen anders halten, naja, 151 00:14:25,230 --> 00:14:33,710 man sieht es schlecht. Hier innen drin sieht man den Prozessor. 152 00:14:33,710 --> 00:14:41,479 So. Hier sieht man den Prozessor, und die USB-Buchse nach außen zugänglich, 153 00:14:41,479 --> 00:14:45,209 dass man einfach mit einem Micro-USB- Kabel drauf verbinden kann. 154 00:14:45,209 --> 00:14:49,720 Ansonsten auch wieder hier oben den lichtempfindlichen Widerstand, 155 00:14:49,720 --> 00:14:58,779 die Kontakte für die Fenster, Temperatur und Feuchtigkeit. Und nach vorne 156 00:14:58,779 --> 00:15:04,249 den Passiv-Infrarot-Bewegungsmelder, mit Diode. Und auf der Rückseite 157 00:15:04,249 --> 00:15:10,529 noch ein paar Löcher, um das ganze mit Schrauben an die Wand zu dübeln. 158 00:15:10,529 --> 00:15:15,959 Man kann sich natürlich nicht nur solche Gehäuse nehmen, oder bauen. 159 00:15:15,959 --> 00:15:20,370 Man kann natürlich auch andere Sachen machen. Einfach mal als Ausblick, was man 160 00:15:20,370 --> 00:15:25,250 alles verwenden kann. Man kann auch bestehende Sachen nehmen. 161 00:15:25,250 --> 00:15:31,699 Z. B. hier so einen schönen, alten Schalter, die man teilweise noch findet. 162 00:15:31,699 --> 00:15:36,770 Wo man dann hier… schalten kann. 163 00:15:36,770 --> 00:15:44,809 Und auf der Unterseite ist natürlich der ESP eingelassen. 164 00:15:44,809 --> 00:15:47,509 Das ganze gibt es natürlich auch… 165 00:15:47,509 --> 00:15:52,420 so, vielleicht, wenn noch jemand die alten Schalter hier kennt, 166 00:15:52,420 --> 00:15:58,510 diese Bakelit-Schalter. Da wurde natürlich das Schaltelement entfernt und durch 167 00:15:58,510 --> 00:16:07,110 einen Encoder ersetzt. Wenn man mal dreht, hat man natürlich dann 168 00:16:07,110 --> 00:16:13,840 einen Encoder und kann damit auch einen Dimmer z. B. damit realisieren. 169 00:16:13,840 --> 00:16:17,540 Was man auch noch hat, es gibt auch solche Module, 170 00:16:17,540 --> 00:16:22,790 mit Touch-Zahlenfeldern. Dann einfach ein paar Platten oben und unten drauf, 171 00:16:22,790 --> 00:16:34,480 und unten entsprechend wieder der ESP eingelassen. Als letztes noch 172 00:16:34,480 --> 00:16:41,410 so eine schöne, alte, mechanische Klingel. Mit ‒ irgendwo ein Stift? ‒ 173 00:16:41,410 --> 00:16:48,510 mit DC/DC-Wandler, um von den 12 Volt auf die 5 Volt zu kommen, die der ESP braucht. 174 00:16:48,510 --> 00:16:51,480 Einen Schalttransistor, um die Spulen entsprechend zu treiben. 175 00:16:51,480 --> 00:16:58,139 Noch Stabilisierung über einen Kondensator und hier der ESP. 176 00:16:58,139 --> 00:17:02,690 Und ich kann es auch mal umdrehen. So. 177 00:17:02,690 --> 00:17:09,180 Und damit sind Sachen möglich, z. B. als Notification Device, um zu sagen, 178 00:17:09,180 --> 00:17:13,119 dass eine Mail da ist, oder, bei uns im Fablab haben wir das ganze dann 179 00:17:13,119 --> 00:17:15,949 mit zwei Läutwerken, um… 180 00:17:15,949 --> 00:17:21,660 …um die Uhrzeit zu schlagen, in Binär natürlich, 181 00:17:21,660 --> 00:17:25,049 mit ‘High’ und ‘Low’, also zwei verschiedenen Klingeltönen. 182 00:17:25,049 --> 00:17:29,230 Und das ist eben alles dann als Gehäuse möglich. 183 00:17:29,230 --> 00:17:32,220 Ach ja, doch, eins habe ich noch! 184 00:17:32,220 --> 00:17:38,400 Auch so ein Schalter, so ein schöner, alter Bakelit-Schalter, 185 00:17:38,400 --> 00:17:44,760 und dann einfach unten den ESP, einfach eingeklebt. 186 00:17:44,760 --> 00:17:56,220 Ohne das Schalterelement jetzt auszutauschen, sondern original zu lassen. 187 00:17:56,220 --> 00:18:02,460 Jetzt brauchen wir natürlich noch Software für das Ganze. Da gibt es jetzt zwei… 188 00:18:02,460 --> 00:18:06,250 …Versionen, sage ich mal. Man kann sich natürlich die Einzel-Libraries von Github 189 00:18:06,250 --> 00:18:11,840 holen. Für den DHT gibt es eine Library, für den 190 00:18:11,840 --> 00:18:15,470 ‒ was hatten wir noch alles? ‒ für irgendwelche anderen 191 00:18:15,470 --> 00:18:19,590 I2C-Devices, für alles Mögliche gibt es Librarys, auch Webserver gibt es 192 00:18:19,590 --> 00:18:24,921 mittlerweile ziemlich viele für den ESP. Wir wollen das ganze ja 193 00:18:24,921 --> 00:18:30,550 an einen Server schicken, mit MQTT, auch dafür gibt es eine Library. 194 00:18:30,550 --> 00:18:33,440 Das kann man sich alles herunterladen, kann das ganze irgendwie versuchen, 195 00:18:33,440 --> 00:18:38,650 zusammenzumergen, dann irgendwo in der Arduino-IDE was zusammenzubasteln, 196 00:18:38,650 --> 00:18:42,860 wo das ganze dann verbindet. Und dann ist man tagelang beschäftigt, bei Google 197 00:18:42,860 --> 00:18:47,130 und Stackoverflow zu schauen, warum es nicht funktioniert, oder wie es dann 198 00:18:47,130 --> 00:18:51,490 richtig funktioniert. Das ist so die Programmierervariante. 199 00:18:51,490 --> 00:18:55,830 Aber ich habe ja gesagt, wir wollen das ganze für Leute auch machen, die jetzt 200 00:18:55,830 --> 00:19:01,230 keine oder wenig Programmiererfahrung haben. Deshalb eben Version 2. 201 00:19:01,230 --> 00:19:06,390 Ich nehme einfach eine fertige Software mit dem Namen ESPEasy. 202 00:19:06,390 --> 00:19:12,770 Hier zu finden auf Github bzw. das Wiki dazu, einfach bei Google oder der 203 00:19:12,770 --> 00:19:16,581 entsprechenden Suchmaschine „ESPEasy Wiki“ eingeben, dann kommt ihr auf die 204 00:19:16,581 --> 00:19:24,520 entsprechende Seite. So, was macht jetzt die Software? 205 00:19:24,520 --> 00:19:29,470 Jetzt muss ich erstmal meine Testumgebung nochmal ein bisschen erklären. 206 00:19:29,470 --> 00:19:33,600 Ich habe hier ‒ da kann man ja nochmal kurz die Kamera ‒ ich habe hier 207 00:19:33,600 --> 00:19:39,851 nochmal das, was ich schon gezeigt habe, jetzt mit Kabel dran. Ich habe hier unten 208 00:19:39,851 --> 00:19:44,860 meinen ESP eingebaut. 209 00:19:44,860 --> 00:19:52,260 Und er hängt… USB jetzt nur als Stromverbindung. 210 00:19:52,260 --> 00:19:57,680 Und ich habe hier einen Banana Pi als Server und Access Point stehen. 211 00:19:57,680 --> 00:20:01,460 Access Point heißt, ich habe jetzt schon eine Verbindung hergestellt zwischen 212 00:20:01,460 --> 00:20:07,590 dem ESP und dem Access Point. Mein Rechner ist jetzt auch auf dem gleichen Access Point. 213 00:20:07,590 --> 00:20:11,510 Und damit kann ich jetzt die Webseite von dem ESP mir anschauen. 214 00:20:11,510 --> 00:20:17,570 Auf dem Banana Pi ist auch noch der MQTT Broker installiert, wo ich dann später 215 00:20:17,570 --> 00:20:22,990 nochmal darauf zurückkommen will. 216 00:20:22,990 --> 00:20:27,820 So. 217 00:20:27,820 --> 00:20:33,300 Hier oben sieht man die IP-Adresse, d. h. ich bin jetzt direkt auf dem ESP, 218 00:20:33,300 --> 00:20:38,120 der jetzt mit dieser Adresse angemeldet ist. Vielleicht muss ich noch einen Schritt 219 00:20:38,120 --> 00:20:43,920 zurückgehen. Beim ersten Mal flashen mit diesem ESPEasy geht der ESP in den 220 00:20:43,920 --> 00:20:48,250 Access Point Mode. Ich kann mich dann mit Handy oder Laptop darauf verbinden, 221 00:20:48,250 --> 00:20:53,030 kann dann die SSID und Passwort entsprechend eintippen. Dann wird 222 00:20:53,030 --> 00:20:57,240 neu gebootet, und dann ist er bereit, und ich kann dann im hausinternen Netz, 223 00:20:57,240 --> 00:21:02,530 wie jetzt, einfach darauf zugreifen. Wenn ich draufgehe, habe ich erstmal 224 00:21:02,530 --> 00:21:09,370 eine Übersichtsseite, mit allgemeinen Info-Daten. 225 00:21:09,370 --> 00:21:14,500 Ich habe eine Karteikarte mit der Konfiguration. Wie jetzt hier, 226 00:21:14,500 --> 00:21:22,680 das ist mein Access Point, mit dem entsprechenden Passwort. 227 00:21:22,680 --> 00:21:28,800 Ich kann auch noch einen zweiten Access Point eintragen, als Fallback. 228 00:21:28,800 --> 00:21:33,830 Ich kann natürlich auch feste Adressen vergeben, wenn ich keinen DHCP 229 00:21:33,830 --> 00:21:39,820 haben will. Und ich kann auch 230 00:21:39,820 --> 00:21:43,230 den Zugriff über ein Passwort schützen, wenn ich Angst habe, dass über mein 231 00:21:43,230 --> 00:21:46,700 hausinternes Netz jemand dranrumspielt. 232 00:21:46,700 --> 00:21:51,530 Das braucht man im Heimnetz üblicherweise nicht. 233 00:21:51,530 --> 00:21:55,670 Das ist die Grundkonfiguration, um erstmal die Kommunikation herzustellen, 234 00:21:55,670 --> 00:22:02,790 nach außen. Es gibt eine Hardwareseite, wo ich noch sagen kann, 235 00:22:02,790 --> 00:22:08,580 wo mein I2C-Bus liegt, auf welchen Pins. Ich kann noch die Status-LED, 236 00:22:08,580 --> 00:22:14,510 die hier öfter mal blau blinkt, noch sagen, auf welchem Pin die liegt, 237 00:22:14,510 --> 00:22:20,110 um dann auch eben ‘Rückkopplungen’ über Verbindungen und 238 00:22:20,110 --> 00:22:26,720 Datenpakete noch zu erhalten. Das wichtigste ist eigentlich dieser Reiter, 239 00:22:26,720 --> 00:22:31,090 „Devices“. Hier geht es um die ganzen Sensoren, die ich angeschlossen habe 240 00:22:31,090 --> 00:22:37,200 oder anschließen kann. Ich habe jetzt hier drei Sensoren aktiviert. 241 00:22:37,200 --> 00:22:44,070 Die drei, die ich vorhin schon vorgestellt habe. 242 00:22:44,070 --> 00:22:47,550 Ich fange jetzt einfach mal mit dem einfachsten an. 243 00:22:47,550 --> 00:22:51,360 Der Passiv-Infrarotmelder gibt ja einfach nur ein Signal aus, 244 00:22:51,360 --> 00:22:54,460 wenn sich jemand bewegt hat. Das heißt, ich brauche einfach nur 245 00:22:54,460 --> 00:23:04,180 einen Schaltereingang. Nennt sich dann, 246 00:23:04,180 --> 00:23:08,240 hier, „Switch“. 247 00:23:08,240 --> 00:23:11,230 Okay, ich fange nochmal andersrum an, ich nehme erstmal einen neuen. 248 00:23:11,230 --> 00:23:15,000 Ich nehme einen… hier. 249 00:23:15,000 --> 00:23:19,620 Wenn ich noch nichts eingetragen habe, habe ich hier eine Auswahl, 250 00:23:19,620 --> 00:23:25,430 mit Sensoren, die ich hierfür verwenden kann. Sind irgendwie, 251 00:23:25,430 --> 00:23:31,020 glaube ich, so 60 Stück, oder so, oder 65 mittlerweile. 252 00:23:31,020 --> 00:23:34,420 Das sind lauter Plug-Ins, die werden ständig erweitert, von irgendwelchen 253 00:23:34,420 --> 00:23:38,740 Usern, die freundlicherweise eben die Plug-Ins zur Verfügung stellen. 254 00:23:38,740 --> 00:23:44,900 Und damit kann ich eben so ziemlich alles, was es an Sensor-Platinen zu kaufen gibt, 255 00:23:44,900 --> 00:23:50,410 auch einbinden. Wenn ich das dann mal ausgewählt habe, 256 00:23:50,410 --> 00:23:56,070 dann habe ich es hier eingetragen, und kann es editieren. 257 00:23:56,070 --> 00:23:59,620 Also hier habe ich einen ‘Switch’ ausgewählt. 258 00:23:59,620 --> 00:24:02,880 Kann ich jetzt nicht mehr ändern, dann müsste ich es eben 259 00:24:02,880 --> 00:24:08,010 rausschmeißen. Ich kann dem Device einen Namen geben. Das ist dann interessant, 260 00:24:08,010 --> 00:24:12,120 wenn ich mehrere Devices vom gleichen Typ habe. Und es ist auch 261 00:24:12,120 --> 00:24:17,160 interessant für das, was ich an MQTT schicke, weil das Teil des Namens ist, 262 00:24:17,160 --> 00:24:22,490 des Topics ist, was bei MQTT dann verwendet wird. 263 00:24:22,490 --> 00:24:25,620 Ich kann dann jetzt beim ‘Schalter’ noch sagen, ob ich einen Pull-Up haben will, 264 00:24:25,620 --> 00:24:30,680 ob ich eine invertierte Logik haben will, welchen Pin ich haben will. 265 00:24:30,680 --> 00:24:36,460 Da habe ich natürlich die ganze Auswahl an I/O-Pins, die eben nicht mit I2C 266 00:24:36,460 --> 00:24:42,770 oder anderen festen Sachen dann belegt sind. 267 00:24:42,770 --> 00:24:46,850 Ich kann sagen „normaler Switch“ oder auch „dimmer mode“ oder so. 268 00:24:46,850 --> 00:24:49,790 Können wir später mal darauf eingehen. 269 00:24:49,790 --> 00:24:54,210 Und das ‘delay’ ‒ komme ich beim anderen Sensor nochmal drauf. Dieser Schalter, 270 00:24:54,210 --> 00:25:00,000 wenn „delay=0“ eingestellt ist, würde jetzt immer bei einer Änderung 271 00:25:00,000 --> 00:25:04,500 ein Datenpaket an MQTT schicken. 272 00:25:04,500 --> 00:25:10,800 Und ich kann der Variablen, die geschickt wird, auch noch einen Namen geben. 273 00:25:10,800 --> 00:25:15,270 Das ist vielleicht besser zu sehen bei dem nächsten Sensor. 274 00:25:15,270 --> 00:25:20,230 Das ist nämlich dieser Temperatur- und Feuchtesensor, 275 00:25:20,230 --> 00:25:26,380 DHT-11 oder auch -22, je nachdem, was man verwenden will. 276 00:25:26,380 --> 00:25:32,440 Hier kann ich wieder einen Namen vergeben. Ich kann sagen, er ist auf ‘diesem’ Pin. 277 00:25:32,440 --> 00:25:36,180 Dann wird ja… von dem Plug-In werden mehrere Sachen unterstützt. 278 00:25:36,180 --> 00:25:40,780 Da kann ich auswählen, welche. 279 00:25:40,780 --> 00:25:45,740 Und ich kann jetzt noch sagen, er soll alle 10 Sekunden gesampled werden, 280 00:25:45,740 --> 00:25:51,870 und der Temperaturwert eben übermittelt werden. Ich habe hier 281 00:25:51,870 --> 00:25:57,720 eben zwei Kanäle, Temperatur und Feuchtigkeit, und kann irgendeinen 282 00:25:57,720 --> 00:26:06,890 Namen vergeben, entsprechend für MQTT oder andere Heim-Automatisierungssysteme, 283 00:26:06,890 --> 00:26:13,800 an die ich das ganze dann schicken will. 284 00:26:13,800 --> 00:26:19,190 Noch der letzte, der lichtempfindliche Widerstand, mit dem ich ja die Helligkeit 285 00:26:19,190 --> 00:26:24,530 abschätzen will. Hängt einfach auf einem Analogkanal. Okay ‒ auf DEM einen 286 00:26:24,530 --> 00:26:30,700 Analogkanal. Ich kann noch sagen „Oversampling“, um dann eben Rauschen 287 00:26:30,700 --> 00:26:35,620 rauszubekommen. Ich könnte auch noch das ganze kalibrieren, wenn ich wollte, 288 00:26:35,620 --> 00:26:40,140 dass ich eben einen unteren und oberen Punkt definiere, und dazwischen 289 00:26:40,140 --> 00:26:44,850 wird eben linear interpoliert. Und auch der soll jetzt alle 10 Sekunden 290 00:26:44,850 --> 00:26:50,560 gesampled werden. Dann habe ich hier noch eine Einstellung, „dieser Wert soll 291 00:26:50,560 --> 00:26:56,820 an Controller 1 geschickt werden“. Zu den Controllern komme ich jetzt gleich. 292 00:26:56,820 --> 00:27:01,710 Und auch hier habe ich wieder einen Namen festgelegt. 293 00:27:01,710 --> 00:27:08,720 Und so kann ich halt bis zu 12 Devices konfigurieren, und einfach durch Klicken 294 00:27:08,720 --> 00:27:14,420 in der Web-Oberfläche dann zuweisen auf die Pins, auf die Eigenschaften, 295 00:27:14,420 --> 00:27:21,260 einige Sachen eben auch skalieren. 296 00:27:21,260 --> 00:27:24,500 Hier bei ‘Analog’ zum Beispiel könnte ich auch eine Formel eintippen, 297 00:27:24,500 --> 00:27:29,040 oder eine einfache Formel, wo ich dann sage, ich multipliziere oder addiere 298 00:27:29,040 --> 00:27:32,210 noch einen Wert dazu. Bei der Temperatur kann es sein, dass sie immer 299 00:27:32,210 --> 00:27:37,200 ein Grad zu hoch oder zu tief misst, dann könnte ich hier einfach „-1“ reinschreiben. 300 00:27:37,200 --> 00:27:41,460 Oder halt dann auf andere Werte skalieren. 301 00:27:41,460 --> 00:27:47,240 Ich kann auch noch festlegen, wieviele Dezimalstellen an den Controller 302 00:27:47,240 --> 00:27:53,910 übermittelt werden sollen. So, jetzt zu den Controllern. 303 00:27:53,910 --> 00:27:59,020 Hier habe ich schon mal zwei eingetragen, auch hier wieder das gleiche 304 00:27:59,020 --> 00:28:06,270 Plug-In-Prinzip. Ich habe die Auswahl von etlichen 305 00:28:06,270 --> 00:28:13,070 Controllern. Also verschiedene MQTT-Varianten, die aber alle 306 00:28:13,070 --> 00:28:20,500 recht ähnlich sind. Ich kann auch http-Requests abschicken, weil, an viele 307 00:28:20,500 --> 00:28:26,020 Server oder auch Datenbanken kann man einfach ein GET-Request hinschicken, 308 00:28:26,020 --> 00:28:32,450 und die übernehmen so die Daten. 309 00:28:32,450 --> 00:28:36,820 Da können wir jetzt mal rein. 310 00:28:36,820 --> 00:28:40,220 Bleiben wir mal gleich bei dem GET-Request. 311 00:28:40,220 --> 00:28:45,280 Ich kann hier eine IP-Adresse sagen, wo das ganze hingeschickt werden soll, 312 00:28:45,280 --> 00:28:50,760 über welchen Port. Wenn notwendig, auch, über Login. 313 00:28:50,760 --> 00:28:54,610 Ich kann hier dann auch sagen, GET oder POST, oder was auch immer. 314 00:28:54,610 --> 00:28:57,220 Und kann das auch hier entsprechend zusammenbauen. 315 00:28:57,220 --> 00:29:01,520 Damit habe ich auch die Möglichkeit, einer InfluxDB-Datenbank z.B. 316 00:29:01,520 --> 00:29:09,720 die Daten direkt hinzuschicken. 317 00:29:09,720 --> 00:29:14,280 Ich will aber jetzt hier an einen MQTT-Server das ganze schicken. 318 00:29:14,280 --> 00:29:17,910 Nicht ‘Server’, sondern ‘Broker’ in dem Fall. 319 00:29:17,910 --> 00:29:24,710 Das ist mein Banana Pi, die Adresse, wo der Broker läuft. Der Standard-Port 320 00:29:24,710 --> 00:29:30,840 ist eben die 1883. Wenn notwendig, auch mit Login. 321 00:29:30,840 --> 00:29:39,930 Und das ist eine Variable, wie er das Topic für den MQTT-String 322 00:29:39,930 --> 00:29:44,550 zusammenbaut. Ich habe den Systemnamen, das wäre jetzt hier 323 00:29:44,550 --> 00:29:52,120 „Test-IoT“. „Task-Name“ wäre quasi der Sensor. Und „value-Name“ 324 00:29:52,120 --> 00:29:57,450 wäre eben z.B. Temperatur- oder Feuchtigkeit. Und damit habe ich 325 00:29:57,450 --> 00:30:03,420 alles konfiguriert, was ich brauche. Und damit sollte eigentlich schon 326 00:30:03,420 --> 00:30:09,950 alles funktionieren. 327 00:30:09,950 --> 00:30:13,400 So, jetzt habe ich hier auf meinem Rechner 328 00:30:13,400 --> 00:30:19,560 ein kleines Python-Skript, was jetzt einfach zu dem Broker eine Verbindung aufbaut 329 00:30:19,560 --> 00:30:24,240 und einfach mitliest, was eben an den Broker geschickt wird. Und man sieht, 330 00:30:24,240 --> 00:30:30,220 dass jetzt alle 10 Sekunden Temperatur, Feuchtigkeit und Helligkeit 331 00:30:30,220 --> 00:30:35,520 geschickt wird. Und wenn ich hier mich irgendwie bewege, dann wird auch noch 332 00:30:35,520 --> 00:30:42,240 ein „anyone here“ vom Infrarotsensor 333 00:30:42,240 --> 00:30:48,540 eben mitgeschickt. D.h. man sieht, es funktioniert auch schon. 334 00:30:48,540 --> 00:30:54,170 So, ohne dass man jetzt großartig was programmieren oder einstellen muss. 335 00:30:54,170 --> 00:31:00,010 Einfach nur zusammenklicken, und das war’s. 336 00:31:00,010 --> 00:31:04,490 Ich habe natürlich noch ein bisschen mehr 337 00:31:04,490 --> 00:31:09,560 Möglichkeiten. Ich habe auch noch „Rules“. 338 00:31:09,560 --> 00:31:14,320 Das sind dann sehr einfache Regeln, die ich noch hinterlegen kann. 339 00:31:14,320 --> 00:31:19,640 Z.B. wenn der Infrarotsensor mit dem Kanal „Anyone here“ triggert, also, 340 00:31:19,640 --> 00:31:28,270 sprich, wenn ich hier mich bewege und gleichzeitig der LDR einen Wert 341 00:31:28,270 --> 00:31:32,550 kleiner 200, das war jetzt empirisch ermittelt, d.h. einfach, hier im Raum 342 00:31:32,550 --> 00:31:38,770 wäre es dunkel. Dann soll er einfach auf einem GPIO-Pin eben den Status 343 00:31:38,770 --> 00:31:42,800 von „Anyone here“ ausgeben. Das wäre jetzt die einfachste Variante von dem, 344 00:31:42,800 --> 00:31:49,140 was man als Bewegungsmelder mit Lampe kennt. Kann man hier einfach als Rule 345 00:31:49,140 --> 00:31:52,311 hinterlegen. Es geht noch ein bisschen komplizierter, aber jetzt bitte 346 00:31:52,311 --> 00:31:57,020 keine Wunder erwarten. Also aufwändigere Sachen würde man dann auf der Serverseite 347 00:31:57,020 --> 00:32:03,040 machen, hinter dem MQTT-Broker. Aber auch hier können wir als Standalone-Lösung 348 00:32:03,040 --> 00:32:10,690 schon einen einfachen Bewegungsmelder, der eine Lampe schaltet, realisieren. 349 00:32:10,690 --> 00:32:18,130 Es gibt natürlich auch noch jede Menge Zusatz-Tools. Um z.B. I2C-Bus zu scannen, 350 00:32:18,130 --> 00:32:22,370 um herauszufinden, auf welcher Adresse jetzt mein Sensor läuft, weil, das ist 351 00:32:22,370 --> 00:32:28,350 nicht immer klar bei den einfachen Modulen. Ich kann meine Settings 352 00:32:28,350 --> 00:32:37,870 noch wohin speichern, ich kann neue Firmware over-se-air auch updaten. 353 00:32:37,870 --> 00:32:41,980 Ich kann auch hier noch 354 00:32:41,980 --> 00:32:49,690 einige Zusatzsachen einstellen, aber das würde jetzt zu weit gehen. 355 00:32:49,690 --> 00:32:54,520 Auch… irgendwo war es doch… ich sehe es gerade nicht… 356 00:32:54,520 --> 00:33:00,500 NTP-Server kann ich einstellen, z.B. wie ich gesagt habe, für den Stundenschlag 357 00:33:00,500 --> 00:33:05,840 würde aus NTP die Zeit beziehen, und dann natürlich sekundengenau schlagen. 358 00:33:05,840 --> 00:33:14,900 Pause 359 00:33:14,900 --> 00:33:20,130 So. Dann wieder zurück zu meinen Folien. Damit hätten wir im Prinzip 360 00:33:20,130 --> 00:33:23,210 eigentlich ein fertiges Gerät, was man einfach nur noch an die Wand schrauben 361 00:33:23,210 --> 00:33:31,230 muss. Und es würde das ganze an den MQTT-Broker schicken und ich könnte dann 362 00:33:31,230 --> 00:33:35,610 einen Server wie FHEM oder sowas hintendran setzen, der die Daten 363 00:33:35,610 --> 00:33:39,640 entgegennimmt, und auch Hausautomatisierung machen, hier 364 00:33:39,640 --> 00:33:45,120 aus der Temperatur oder Feuchtigkeit dann die Heizung entsprechend ein-/ausschalten, 365 00:33:45,120 --> 00:33:48,780 irgendwelche Lichter ein-/ausschalten, oder Warnung geben, wenn noch ein Fenster 366 00:33:48,780 --> 00:34:00,380 offen ist. Das ganze beruht jetzt auf dem ESP, dem alten, kleinen ESP, muss ich 367 00:34:00,380 --> 00:34:07,730 dazu sagen. Die ESP32-Variante ist gerade noch im Programmieren, 368 00:34:07,730 --> 00:34:12,500 ist noch nicht so richtig einsatzfähig. Wer als Beta-Version damit spielen will, 369 00:34:12,500 --> 00:34:17,960 kann die gerne mal probieren. Aber das ist jetzt… bezieht sich nur auf den 370 00:34:17,960 --> 00:34:24,809 kleinen ESP. Es gibt ein zweites Projekt. 371 00:34:24,809 --> 00:34:28,939 Mit dem Namen EzPiC. 372 00:34:28,939 --> 00:34:33,149 Jetzt hier rechts oben zu sehen. Die Grundphilosophie 373 00:34:33,149 --> 00:34:36,489 ist die gleiche. D.h. ich will eine Web-Oberfläche, wo ich alles schnell 374 00:34:36,489 --> 00:34:44,408 einstellen kann. Ich will mich nicht lange mit Programmierung und sowas aufhalten. 375 00:34:44,408 --> 00:34:51,619 Und warum das Projekt angefangen wurde ist, ich will erstmal das ganze auf dem Pi 376 00:34:51,619 --> 00:34:54,809 zum Laufen bringen. Das war der ursprüngliche Gedanke, wurde dann 377 00:34:54,809 --> 00:35:00,359 erweitert. Ich will es auch noch auf einem ESP32, also der nächstgrößere ESP 378 00:35:00,359 --> 00:35:04,529 mit mehr Speicher, mehr Geschwindigkeit und noch ein paar Features mehr, 379 00:35:04,529 --> 00:35:12,740 auch mehr Pins. Und als Zusatzding für die Entwickler, dass die 380 00:35:12,740 --> 00:35:16,450 das ganze erstmal, wenn es nicht um die reine Hardware geht, auch mal 381 00:35:16,450 --> 00:35:21,500 auf dem PC testen können. Also ohne dauernd irgendwas zu programmieren 382 00:35:21,500 --> 00:35:25,460 und, ja, geht nicht, und man muss jetzt mit LED-Blinken quasi debuggen, 383 00:35:25,460 --> 00:35:30,919 sondern ich kann dann in einer richtigen Umgebung, z.B. atom-Umgebung, 384 00:35:30,919 --> 00:35:37,160 bzw. Visual Studio Code, dann kann ich einfach rein-debuggen 385 00:35:37,160 --> 00:35:41,619 und schonmal alles ausprobieren. 386 00:35:41,619 --> 00:35:46,910 Das ESPEasy-Projekt ist in C und C++ geschrieben. 387 00:35:46,910 --> 00:35:51,300 Das EzPiC-Projekt ist angedacht mit Python 388 00:35:51,300 --> 00:35:56,380 und wurde jetzt noch erweitert mit microPython, also ein Hybrid 389 00:35:56,380 --> 00:36:00,799 aus beiden Welten. Und das klappt auch schon recht gut. D.h. man kann 390 00:36:00,799 --> 00:36:06,920 mit dem gleichen Source-Code-Stand sowohl microPython auf einer ESP32 391 00:36:06,920 --> 00:36:13,229 fahren, als auch mit Normal-Python, also 3.4 oder höher. 392 00:36:13,229 --> 00:36:18,020 Auf dem PC oder auf dem Raspberry Pi. 393 00:36:18,020 --> 00:36:23,539 Der Webserver bei dem ESPEasy-Projekt ist selbergeschrieben. 394 00:36:23,539 --> 00:36:28,690 Bei dem neuen Projekt wird versucht, einen fertigen Webserver, den es 395 00:36:28,690 --> 00:36:33,750 als lauffähiges Projekt gibt, mit einzubinden. Das ist der ‘MicroWebSrv’. 396 00:36:33,750 --> 00:36:37,950 Findet man auf Github. 397 00:36:37,950 --> 00:36:41,670 Das neue Projekt ist noch in einer frühen Phase, ich dachte, dass man vielleicht 398 00:36:41,670 --> 00:36:47,350 schon für den Easter-Hegg dann schon mehr zeigen kann. Aber ist noch in einer 399 00:36:47,350 --> 00:36:55,490 sehr, sehr Alpha-Version. Der Grund, warum auch das neue Projekt… auf dem ESP 400 00:36:55,490 --> 00:36:59,400 habe ich natürlich sehr begrenzte Ressourcen, was jetzt RAM betrifft, 401 00:36:59,400 --> 00:37:06,440 was Flash betrifft, was Geschwindigkeit betrifft, auch die Pins sind sehr limitiert. 402 00:37:06,440 --> 00:37:11,619 Und wenn ich in einer anderen Umgebung bin, dann kann ich mich halt 403 00:37:11,619 --> 00:37:17,120 freier bewegen, und mich dann entsprechend austoben. 404 00:37:17,120 --> 00:37:21,940 Ohne jetzt auf die Details einzugehen, da gibt es schon entsprechende 405 00:37:21,940 --> 00:37:26,650 Konzepte. Es ist alles Plugin-basiert, dass man dann auch sagen kann, 406 00:37:26,650 --> 00:37:31,230 ich habe für andere Prozessoren auch andere Module, die dann spezielle Hardware 407 00:37:31,230 --> 00:37:40,849 noch unterstützen, die auf dem Prozessor möglich sind. Und was ich schon zeigen kann, 408 00:37:40,849 --> 00:37:49,150 ist, eine kleine Demo, das läuft jetzt auf meinem PC, ich habe es jetzt 409 00:37:49,150 --> 00:37:55,209 technisch nicht mehr geschafft, auf die Schnelle den Banana Pi dazu zu bringen. 410 00:37:55,209 --> 00:38:02,160 Ich habe hier meine Web Page, ich bin jetzt quasi in dem Webserver, der quasi 411 00:38:02,160 --> 00:38:05,660 in Python läuft. Ich habe hier auch schon 412 00:38:05,660 --> 00:38:09,670 Devices, mit entsprechend einer Device-Liste, wo ich 413 00:38:09,670 --> 00:38:14,589 Devices dazuhängen kann, 414 00:38:14,589 --> 00:38:19,750 wo ich auch Devices editieren kann. 415 00:38:19,750 --> 00:38:24,020 Man sieht, das sieht alles ähnlich aus wie bei dem ESPEasy-Projekt, 416 00:38:24,020 --> 00:38:30,210 nur hier da mehr Ressourcen verfügbar sind, mit Bootstrap 417 00:38:30,210 --> 00:38:36,540 als Oberflächen-Tool. Und 418 00:38:36,540 --> 00:38:40,760 halt hier die ersten Schritte ‒ Plugin-System läuft. 419 00:38:40,760 --> 00:38:45,130 Und da wäre es schön, wenn sich auch noch Entwickler dafür finden würden, 420 00:38:45,130 --> 00:38:51,420 um das ein bisschen voranzubringen, um eben auch ESP32 und Raspberry Pi 421 00:38:51,420 --> 00:38:58,850 noch zu unterstützen. 422 00:38:58,850 --> 00:39:04,490 So, im Prinzip bin ich jetzt durch. 423 00:39:04,490 --> 00:39:09,910 Wenn jetzt Fragen sind, dann bitte… 424 00:39:09,910 --> 00:39:14,740 …meldet euch, Fragen zum ESPEasy-Projekt, Fragen zum 425 00:39:14,740 --> 00:39:21,440 EzPiC-Projekt. Ich muss nur das Mikro weiterleiten. 426 00:39:21,440 --> 00:39:25,410 Frage: Wie machst du das mit der Konfiguration der Temperatursensoren 427 00:39:25,410 --> 00:39:29,349 und so? Legst du ein Thermometer daneben? Oder? 428 00:39:29,349 --> 00:39:33,890 Jochen: Die Temperatursensoren, wie der DHT12, oder, was auch gern verwendet wird, 429 00:39:33,890 --> 00:39:38,720 der BME218 z.B., die sind ab Werk kalibriert. Es kann halt sein, dass er 430 00:39:38,720 --> 00:39:42,880 1..2 Grad oder so mal danebenliegt. Aber eigentlich kommen die Daten schon 431 00:39:42,880 --> 00:39:47,970 richtig in °C, und die Feuchtigkeit schon in Prozent, d.h. da braucht man 432 00:39:47,970 --> 00:39:53,240 nichts kalibrieren. Für andere Sachen, die man am Analogport anschließen will, 433 00:39:53,240 --> 00:39:57,760 gibt es eben da auch Min- und Max-Eingabe, 434 00:39:57,760 --> 00:40:01,189 wo man dann einfach mal die Werte… 435 00:40:01,189 --> 00:40:04,230 also, sprich, man hat eine obere und eine untere Temperatur, 436 00:40:04,230 --> 00:40:08,779 man schaut sich den AD-Wandler-Wert an, schreibt sich den auf, 437 00:40:08,779 --> 00:40:12,849 trägt den im Edit-Feld entsprechend ein und kann dann sagen, 438 00:40:12,849 --> 00:40:16,430 der obere Wert soll „das“ sein, der untere Wert soll „die“ Temperatur sein 439 00:40:16,430 --> 00:40:22,740 und hat das damit kalibriert. 440 00:40:22,740 --> 00:40:26,719 Sonst noch Fragen? 441 00:40:26,719 --> 00:40:32,010 Könnt ihr mal durchgeben, bitte? 442 00:40:32,010 --> 00:40:34,730 Frage: Hast du auch schon mal versucht, das ganze ohne Strom, 443 00:40:34,730 --> 00:40:38,140 also mit Batterie zu realisieren? 444 00:40:38,140 --> 00:40:43,720 Jochen: Der ESP braucht, wenn er WLAN machen will, 100 bis 200 mA. 445 00:40:43,720 --> 00:40:46,630 Und damit ist eine Batterie natürlich sehr schnell leer. 446 00:40:46,630 --> 00:40:52,450 Es gibt auch einen Modus, wo ich ihn in Deep-Schlaf versetzen kann, 447 00:40:52,450 --> 00:40:58,220 und alle paar Sekunden aufwecken kann. Und… 448 00:40:58,220 --> 00:41:01,890 …ich muss da jetzt mal hier wieder zurück auf den… 449 00:41:01,890 --> 00:41:05,269 Damit kann ich natürlich Messungen machen, dass ich sage, alle Stunde wacht er 450 00:41:05,269 --> 00:41:11,940 einmal auf, misst, schickt das ganze an ‒ hier unten, ‘Sleep Time’ ‒ 451 00:41:11,940 --> 00:41:15,470 schickt das ganze an den Server und legt sich wieder schlafen. 452 00:41:15,470 --> 00:41:20,089 Damit kann man dann… wir haben es mal ausgerechnet, wenn ich alle Stunde messe, 453 00:41:20,089 --> 00:41:26,470 könnte ich mit AA-Batteriezellen ein halbes/dreiviertel Jahr überbrücken. 454 00:41:26,470 --> 00:41:29,619 Aber ich habe halt dann nicht kontinuierlich Werte, sondern nur 455 00:41:29,619 --> 00:41:32,630 im Stundenraster. 456 00:41:32,630 --> 00:41:37,160 Frage: Noch eine Frage ‒ wie weit geht denn das Wi-Fi? Das ist nur so eine kurze, 457 00:41:37,160 --> 00:41:39,719 aufgedruckte Antenne. Das hat doch nicht viel Reichweite? 458 00:41:39,719 --> 00:41:44,359 Jochen: Ich sage mal, halbsoweit wie ein Laptop, so mal als Faustregel. 459 00:41:44,359 --> 00:41:52,769 Es gibt natürlich auch den WeMos D1 Pro, das ist das Board, 460 00:41:52,769 --> 00:41:54,970 das hat noch einen Stecker drauf, da kann ich eine externe… 461 00:41:54,970 --> 00:42:00,230 Da geht es ein bisschen weiter. Aber man darf halt jetzt keine… 462 00:42:00,230 --> 00:42:10,820 nicht so eine gute Qualität wie jetzt eben Handy bzw. PC erwarten. 463 00:42:10,820 --> 00:42:15,979 So, sonst noch Fragen? 464 00:42:15,979 --> 00:42:19,500 Keine? Dann… danke für die Aufmerksamkeit! 465 00:42:19,500 --> 00:42:26,800 *Beifall* 466 00:42:26,800 --> 00:42:31,210 *Abspannmusik* 467 00:42:31,210 --> 00:42:38,305 Untertitel erstellt von c3subtitles.de im Jahr 2018. Mach mit und hilf uns!