{"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\/es\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","title":{"rendered":"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.\" src=\"\/wp-content\/uploads\/2019\/08\/e5d6a9f6ca0fc445f705a645e5319c06.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Puntos principales o de qu\u00e9 trata este art\u00edculo<\/h4>\n<p>\nEl tema del art\u00edculo es la programaci\u00f3n visual de PLC <b>ShIoTiny<\/b> para el hogar inteligente, descrito aqu\u00ed: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463107\/\">ShIoTiny: automatizaci\u00f3n peque\u00f1a, Internet de las cosas o 'seis meses antes de las vacaciones'<\/a><\/noindex>.<\/p>\n<p><b>Muy brevemente<\/b> se abordan conceptos como <b>nodos<\/b>, <b>conexiones<\/b>, <b>eventos<\/b>, as\u00ed como las caracter\u00edsticas de carga y ejecuci\u00f3n de un programa visual en <b>ESP8266<\/b>, que es la base del PLC <b>ShIoTiny<\/b>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Introducci\u00f3n o algunas preguntas organizativas<\/h4>\n<p>\nEn el art\u00edculo anterior sobre mi desarrollo, hice una breve revisi\u00f3n de las capacidades del controlador <b>ShIoTiny<\/b>.<\/p>\n<p>Por extra\u00f1o que parezca, el p\u00fablico mostr\u00f3 un inter\u00e9s bastante fuerte y me hizo muchas preguntas. Algunos incluso propusieron comprarme el controlador de inmediato. No, no estoy en contra de ganar un poco de dinero, pero mi conciencia no me permite vender algo que a\u00fan est\u00e1 muy crudo en t\u00e9rminos de programaci\u00f3n.<\/p>\n<p>Por lo tanto, he publicado en GitHub los binarios de firmware y el esquema del dispositivo: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">firmware + instrucciones breves + esquema + ejemplos<\/a><\/noindex>.<\/p>\n<p>Ahora cualquier persona puede flashear el ESP-07 y jugar con el firmware. Si a alguien realmente le interesa una placa como la de la foto, tengo unas cuantas. Escriban a mi correo <b>shiotiny@yandex.ru<\/b>. Pero, como dec\u00eda el inolvidable Ogurtsov: '\u00a1No me hago responsable de nada!'.<\/p>\n<p>As\u00ed que, vayamos al grano: \u00bfqu\u00e9 es &#171;<b>nodo<\/b>&#187; (nodo) y &#171;<b>evento<\/b>&#171;? \u00bfC\u00f3mo se ejecuta el programa?<\/p>\n<p>Como de costumbre, comenzaremos en orden: desde la carga del programa.<\/p>\n<h4>C\u00f3mo se carga el programa<\/h4>\n<p>\nEmpecemos por lo que sucede cuando presionamos el bot\u00f3n <b>Upload<\/b> en el editor <b>ElDraw<\/b> y nuestro esquema-programa, compuesto de hermosos cuadrados, se env\u00eda al dispositivo.<\/p>\n<p>En primer lugar, se construye una descripci\u00f3n en texto de nuestro esquema dibujado.<br \/>\nEn segundo lugar, se verifica si todas las entradas de los nodos est\u00e1n conectadas a las salidas. No debe haber entradas 'flotantes'. Si se encuentra tal entrada, el esquema no se cargar\u00e1 en ShIoTiny y el editor mostrar\u00e1 una advertencia correspondiente.<\/p>\n<p>Si todo ha salido bien, el editor env\u00eda a ShIoTiny la descripci\u00f3n en texto del esquema nodo por nodo. Por supuesto, el esquema existente en ShIoTiny se elimina primero. La descripci\u00f3n en texto obtenida se guarda en la memoria FLASH.<\/p>\n<p>Por cierto, si deseas eliminar el esquema del dispositivo, simplemente carga en \u00e9l un esquema vac\u00edo (que no contenga ning\u00fan elemento-nodo).<\/p>\n<p>Una vez que todo el esquema del programa se ha cargado en el PLC ShIoTiny, comienza a \u00abejecutarse\u00bb. \u00bfQu\u00e9 significa esto?<\/p>\n<p>Cabe se\u00f1alar que los procesos de carga del esquema desde la memoria FLASH al encender y al recibir el esquema del editor son id\u00e9nticos.<\/p>\n<p>Primero se crea objetos-nodos bas\u00e1ndose en su descripci\u00f3n.<br \/>\nLuego se establece la conexi\u00f3n entre los nodos. Es decir, se generan enlaces de salidas a entradas y de entradas a salidas.<\/p>\n<p>Y solo despu\u00e9s de todo esto se inicia el ciclo principal de ejecuci\u00f3n del programa.<\/p>\n<p>Escrib\u00ed mucho, pero todo el proceso \u2014desde la \u00abcarga\u00bb del esquema desde la memoria FLASH hasta el lanzamiento del ciclo principal\u2014 toma fracciones de segundo para un esquema de 60-80 nodos.<\/p>\n<p>\u00bfC\u00f3mo funciona el ciclo principal? Muy simple. Primero espera la aparici\u00f3n de un evento en alg\u00fan nodo, luego procesa este evento. Y as\u00ed sin fin. Bueno, o hasta que se cargue un nuevo esquema en ShIoTiny. <b>eventos<\/b> Ya he mencionado varias veces cosas como<\/p>\n<p>. Pero, \u00bfqu\u00e9 significan desde el punto de vista del software? De esto hablaremos hoy. <b>eventos<\/b>, <b>nodos<\/b> y <b>conexiones<\/b>Nodos, conexiones y eventos<\/p>\n<h4>Basta con mirar ejemplos de esquemas-programas para<\/h4>\n<p>\n, para entender que el esquema consta de solo dos entidades: nodos (o elementos) y conexiones entre ellos. <b>ShIoTiny<\/b>Nodo<\/p>\n<p><b>nodo<\/b>, <b>elemento del esquema<\/b> o <b>\u2014 es una representaci\u00f3n virtual de alguna<\/b> acci\u00f3n <b>sobre los datos. Esto puede ser una operaci\u00f3n aritm\u00e9tica, una operaci\u00f3n l\u00f3gica o cualquier otra operaci\u00f3n que se nos ocurra. Lo principal es que el nodo tiene una entrada y una salida.<\/b> Entrada<\/p>\n<p><b>Entrada<\/b> \u2014 es el lugar donde el nodo acepta datos. Las im\u00e1genes de las entradas son puntos que siempre est\u00e1n a la izquierda del nodo.<\/p>\n<p><b>Salida<\/b> \u2014 es el lugar de donde se extrae el resultado del trabajo del nodo. Las im\u00e1genes de las salidas son puntos que siempre est\u00e1n a la derecha del nodo.<\/p>\n<p>Algunos nodos no tienen entradas. Tales nodos generan el resultado dentro de s\u00ed mismos. Por ejemplo, un nodo-constante o un nodo-sensor: no necesitan datos de otros nodos para informar un resultado.<\/p>\n<p>Otros nodos, por el contrario, no tienen salidas. Son nodos que representan, por ejemplo, dispositivos ejecutores (reles u otros similares). Aceptan datos, pero no generan un resultado de c\u00e1lculo disponible para otros nodos.<\/p>\n<p>Adem\u00e1s, hay un nodo-comentario \u00fanico. No hace nada, no tiene entradas ni salidas. Su prop\u00f3sito es servir como explicaci\u00f3n en el esquema.<\/p>\n<p>\u00bfQu\u00e9 es \u00ab<b>evento<\/b>\u00bb? <b>Evento<\/b> \u2014 es la aparici\u00f3n de nuevos datos en alg\u00fan nodo. Por ejemplo, los eventos incluyen: cambio de estado de entrada (nodo <b>Entrada<\/b>), recepci\u00f3n de datos de otro dispositivo (nodos <b>MQTT<\/b> y <b>UDP<\/b>), expiraci\u00f3n de un intervalo de tiempo espec\u00edfico (nodos <b>Timer<\/b> y <b>Retraso<\/b>) y as\u00ed sucesivamente.<\/p>\n<p>\u00bfPara qu\u00e9 sirven los eventos? Pues para determinar en qu\u00e9 nodo han surgido nuevos datos y qu\u00e9 estados de los nodos necesitan ser cambiados debido a la recepci\u00f3n de nuevos datos. Un evento, de alguna manera, \"pasar\u00e1\" a trav\u00e9s de la cadena de nodos, hasta que se revise y se cambie el estado de todos los nodos que necesitan ser verificados.<\/p>\n<p>Todos los nodos pueden dividirse en dos categor\u00edas. <br \/>\nA los nodos que pueden generar eventos los llamaremos \"<b>nodos activos<\/b>\u00bb.<br \/>\nA los nodos que no pueden generar eventos los llamaremos \"<b>nodos pasivos<\/b>\u00bb.<\/p>\n<p>Cuando un nodo genera un evento (es decir, cuando aparecen nuevos datos en su salida), cambia en general el estado de toda la cadena de nodos conectados a la salida del nodo generador del evento.<\/p>\n<p>Para que sea claro, consideremos el ejemplo en la figura.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.\" src=\"\/wp-content\/uploads\/2019\/08\/41b53ae925e85c3f272adec876ab3151.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLos nodos activos aqu\u00ed son \u2014 Input1, Input2 y Input3. Los dem\u00e1s nodos son pasivos. Veamos qu\u00e9 sucede cuando se cierra una entrada u otra. Los resultados se han resumido en una tabla para mayor comodidad.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.\" src=\"\/wp-content\/uploads\/2019\/08\/0a8435184f85e919f763048120e6e780.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo podemos ver, al ocurrir un evento, se construye una cadena desde el nodo fuente del evento hasta el nodo final. El estado de aquellos nodos que no forman parte de la cadena no cambia.<\/p>\n<p>Surge la pregunta leg\u00edtima, \u00bfqu\u00e9 suceder\u00e1 cuando ocurran dos o m\u00e1s eventos simult\u00e1neamente?<\/p>\n<p>Como amante de la creatividad de Gleb Anfilov, me arrastra a remitir al curioso preguntador a su libro \"Huida de las sorpresas\". Es como una \"teor\u00eda de la relatividad para los m\u00e1s peque\u00f1os\", en la que se explica bien qu\u00e9 significa \"simult\u00e1neamente\" y c\u00f3mo vivir con ello.<\/p>\n<p>Pero en t\u00e9rminos pr\u00e1cticos, todo es mucho m\u00e1s simple: al ocurrir dos o varios eventos, se construyen y procesan secuencialmente todas las cadenas de cada fuente de evento por turno, y no hay nada extraordinario.<\/p>\n<p>La siguiente pregunta leg\u00edtima de un lector curioso es: \u00bfqu\u00e9 pasar\u00e1 si conectamos los nodos en un anillo? O, como se suele decir entre los listillos, introducir retroalimentaci\u00f3n. Es decir, conectar la salida de uno de los nodos a la entrada del nodo anterior de modo que el estado de salida de este nodo influya en el estado de su propia entrada. El editor no te permitir\u00e1 conectar directamente la salida del nodo con su propia entrada. <b>ElDraw<\/b>. Pero de forma indirecta, como en la ilustraci\u00f3n a continuaci\u00f3n, esto es posible.<\/p>\n<p>Entonces, \u00bfqu\u00e9 suceder\u00e1 en este caso? La respuesta es bastante \"definida\": depende de qu\u00e9 nodos estemos hablando. Veamos un ejemplo en la imagen.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.\" src=\"\/wp-content\/uploads\/2019\/08\/7a640c3abfd4868b87f415bce93e4918.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCuando los contactos de entrada Input1 est\u00e1n abiertos en la entrada superior del nodo A \u2014 0. En la salida del nodo A, tambi\u00e9n 0. En la salida del nodo B \u2014 1. Y, finalmente, en la entrada inferior del nodo A \u2014 1. Todo claro. Aquellos a quienes no les queda claro, pueden ver a continuaci\u00f3n la descripci\u00f3n de c\u00f3mo funcionan los nodos \"Y\" y \"NO\".<\/p>\n<p>Ahora cerraremos los contactos de entrada Input1, es decir, aplicaremos un uno a la entrada superior del nodo A. Aquellos que est\u00e1n familiarizados con la electr\u00f3nica saben que, de hecho, obtendremos un esquema cl\u00e1sico de generador de elementos l\u00f3gicos. Y en teor\u00eda, este esquema deber\u00eda producir de manera infinita en las salidas de los elementos A y B las secuencias 1-0-1-0-1-0\u2026 y 0-1-0-1-0-1-\u2026. El evento deber\u00eda cambiar constantemente el estado de los nodos A y B, corriendo en c\u00edrculos 2-3-2-3-\u2026!<\/p>\n<p>Pero en realidad esto no ocurre. El esquema caer\u00e1 en un estado aleatorio \u2014 o el rel\u00e9 permanecer\u00e1 encendido o apagado, o puede que emita un ligero zumbido encendi\u00e9ndose y apag\u00e1ndose varias veces seguidas. Todo depende del clima en el polo sur de Marte. Y aqu\u00ed est\u00e1 la raz\u00f3n de esto.<\/p>\n<p>El evento en el nodo Input1 cambia el estado del nodo A, luego del nodo B y as\u00ed sucesivamente en c\u00edrculo varias veces. El programa detecta la \"retroalimentaci\u00f3n\" del evento y fuerza a que este carnaval se detenga. Despu\u00e9s de esto, el cambio en los estados de los nodos A y B se bloquea hasta que ocurra un nuevo evento. El momento en el que el programa decide que \"\u00a1ya es suficiente de girar en c\u00edrculos!\" depende de muchos factores y se puede considerar aleatorio.<\/p>\n<blockquote><p>\u00a1Ten cuidado al conectar nodos en anillo; los efectos no siempre ser\u00e1n evidentes! Ten una clara comprensi\u00f3n de lo que haces y por qu\u00e9 lo haces.<\/p><\/blockquote>\n<p> \u00bfEs posible construir un generador con los nodos que tenemos disponibles? \u00a1S\u00ed, es posible! Pero para ello se necesita un nodo que pueda generar eventos por s\u00ed mismo. Y existe tal nodo: es la \"l\u00ednea de retraso\". Veamos c\u00f3mo funciona el generador con un per\u00edodo de 6 segundos en la imagen de abajo.<\/p>\n<p><img decoding=\"async\" alt=\"ShIoTiny: nodos, conexiones y eventos, o caracter\u00edsticas del dibujo de programas.\" src=\"\/wp-content\/uploads\/2019\/08\/7dc1babedec97fb8177b846c760ff44e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEl elemento clave del generador es el nodo A: la l\u00ednea de retraso. Si se cambia el estado de la entrada de la l\u00ednea de retraso de 0 a 1, el 1 en la salida no aparecer\u00e1 de inmediato, sino solo despu\u00e9s de un tiempo determinado. En nuestro caso, son 3 segundos. De la misma manera, si se cambia el estado de la entrada de la l\u00ednea de retraso de 1 a 0, el 0 en la salida aparecer\u00e1 despu\u00e9s del mismo tiempo de 3 segundos. El tiempo de retraso se establece en d\u00e9cimas de segundo. Es decir, el valor 30 significa 3 segundos.<\/p>\n<p>La caracter\u00edstica de la l\u00ednea de retraso es que genera un evento despu\u00e9s de que transcurre el tiempo de retraso.<\/p>\n<p>Supongamos que inicialmente en la salida de la l\u00ednea de retraso hab\u00eda 0. Despu\u00e9s de pasar por el nodo B: el inversor, este 0 se convierte en 1 y va a la entrada de la l\u00ednea de retraso. No ocurre nada de inmediato. En la salida de la l\u00ednea de retraso permanece 0, pero el conteo del tiempo de retraso se inicia. Pasan 3 segundos. Y de inmediato la l\u00ednea de retraso genera un evento. En su salida aparece 1. Este uno, despu\u00e9s de pasar por el nodo B: el inversor, se convierte en 0 y va a la entrada de la l\u00ednea de retraso. Pasan otros 3 segundos... y el proceso se repite. Es decir, cada 3 segundos el estado de la salida de la l\u00ednea de retraso cambia de 0 a 1 y luego de 1 a 0. El rel\u00e9 hace clic. El generador funciona. El per\u00edodo de pulsos es de 6 segundos (3 segundos en salida cero y 3 segundos en uno).<\/p>\n<p>Sin embargo, en circuitos reales, generalmente no es necesario usar este ejemplo. Existen nodos temporizadores especiales que generan de manera excelente y sin ayuda externa una secuencia de pulsos con un per\u00edodo dado. La duraci\u00f3n del \"cero\" y del \"uno\" en estos pulsos es igual a la mitad del per\u00edodo.<\/p>\n<blockquote><p>Para establecer acciones peri\u00f3dicas, utiliza nodos temporizadores.<\/p><\/blockquote>\n<p> Cabe destacar que tales se\u00f1ales digitales, donde la duraci\u00f3n del \"cero\" y del \"uno\" son iguales, se llaman \"meandro\". <\/p>\n<p>Espero haber aclarado un poco la cuesti\u00f3n de c\u00f3mo se propagan los eventos entre nodos y qu\u00e9 no se debe hacer.<\/p>\n<h4>Conclusi\u00f3n y referencias<\/h4>\n<p>\nEl art\u00edculo result\u00f3 ser breve, pero es un art\u00edculo-respuesta a las preguntas surgidas sobre nodos y eventos.<\/p>\n<p>A medida que evoluciona el firmware y aparecen nuevos ejemplos, escribir\u00e9 sobre c\u00f3mo programar <b>ShIoTiny<\/b> art\u00edculos breves, mientras sea interesante para las personas.<\/p>\n<p>Como antes, el esquema, firmware, ejemplos, descripci\u00f3n de nodos y todo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/shiotiny\/ShIoTinyBin\">lo dem\u00e1s est\u00e1 aqu\u00ed<\/a><\/noindex>.<\/p>\n<p>Preguntas, sugerencias, cr\u00edticas \u2014 aqu\u00ed: <b>shiotiny@yandex.ru<\/b><br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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: nodos, conexiones y eventos o caracter\u00edsticas del dibujo de programas | ProHoster","description":"Puntos principales o.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/shiotiny-uzly-svyazi-i-sobytiya-ili-osobennosti-risovaniya-programm","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/37422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=37422"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/37422\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/28078"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=37422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=37422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=37422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}