{"id":10532,"date":"2024-04-14T06:15:54","date_gmt":"2024-04-14T06:15:54","guid":{"rendered":"https:\/\/www.fambach.net\/?p=10532"},"modified":"2024-04-14T07:49:58","modified_gmt":"2024-04-14T07:49:58","slug":"esp-web-serial-bibliothek","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/esp-web-serial-bibliothek\/","title":{"rendered":"ESP WEB Serial Library"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Contents\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Grundsatzliches\" >Grunds&auml;tzliches<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Task_Erstellen\" >Create Task<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Synchronisation\" >Synchronisation<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Queues\" >Queues<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Semaphoren\" >Traffic lights<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Event_Groups\" >Event Groups<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Stream_Buffer\" >Stream Buffer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Message_Buffer\" >Message Buffer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Hooks\" >Hooks<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#FreeRtos_Implementierung\" >FreeRTOS Implementation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#IDF_Implementierung\" >IDF Implementation<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Ringbuffer\" >Ring buffer<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Fazit\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Verwandte_Beitrage\" >Verwandte Beitr&auml;ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/#Quellen\" >Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Bei Projekte die nicht am seriellen Port h&auml;ngen k&ouml;nnen ist die Fehleranalyse manchmal hardn&auml;ckick. Um so sch&ouml;ner dass es Projekte wie die WEB-Serial Biliothek gibt die es erm&ouml;glichen einfach eine Website auf dem ESP zu  &ouml;ffnen um serielle Ausgaben dort zu zeigen. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ich habe die freie version der Bibliothek ausporbiert. Es gibt auch noch eine Pro Version die ein paar zus&auml;tliche Funktionalit&auml;ten wie eine Scrollbar, Stop Knopf und einen Clear Knopf besitzt. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/ayushsharma82\/WebSerial\">https:\/\/github.com\/ayushsharma82\/WebSerial<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">In den Code Geschaut<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Der Code is recht &uuml;berschaubar, es gibt eine WebSerialClass und eine Website die mittels gzip komprimiert und als Array hinterlegt ist. W&uuml;rde man die Seite decodieren, w&auml;re viel Java Script zu sehen und wenig HTML.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Programming<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Libraries<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/ayushsharma82\/WebSerial\" target=\"_blank\" rel=\"noreferrer noopener\">WebSerial Bibliothek<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/me-no-dev\/AsyncTCP\" target=\"_blank\" rel=\"noreferrer noopener\">ESPAsyncTCP<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/me-no-dev\/ESPAsyncWebServer\" target=\"_blank\" rel=\"noreferrer noopener\">ESPAsyncWebServer <\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"225\" height=\"306\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/WebSerialArduinoGuiLibInstall.jpg\" alt=\"\" class=\"wp-image-10537\"><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Example Programme<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Beispielprogramm wird auch hier mitgeliefert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meine Version des Programms ist unter folgenden Link zu finden wobei zum gr&ouml;sten Teil dem Beispielprogramm des Bibliotheksentwicklers entspricht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/sfambach\/esp32\/tree\/master\/src\/WebSerial\">https:\/\/github.com\/sfambach\/esp32\/tree\/master\/src\/WebSerial<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">This is what it looks like<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wie man sieht nimmt der freie Speicher ab  \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"544\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/WebSerialWebpageOutput.jpg\" alt=\"\" class=\"wp-image-10538\"><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Miscellaneous<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt ein ganz &auml;hnliches Projekt, die Oberfl&auml;chen sehen recht gleich aus. Allerdings entschuldigt sich der Entwickler, dass es sich hierbei schon um die Proversion handelt ;).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"181\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/WebSerialLite.jpg\" alt=\"\" class=\"wp-image-10539\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/asjdf\/WebSerialLite\">https:\/\/github.com\/asjdf\/WebSerialLite<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Dei Bibliothek ist einfach installiert und eingebunden und kann bei der Fehlersuche ohne serielle Verbindung sehr hilfreich sein. Ob die Pro Version die Investition von rund 60$ wert ist, muss jeder f&uuml;r sich entscheiden. Bei 20$ h&auml;tte ich wahrscheinlich garnicht viel dr&uuml;ber nachgedacht, 60$ finde ich f&uuml;r Hobbyprojekte etwas viel. Es gibt weitere Anbieter solcher Bibliotheken, jeder sollte f&uuml;r sich entscheiden ob ihn diese unter Sonstiges gezeigte Grauzone es wert ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F&uuml;r mich war es der Einstieg in dynamische Webseiten. Ich wollte die Funktionalit&auml;t analysieren, dies wurde etwas erschwert durch die gzip array variante der Website. Hat man diese Hyrde genommen zeichnet sich der Code durch unn&ouml;tig komplexe JavaScript-Magie aus somit war dieses Beispiel nicht sehr hilfreich f&uuml;r mich und ich werde nach anderen Ausschau halten.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Verwandte Beitr&auml;ge<\/h1>\n\n\n<div class=\"display-posts-listing\">\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp-web-serial-bibliothek\/\">ESP WEB Serial Library<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp01-relay-platinen-2\/\">ESP01 \u2013 DHT11 Temperature and Humidity Sensor Boards<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/customkeyboard\/\">CustomKeyboard Library<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp8266-32-wifi-manager\/\">ESP8266\/32 WiFi Manager.<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/\">ESP01 \u2013 Relay Board<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/neo-6m-gps-logger-shield-v1-0\/\">NEO-6M GPS Logger Shield V1.0<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/zumo-v1-2\/\">Zumo V1.2<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp8266-rtos-sdk\/\">ESP8266 RTOS SDK<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\">Espressif IDF \u2013 GPIOs<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/\">Espressif IDF \u2013 Tasks<\/a><\/div>\n<\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Sources<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/ayushsharma82\/WebSerial\">https:\/\/github.com\/ayushsharma82\/WebSerial<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/randomnerdtutorials.com\/esp32-webserial-library\/\">https:\/\/randomnerdtutorials.com\/esp32-webserial-library\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/onlinestringtools.com\/convert-ascii-to-string\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Bei Projekte die nicht am seriellen Port h&auml;ngen k&ouml;nnen ist die Fehleranalyse manchmal hardn&auml;ckick. Um so sch&ouml;ner dass es Projekte wie die WEB-Serial Biliothek gibt die es erm&ouml;glichen einfach eine Website auf dem ESP zu &ouml;ffnen um serielle Ausgaben dort zu zeigen. Ich habe die freie version der Bibliothek ausporbiert. Es gibt auch noch eine &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"Espressif IDF &#8211; GPIOs\"<\/span> <span class=\"meta-nav\">\u2192<\/span><\/a>","protected":false},"author":1,"featured_media":10538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[187,335],"tags":[71,33,148,23],"class_list":["post-10532","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp","category-esp-bibliotheken","tag-bibliotheken","tag-esp","tag-esp32","tag-esp8266","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/10532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=10532"}],"version-history":[{"count":10,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/10532\/revisions"}],"predecessor-version":[{"id":10573,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/10532\/revisions\/10573"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/10538"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=10532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=10532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=10532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}