{"id":37422,"date":"2019-10-31T22:17:33","date_gmt":"2019-10-31T19:17:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\/"},"modified":"2019-10-31T22:17:33","modified_gmt":"2019-10-31T19:17:33","slug":"shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Wesentliche Thesen oder worum es in diesem Artikel geht<\/h4>\n<p>\nDas Thema des Artikels ist visuelle Programmierung von SPS <b>ShIoTiny<\/b> f\u00fcr das intelligente Zuhause, das hier beschrieben wird: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: kleine Automatisierung, Internet der Dinge oder \u201esechs Monate vor dem Urlaub\u201c<\/a><\/noindex>.<\/p>\n<p><b>Sehr kurz<\/b> wurden solche Begriffe wie <b>Knoten<\/b>, <b>Verbindungen<\/b>, <b>Ereignisse<\/b>, sowie die Besonderheiten des Ladens und Ausf\u00fchrens eines visuellen Programms auf <b>ESP8266<\/b>, das die Grundlage der SPS bildet <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Einf\u00fchrung oder einige organisatorische Fragen<\/h4>\n<p>\nIn dem vorhergehenden Artikel zu meiner Entwicklung habe ich einen kurzen \u00dcberblick \u00fcber die M\u00f6glichkeiten des Controllers gegeben <b>ShIoTiny<\/b>.<\/p>\n<p>Es ist merkw\u00fcrdig, dass die \u00d6ffentlichkeit ein ziemlich starkes Interesse gezeigt hat und mir viele Fragen gestellt hat. Einige Leute haben sogar sofort angeboten, den Controller von mir zu kaufen. Nein, ich bin nicht gegen ein wenig Verdienst, aber mein Gewissen erlaubt es mir nicht, eine noch sehr unausgereifte Software zu verkaufen.<\/p>\n<p>Deshalb habe ich die Bin\u00e4rdateien des Firmware und das Ger\u00e4tediagramm auf GitHub hochgeladen: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">Firmware + Anleitung kurz + Diagramm + Beispiele<\/a><\/noindex>.<\/p>\n<p>Jetzt kann jeder das ESP-07 flashen und selbst mit der Firmware experimentieren. Wenn jemand genau solch ein Board wie auf dem Foto m\u00f6chte, habe ich ein paar davon. Schreiben Sie mir eine E-Mail <b>shiotiny@yandex.ru<\/b>. Aber, wie der unvergessliche Ogurtsov sagte: \u201eIch \u00fcbernehme daf\u00fcr keine Verantwortung.\u201c<\/p>\n<p>Also, kommen wir zur Sache: Was ist \"<b>Knoten<\/b>\" (Node) und \"<b>Ereignis<\/b>\"? Wie wird das Programm ausgef\u00fchrt?<\/p>\n<p>Wie \u00fcblich, beginnen wir der Reihe nach: mit dem Laden des Programms.<\/p>\n<h4>Wie das Programm geladen wird<\/h4>\n<p>\nBeginnen wir damit, was passiert, wenn wir die Taste <b>Upload<\/b> im Editor <b>ElDraw<\/b> dr\u00fccken und unser Diagramm-Programm, das aus sch\u00f6nen K\u00e4stchen besteht, in das Ger\u00e4t \u00fcbertragen wird.<\/p>\n<p>Zun\u00e4chst wird auf Grundlage des von uns gezeichneten Diagramms eine textuelle Beschreibung erstellt.<br \/>\nZweitens wird \u00fcberpr\u00fcft, ob alle Eing\u00e4nge der Knoten mit Ausg\u00e4ngen verbunden sind. \u201eH\u00e4ngende\u201c Eing\u00e4nge d\u00fcrfen nicht vorhanden sein. Wenn ein solcher Eingang gefunden wird, wird das Diagramm in ShIoTiny nicht geladen und der Editor gibt eine entsprechende Warnung aus.<\/p>\n<p>Wenn alles erfolgreich war, sendet der Editor die textuelle Beschreibung des Diagramms Knoten f\u00fcr Knoten an ShIoTiny. Selbstverst\u00e4ndlich wird das bestehende Diagramm in ShIoTiny zuvor gel\u00f6scht. Die erhaltene textuelle Beschreibung wird im FLASH-Speicher gespeichert.<\/p>\n<p>\u00dcbrigens, wenn Sie das Schema vom Ger\u00e4t entfernen m\u00f6chten, laden Sie einfach ein leeres Schema (das keine Knoten-Einheiten enth\u00e4lt) hoch.<\/p>\n<p>Sobald das gesamte Programmschema in den PLC ShIoTiny geladen ist, beginnt es mit der \"Ausf\u00fchrung\". Was bedeutet das?<\/p>\n<p>Es sei darauf hingewiesen, dass die Prozesse zum Laden eines Schemas aus dem FLASH-Speicher beim Einschalten und beim Empfangen eines Schemas aus dem Editor identisch sind.<\/p>\n<p>Zuerst werden Knotenobjekte basierend auf ihrer Beschreibung erstellt.<br \/>\nDann werden die Verbindungen zwischen den Knoten angeordnet. Das hei\u00dft, Ausg\u00e4nge werden mit Eing\u00e4ngen und Eing\u00e4nge mit Ausg\u00e4ngen verkn\u00fcpft.<\/p>\n<p>Und erst nach all dem wird die Hauptausf\u00fchrungsschleife des Programms gestartet.<\/p>\n<p>Ich habe lange geschrieben, aber der gesamte Prozess - vom \"Laden\" des Schemas aus dem FLASH-Speicher bis zur Ausf\u00fchrung der Hauptschleife - dauert nur Bruchteile von Sekunden f\u00fcr ein Schema mit 60-80 Knoten.<\/p>\n<p>Wie funktioniert die Hauptausf\u00fchrungsschleife? Ganz einfach. Zuerst wartet sie auf das Eintreten von <b>Ereignisse<\/b> in einem Knoten, dann verarbeitet sie dieses Ereignis. Und so unaufh\u00f6rlich. Oder bis ein neues Schema in ShIoTiny hochgeladen wird.<\/p>\n<p>Ich habe schon mehrmals solche Dinge erw\u00e4hnt wie <b>Ereignisse<\/b>, <b>Knoten<\/b> und <b>Verbindungen<\/b>. Aber was ist das programmtechnisch gesehen? Darum wollen wir heute sprechen.<\/p>\n<h4>Knoten, Verbindungen und Ereignisse<\/h4>\n<p>\nEin kurzer Blick auf die Beispiele f\u00fcr Programmschemata zeigt, dass ein Schema nur aus zwei Entit\u00e4ten besteht - Knoten (oder Elemente) und den Verbindungen zwischen ihnen. <b>ShIoTiny<\/b>Knoten<\/p>\n<p><b>Knoten<\/b>, <b>Element des Schemas<\/b> oder <b>ist eine virtuelle Darstellung irgendeiner<\/b> Aktion <b>\u00fcber Daten. Das kann eine arithmetische Operation, eine logische Operation oder eine beliebige andere Operation sein, die uns einf\u00e4llt. Das Hauptsache ist, dass der Knoten einen Eingang und einen Ausgang hat.<\/b> Eingang<\/p>\n<p><b>Eingang<\/b> ist der Ort, an dem der Knoten Daten empf\u00e4ngt. Die Darstellung der Eing\u00e4nge sind Punkte, die sich immer auf der linken Seite des Knotens befinden.<\/p>\n<p><b>Ausgang<\/b> ist der Ort, von dem das Ergebnis der Arbeit des Knotens abgerufen wird. Die Darstellung der Ausg\u00e4nge sind Punkte, die sich immer auf der rechten Seite des Knotens befinden.<\/p>\n<p>Einige Knoten haben keine Eing\u00e4nge. Solche Knoten erzeugen Ergebnisse in ihrem Inneren. Zum Beispiel ein Konstanten-Knoten oder ein Sensor-Knoten: Sie ben\u00f6tigen keine Daten von anderen Knoten, um ein Ergebnis zu liefern.<\/p>\n<p>Andere Knoten hingegen haben keine Ausg\u00e4nge. Das sind Knoten, die beispielsweise Aktuatoren (Relais oder \u00e4hnliche Ger\u00e4te) repr\u00e4sentieren. Sie empfangen Daten, erzeugen aber kein Ergebnis von Berechnungen, das f\u00fcr andere Knoten verf\u00fcgbar ist.<\/p>\n<p>Dar\u00fcber hinaus gibt es einen einzigartigen Kommentar-Knoten. Er tut nichts, hat weder Eing\u00e4nge noch Ausg\u00e4nge. Sein Zweck besteht darin, eine Erl\u00e4uterung im Diagramm zu sein.<\/p>\n<p>Was ist \u201e<b>Ereignis<\/b>\u00bb? <b>Ereignis<\/b> \u2014 das Auftreten neuer Daten in einem Knoten. Zum Beispiel geh\u00f6ren zu den Ereignissen: \u00c4nderung des Status eines Eingangs (Knoten <b>Input<\/b>), Empfang von Daten von einem anderen Ger\u00e4t (Knoten <b>MQTT<\/b> und <b>UDP<\/b>), Ablauf eines festgelegten Zeitintervalls (Knoten <b>Timer<\/b> und <b>Delay<\/b>) und so weiter.<\/p>\n<p>Warum sind Ereignisse notwendig? Um festzustellen, in welchem Knoten neue Daten aufgetreten sind und welche Knoten im Zusammenhang mit dem Eintreffen neuer Daten ge\u00e4ndert werden m\u00fcssen. Ein Ereignis \u201ewandert\u201c durch die Kette von Knoten, bis alle Knoten durchlaufen sind, deren Zustand \u00fcberpr\u00fcft und ge\u00e4ndert werden muss.<\/p>\n<p>Alle Knoten lassen sich in zwei Kategorien einteilen. <br \/>\nKnoten, die Ereignisse generieren k\u00f6nnen, nennen wir \u201e<b>aktive Knoten<\/b>\u00bb.<br \/>\nKnoten, die keine Ereignisse generieren k\u00f6nnen, nennen wir \u201e<b>passive Knoten<\/b>\u00bb.<\/p>\n<p>Wenn ein Knoten ein Ereignis generiert (das hei\u00dft, neue Daten an seinem Ausgang erscheinen), \u00e4ndert sich im Allgemeinen der Zustand der gesamten Kette von Knoten, die mit dem Ausgang des Ereignis-generierenden Knotens verbunden sind.<\/p>\n<p>Um es verst\u00e4ndlich zu machen, betrachten wir ein Beispiel im Bild.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie aktiven Knoten hier sind - Input1, Input2 und Input3. Die anderen Knoten sind passiv. Schauen wir uns an, was passiert, wenn ein bestimmter Eingang geschlossen wird. Die Ergebnisse sind zur besseren \u00dcbersicht in einer Tabelle zusammengefasst.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWie wir sehen, wird beim Auftreten eines Ereignisses eine Kette vom Ursprungs-Knoten des Ereignisses bis zum Endknoten aufgebaut. Der Zustand der Knoten, die nicht in die Kette einbezogen werden, \u00e4ndert sich nicht.<\/p>\n<p>Es stellt sich die berechtigte Frage, was passiert, wenn zwei oder sogar mehrere Ereignisse gleichzeitig auftreten?<\/p>\n<p>Als Liebhaber der Kreativit\u00e4t von Gleb Anfilov m\u00f6chte ich den neugierigen Fragesteller auf sein Buch \u201eFlucht vor den Wunder\u201c verweisen. Es nennt sich \u201eRelativit\u00e4tstheorie f\u00fcr die Kleinsten\u201c, in dem gut erkl\u00e4rt wird, was \u201egleichzeitig\u201c ist und wie man damit lebt.<\/p>\n<p>Aber rein praktisch ist alles viel einfacher: Bei Auftreten von zwei oder sogar mehreren Ereignissen werden nacheinander alle Ketten von jedem Ereignis-Ursprung der Reihe nach aufgebaut und verarbeitet, ohne dass es irgendwelche Wunder gibt.<\/p>\n<p>Die n\u00e4chste durchaus legale Frage eines neugierigen Lesers ist: Was passiert, wenn die Knoten zu einem Ring verbunden werden? Oder, wie man unter diesen Klugschei\u00dfern sagt \u2013 eine R\u00fcckkopplung einf\u00fchren. Das bedeutet, den Ausgang eines Knotens mit dem Eingang des vorhergehenden Knotens zu verbinden, sodass der Zustand des Ausgangs dieses Knotens den Zustand seines Eingangs beeinflusst. Es ist Ihnen nicht erlaubt, den Ausgang eines Knotens direkt mit seinem Eingang zu verbinden. <b>ElDraw<\/b>. Indirekt, wie in der Abbildung unten, ist dies jedoch m\u00f6glich.<\/p>\n<p>Also, was passiert in diesem Fall? Die Antwort ist sehr \"bestimmt\": es h\u00e4ngt davon ab, welche Knoten. Lassen Sie uns das Beispiel in der Abbildung betrachten.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWenn die Kontakte des Eingangs Input1 am oberen Eingang des Knotens A ge\u00f6ffnet sind \u2013 0. Am Ausgang des Knotens A ebenfalls 0. Am Ausgang des Knotens B \u2013 1. Und schlie\u00dflich am unteren Eingang des Knotens A \u2013 1. Alles klar. Wer es nicht klar ist \u2013 schauen Sie sich die Beschreibung an, wie die Knoten \"UND\" und \"NICHT\" funktionieren.<\/p>\n<p>Nun schlie\u00dfen wir die Kontakte des Eingangs Input1, das hei\u00dft, wir geben am oberen Eingang des Knotens A eine Eins ein. Wer mit Elektronik vertraut ist, wei\u00df, dass wir im Grunde ein klassisches Schema eines Generators mit logischen Elementen erhalten. Und theoretisch sollte ein solches Schema unendlich Folgendes am Ausgang der Elemente A und B ausgeben: die Sequenz 1-0-1-0-1-0\u2026 und 0-1-0-1-0-1\u2026 Denn das Ereignis sollte den Zustand der Knoten A und B st\u00e4ndig \u00e4ndern, indem sie im Kreis 2-3-2-3\u2026 laufen!<\/p>\n<p>Aber in Wirklichkeit geschieht das nicht. Das Schema verf\u00e4llt in einen zuf\u00e4lligen Zustand \u2013 entweder bleibt das Relais eingeschaltet oder ausgeschaltet, oder es kann leicht summen, indem es mehrmals hintereinander ein- und ausgeschaltet wird. Alles h\u00e4ngt vom Wetter am S\u00fcdpol des Mars ab. Und hier ist der Grund, warum das geschieht.<\/p>\n<p>Das Ereignis am Knoten Input1 \u00e4ndert den Zustand des Knotens A, dann des Knotens B und so weiter im Kreis mehrere Male. Das Programm erkennt die \"Schleife\" des Ereignisses und stoppt diesen Karneval zwangsweise. Danach werden die Zustands\u00e4nderungen der Knoten A und B bis zum Eintreten eines neuen Ereignisses blockiert. Der Moment, in dem das Programm entscheidet \u2013 \"es reicht, sich im Kreis zu drehen!\" \u2013 h\u00e4ngt im Allgemeinen von vielen Faktoren ab und kann als zuf\u00e4llig betrachtet werden.<\/p>\n<blockquote><p>Seien Sie vorsichtig, wenn Sie Knoten zu einem Ring verbinden \u2013 die Auswirkungen sind nicht immer offensichtlich! Seien Sie sich klar dar\u00fcber, was und warum Sie tun!<\/p><\/blockquote>\n<p> Kann man dennoch einen Generator auf den verf\u00fcgbaren Knoten bauen? Ja, das ist m\u00f6glich! Aber daf\u00fcr ist ein Knoten erforderlich, der selbst in der Lage ist, Ereignisse zu generieren. Und es gibt so einen Knoten - das ist die \"Verz\u00f6gerungslinie\". Schauen wir uns an, wie der Generator mit einer Periode von 6 Sekunden im untenstehenden Bild funktioniert.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten der Programmierung\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Schl\u00fcsselelement des Generators ist Knoten A - die Verz\u00f6gerungslinie. Wenn der Zustand des Eingangs der Verz\u00f6gerungslinie von 0 auf 1 ge\u00e4ndert wird, erscheint die 1 am Ausgang nicht sofort, sondern erst nach einer bestimmten Zeit. In unserem Fall sind das 3 Sekunden. Ebenso, wenn der Zustand des Eingangs der Verz\u00f6gerungslinie von 1 auf 0 \u00e4ndert, erscheint die 0 am Ausgang nach denselben 3 Sekunden. Die Verz\u00f6gerungszeit wird in Zehntelsekunden angegeben. Das bedeutet, der Wert von 30 steht f\u00fcr 3 Sekunden.<\/p>\n<p>Ein besonderes Merkmal der Verz\u00f6gerungslinie ist, dass sie ein Ereignis nach Ablauf der Verz\u00f6gerungszeit generiert.<\/p>\n<p>Angenommen, am Ausgang der Verz\u00f6gerungslinie war zun\u00e4chst 0. Nach dem Durchlaufen von Knoten B - dem Inverter - wird dieser 0 in 1 umgewandelt und gelangt an den Eingang der Verz\u00f6gerungslinie. Sofort passiert nichts. Am Ausgang der Verz\u00f6gerungslinie bleibt es bei 0, aber es beginnt der Countdown f\u00fcr die Verz\u00f6gerungszeit. Es vergehen 3 Sekunden. Und sofort erzeugt die Verz\u00f6gerungslinie ein Ereignis. Am Ausgang erscheint 1. Diese Eins wird nach dem Durchlaufen von Knoten B - dem Inverter - in 0 umgewandelt und gelangt an den Eingang der Verz\u00f6gerungslinie. Es vergehen weitere 3 Sekunden... und der Prozess wiederholt sich. Das hei\u00dft, alle 3 Sekunden \u00e4ndert sich der Zustand des Ausganges der Verz\u00f6gerungslinie von 0 auf 1 und dann von 1 auf 0. Das Relais klickt. Der Generator funktioniert. Die Impulsperiode betr\u00e4gt 6 Sekunden (3 Sekunden am Ausgang 0 und 3 Sekunden 1).<\/p>\n<p>In realen Schaltungen ist es jedoch normalerweise nicht n\u00f6tig, sogar dieses Beispiel zu verwenden. Es gibt spezielle Timer-Knoten, die wunderbar und ohne fremde Hilfe eine Sequenz von Impulsen mit einer festgelegten Periode erzeugen. Die Dauer von \"0\" und \"1\" in diesen Impulsen betr\u00e4gt jeweils die H\u00e4lfte der Periode.<\/p>\n<blockquote><p>Um wiederkehrende Aktionen festzulegen, verwenden Sie Timer-Knoten.<\/p><\/blockquote>\n<p> Ich m\u00f6chte darauf hinweisen, dass solche digitalen Signale, bei denen die Dauer von \"0\" und \"1\" gleich ist, als \"Meander\" bezeichnet werden. <\/p>\n<p>Ich hoffe, ich konnte etwas Klarheit dar\u00fcber verschaffen, wie die Verbreitung von Ereignissen zwischen Knoten funktioniert und was man vermeiden sollte.<\/p>\n<h4>Fazit und Links<\/h4>\n<p>\nDer Artikel ist kurz geraten, aber es ist ein Artikel als Antwort auf die aufgetretenen Fragen zu Knoten und Ereignissen.<\/p>\n<p>Mit der Weiterentwicklung der Firmware und dem Auftreten neuer Beispiele werde ich dar\u00fcber schreiben, wie man programmiert. <b>ShIoTiny<\/b> Kurzartikel, solange es f\u00fcr die Menschen interessant ist.<\/p>\n<p>Wie zuvor, das Schema, die Firmware, die Beispiele, die Beschreibung der Knoten und alles <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">andere hier.<\/a><\/noindex>.<\/p>\n<p>Fragen, W\u00fcnsche, Kritik \u2013 hierher: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463285\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438 \u043e \u0447\u0435\u043c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0422\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u041f\u041b\u041a ShIoTiny \u0434\u043b\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0443\u0442: ShIoTiny: \u043c\u0430\u043b\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0432\u0435\u0449\u0435\u0439 \u0438\u043b\u0438 \u00ab\u0437\u0430 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0434\u043e \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u00bb. \u041e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438, \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 ESP8266, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u041f\u041b\u041a ShIoTiny. \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28078,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37422","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:17:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ShIoTiny: Knoten, Verbindungen und Ereignisse oder Besonderheiten des Programmierens | ProHoster","description":"Die wichtigsten Thesen oder.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ShIoTiny: \u0443\u0437\u043b\u044b, \u0441\u0432\u044f\u0437\u0438 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c | ProHoster","og:description":"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u043b\u0438.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:17:33+00:00","article:modified_time":"2019-10-31T19:17:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37422","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 17:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:27:24","updated":"2026-01-23 17:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}