<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[RemoteXY community — Read timeout error, Write error: Broken pipe]]></title>
		<link>https://forum.remotexy.com/viewtopic.php?id=1292</link>
		<atom:link href="https://forum.remotexy.com/extern.php?action=feed&amp;tid=1292&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[The most recent posts in Read timeout error, Write error: Broken pipe.]]></description>
		<lastBuildDate>Tue, 06 Apr 2021 05:30:09 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3790#p3790</link>
			<description><![CDATA[<p>Если вы хотите использовать SoftSerial, то вам необходимо подключить библиотеку SoftwareSerial перед подключением RemoteXY:<br /></p><div class="codebox"><pre><code>#include &lt;SoftwareSerial.h&gt;
#include &lt;RemoteXY.h&gt;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Tue, 06 Apr 2021 05:30:09 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3790#p3790</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3773#p3773</link>
			<description><![CDATA[<p>Ранее в топике<br /></p><div class="quotebox"><cite>bukinay1 wrote:</cite><blockquote><p>Выложите, как пример для &quot;новой&quot; библиотеки, подключение для двух потоков<br />на модулях ESP8266 Wi-Fi и модуле HM-10&nbsp; для кнопки Button</p></blockquote></div><p>был приведен пример добавления модуля HM-10 к WI-FI соединению.<br />После того, как удалось запустить, по приведенной рекомендации, Arduino Pro mini с ESP-01 на скорости 115200 бод решил добавить модуль блютуз HM-10. Добавил строчку в код<br /></p><div class="codebox"><pre><code>void setup() {
  RemoteXY_Init ();
  remotexy-&gt;addConnection (new CRemoteXYStream_SoftSerial (10,11, 9600));  // added line, RX, TX, Speed
}</code></pre></div><p>При компиляции скетча получил сообщение об ошибке.<br /></p><div class="codebox"><pre><code>exit status 1
expected type-specifier before &#039;CRemoteXYStream_SoftSerial&#039;</code></pre></div><p>Что сделано неверно?</p>]]></description>
			<author><![CDATA[null@example.com (bukinay1)]]></author>
			<pubDate>Thu, 01 Apr 2021 15:51:59 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3773#p3773</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3772#p3772</link>
			<description><![CDATA[<p>Внес в скетч изменения вот такого типа<br /></p><div class="codebox"><pre><code>uint32_t time;
void loop () {
  RemoteXY_Handler ();
  time = millis ();
  my_task_handler ();

  while (millis () - time  &lt; 5000) {  // ждем когда закончатся 5 секунд но вызываем обработчик RemoteXY
    RemoteXY_Handler ();
  }
}</code></pre></div><p>Ардуино подключился на скорости 115200 бод<br />Респект!</p>]]></description>
			<author><![CDATA[null@example.com (bukinay1)]]></author>
			<pubDate>Thu, 01 Apr 2021 08:28:44 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3772#p3772</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3771#p3771</link>
			<description><![CDATA[<p>1.По сути, ниже приведенная конструкция&nbsp; это второй пример в вашем ответе.<br />&nbsp; &nbsp;Вызываем обработчик <strong>RemoteXY_Handler</strong> () в <em>коде ожидания</em> до завершения 5 секундного цикла</p><div class="codebox"><pre><code>  void loop()  {

 // Код программы
 ....................
 //Ожидание завершения программы
 do
    {    
    RemoteXY_Handler (); 
    
  // Обработчик кнопок---
    
  }
   while (millis () - time  &lt; 5000)
  
}</code></pre></div><p>2. <strong>my_task_handler ();</strong> - поясните про эту функцию</p><p>Спасибо за быстрый ответ</p>]]></description>
			<author><![CDATA[null@example.com (bukinay1)]]></author>
			<pubDate>Thu, 01 Apr 2021 08:06:13 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3771#p3771</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3769#p3769</link>
			<description><![CDATA[<p>Понятно.<br />Во всех рекомендациях не применять delay () имеется ввиду как раз то что у вас не должно быть задержек в основном цикле loop () что бы&nbsp; RemoteXY_Handler () вызывался как можно чаще. Если он вызывается как у вас один раз в 5 секунд, то и связь у вас так же обрабатывается один раз в 5 секунд, и конечно же обрывается по таймауту.<br />Вы просто вместо delay () написали свой, но суть от этого не поменялась.<br />Или измените программу, или добавьте в ваш цикл ожидания вызов RemoteXY_Handler ().</p><div class="codebox"><pre><code>uint32_t time = 0;
void loop () {
  RemoteXY_Handler ();
  if (millis () - time  &gt;= 5000) {  // вызываем нашу задачу каждые 5 секунд
    time = millis ();
    my_task_handler ();
  }
}</code></pre></div><p>или так</p><div class="codebox"><pre><code>uint32_t time;
void loop () {
  RemoteXY_Handler ();
  time = millis ();
  my_task_handler ();

  while (millis () - time  &lt; 5000) {  // ждем когда закончатся 5 секунд но вызываем обработчик RemoteXY
    RemoteXY_Handler ();
  }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Thu, 01 Apr 2021 07:01:00 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3769#p3769</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3768#p3768</link>
			<description><![CDATA[<p>Скетч состоит из двух файлов. Второй -это отдельно вынесенные функции. При необходимости добавлю этот второй файл.<br />Обратите внимание, что если поместить <strong>RemoteXY_Handler ();</strong> вот таким образом<br /></p><div class="codebox"><pre><code>do
    {    
    RemoteXY_Handler (); //ВНИМАНИЕ!!! ЕСЛИ RemoteXY_Handler (); включить здесь, то программа работает!!!
..........
}</code></pre></div><p> Смотрите в конце скетча. Но это противоречит вашему алгоритму</p><div class="codebox"><pre><code>/*
   -- Kotel Lite_WIFI --
   
   This source code of graphical user interface 
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 2.4.3 or later version 
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/                   
     - for ANDROID 4.5.1 or later version;
     - for iOS 1.4.1 or later version;
    
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
    
 Скетч использует 26162 байт (85%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1524 байт (74%) динамической памяти, оставляя 524 байт для локальных переменных. Максимум: 2048 байт.

*/  
 
//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__ESP8266_HARDSERIAL

#include &lt;RemoteXY.h&gt;

// настройки соединения 
#define REMOTEXY_SERIAL Serial
//#define REMOTEXY_SERIAL_SPEED 115200
//#define REMOTEXY_SERIAL_SPEED 9600
//#define REMOTEXY_SERIAL_SPEED 19200
#define REMOTEXY_SERIAL_SPEED 38400

#define REMOTEXY_WIFI_SSID &quot;XXXXXXX&quot;
#define REMOTEXY_WIFI_PASSWORD &quot;12345678&quot;
#define REMOTEXY_SERVER_PORT 6377



// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,0,0,124,0,123,3,10,13,4,
  130,0,96,50,4,1,1,14,130,0,
  90,38,10,1,1,14,130,0,68,38,
  10,1,1,1,130,1,2,0,96,4,
  2,26,130,1,29,27,24,26,1,17,
  130,1,23,37,6,16,1,17,130,1,
  23,27,6,10,1,17,130,1,3,17,
  15,10,1,17,130,1,18,17,21,10,
  1,17,67,4,7,21,6,5,1,24,
  29,4,67,4,35,36,6,6,1,24,
  29,4,130,1,0,27,23,26,1,17,
  67,4,7,36,6,6,1,24,29,4,
  67,4,14,7,9,6,1,24,29,5,
  129,0,5,17,11,3,1,8,208,146,
  208,176,208,189,208,189,208,176,209,143,
  0,129,0,37,48,5,3,1,8,208,
  151,208,176,208,187,0,129,0,60,34,
  14,2,1,8,208,147,208,190,209,128,
  209,143,209,135,208,176,209,143,32,208,
  178,208,190,208,180,208,176,0,129,0,
  50,60,8,2,1,8,208,146,208,176,
  208,189,208,189,208,176,209,143,32,0,
  129,0,50,56,9,2,1,8,208,154,
  208,190,208,188,208,189,208,176,209,130,
  208,176,0,67,5,59,58,9,5,1,
  24,28,6,67,5,59,53,9,5,1,
  24,29,6,67,5,60,36,9,5,1,
  8,22,6,67,5,90,48,8,5,1,
  24,29,6,129,0,71,45,15,2,1,
  8,208,158,208,177,209,128,208,176,209,
  130,208,186,208,176,32,208,190,208,177,
  209,137,208,176,209,143,0,66,129,68,
  53,22,5,1,9,29,66,129,68,58,
  22,5,1,9,28,129,0,78,22,0,
  3,1,17,0,67,5,83,27,10,5,
  1,24,29,6,130,1,79,24,4,9,
  1,29,129,0,84,24,10,2,1,8,
  208,148,209,139,208,188,208,190,209,133,
  208,190,208,180,0,67,6,60,0,8,
  5,1,33,28,5,67,6,60,5,8,
  5,1,9,29,5,131,1,0,57,8,
  5,1,2,31,49,0,131,0,9,57,
  8,5,2,2,31,50,0,129,0,29,
  17,9,3,1,8,208,154,208,190,209,
  130,208,181,208,187,0,129,0,6,5,
  6,5,1,8,226,152,148,0,129,0,
  41,1,18,2,1,33,71,32,208,191,
  209,128,208,190,208,179,208,189,208,190,
  208,183,44,32,208,188,194,179,47,208,
  188,208,181,209,129,0,68,21,2,4,
  96,51,2,8,2,135,1,5,19,129,
  0,49,7,9,2,1,33,81,44,32,
  208,188,194,179,47,208,188,208,181,209,
  129,0,66,129,68,0,32,5,1,33,
  28,130,1,77,33,14,11,1,17,65,
  14,78,37,12,4,1,129,0,23,5,
  9,6,1,2,32,226,152,128,32,0,
  129,0,15,0,6,7,1,31,226,152,
  129,0,65,14,30,20,7,6,1,67,
  5,95,10,5,3,1,32,13,5,67,
  5,68,10,5,3,1,32,13,5,66,
  129,68,5,32,5,1,9,29,66,129,
  68,48,22,5,1,9,28,67,6,83,
  18,18,3,1,32,161,13,129,0,83,
  14,16,2,1,32,32,208,148,208,189,
  32,45,32,208,167,209,129,32,45,32,
  208,156,208,189,45,208,161,208,181,208,
  186,0,65,12,44,28,8,4,1,129,
  0,30,28,14,2,1,24,208,154,208,
  190,208,189,208,180,208,184,209,134,208,
  184,208,190,208,189,208,181,209,128,0,
  129,0,5,1,12,2,2,2,81,32,
  208,188,194,179,47,208,188,208,181,209,
  129,32,47,49,48,0,129,0,22,1,
  14,2,2,133,208,166,208,184,208,186,
  208,187,208,190,208,179,209,128,208,176,
  208,188,208,188,208,176,0,129,0,40,
  1,17,2,2,1,208,147,208,190,209,
  128,209,143,209,135,208,176,209,143,32,
  208,178,208,190,208,180,208,176,44,194,
  176,67,0,129,0,61,1,9,2,2,
  5,208,163,208,187,208,184,209,134,208,
  176,44,194,176,67,0,129,0,78,1,
  7,2,2,19,208,151,208,176,208,187,
  44,32,194,176,67,0,67,4,74,16,
  8,6,1,27,17,6,67,6,59,16,
  15,6,1,32,17,8,129,0,66,13,
  7,3,1,32,81,44,32,208,188,194,
  179,0,130,0,99,38,1,13,1,14,
  130,0,63,41,1,12,1,1 };
  
// структура определяет все переменные и события вашего интерфейса управления 
struct {

    // output variables
  char text_3[4];  // =строка UTF8 оканчивающаяся нулем 
  char text_1[4];  // =строка UTF8 оканчивающаяся нулем 
  char text_2[4];  // =строка UTF8 оканчивающаяся нулем 
  char text_4[5];  // =строка UTF8 оканчивающаяся нулем 
  char text_7[6];  // =строка UTF8 оканчивающаяся нулем 
  char text_6[6];  // =строка UTF8 оканчивающаяся нулем 
  char text_5[6];  // =строка UTF8 оканчивающаяся нулем 
  char text_8[6];  // =строка UTF8 оканчивающаяся нулем 
  int8_t level_3; // =0..100 положение уровня 
  int8_t level_4; // =0..100 положение уровня 
  char text_9[6];  // =строка UTF8 оканчивающаяся нулем 
  char text_10[5];  // =строка UTF8 оканчивающаяся нулем 
  char text_11[5];  // =строка UTF8 оканчивающаяся нулем 
  float onlineGraph_1_var1;
  float onlineGraph_1_var2;
  float onlineGraph_1_var3;
  float onlineGraph_1_var4;
  float onlineGraph_1_var5;
  int8_t level_11; // =0..100 положение уровня 
  uint8_t led_2_r; // =0..255 яркость красного цвета индикатора 
  uint8_t led_2_g; // =0..255 яркость зеленого цвета индикатора 
  uint8_t led_1_r; // =0..255 яркость красного цвета индикатора 
  uint8_t led_1_g; // =0..255 яркость зеленого цвета индикатора 
  char text_13[5];  // =строка UTF8 оканчивающаяся нулем 
  char text_14[5];  // =строка UTF8 оканчивающаяся нулем 
  int8_t level_1; // =0..100 положение уровня 
  int8_t level_2; // =0..100 положение уровня 
  char text_15[13];  // =строка UTF8 оканчивающаяся нулем 
  uint8_t led_3_r; // =0..255 яркость красного цвета индикатора 
  char text_12_0[6];  // =строка UTF8 оканчивающаяся нулем 
  char text_12[8];  // =строка UTF8 оканчивающаяся нулем 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////


#include &lt;TimerOne.h&gt; //прерывания

//Используем  Bounce2, хотя это не обязательно,так как используем сенсорные кнопки TTP223
#include &lt;Bounce2.h&gt;


#include &lt;OneWire.h&gt;


#include &lt;DallasTemperature.h&gt; 
#include &lt;Wire.h&gt; 
#include &lt;LiquidCrystal_I2C.h&gt;
LiquidCrystal_I2C lcd(0x3F,16,2);

///////////////////////////////////////////////////////////////////////////
#include &quot;RTClib.h&quot;//----------Расчет интервалов времени-----------------//
//TimeSpan;        //----------Функция для расчет интервалов времени--------//

int16_t ts ;    // переменная для хранения день, час....................//
uint32_t T_interval ;    // интервал, секунды                            //
uint32_t T_interval_0 ; // начало работы счетчика времени
/////////////////////////////////////////////////////////////////////////
//Кнопка

#define Kn1 7// кнопка  для Pro_mini

#define Signal_HL 9//выход Сигнализация1 (светодиод)для Pro_mini

float GAZ = 6.939;//принято 02.01.2016 для пересчета в м.куб/мес (мес =30.5 дня)
float GAZ_Q; //для пересчета в м.куб/тактб где такт =5 мсек

//Пользовательские символы  /* битовые маски*/

byte char1[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
};

byte char2[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};

byte char3[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
};

byte char4[8] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte char5[8] = {
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte char6[8] = {
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte char7[8] = {
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

byte char8[8] = { //символ градуса
  B11100,
  B10100,
  B10100,
  B11100,
  B00000,
  B00000,
  B00000,
  B00000,
};

#define ONE_WIRE_BUS 3// Датчики к 3 входу Pro mini

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&amp;oneWire);

DeviceAddress Thermometer1 = {// &quot;зал&quot;,  (28 FF F5 3D 63 15 02 07)
  0x28, 0xff, 0xf5, 0x3d, 0x63, 0x15, 0x02, 0x07
}; 

DeviceAddress Thermometer2 = { // &quot;ПК&quot;,  (28 FF 4C 54 63 15 02 B8)//
  0x28, 0xff, 0x4c, 0x54, 0x63, 0x15, 0x02, 0xb8
}; 

DeviceAddress Thermometer3 = { // &quot;ванная&quot;,  ( 28 FF 3B 43 63 15 03 64)

  0x28, 0xff, 0x3b, 0x43, 0x63, 0x15, 0x03, 0x64
}; 
DeviceAddress Thermometer4 = { // &quot;Улица&quot;,  (28 FF 11 40 63 15 03 A9)
  0x28, 0xff, 0x11, 0x40, 0x63, 0x15, 0x03, 0xa9
}; 

DeviceAddress Thermometer5 = { // &quot;горячая вода&quot;  0x28, (28 ff f0 53 63 15 02 50)
  0x28, 0xff, 0xf0, 0x53, 0x63, 0x15, 0x02, 0x50
}; 

DeviceAddress Thermometer6 = { // &quot;обратка в комнатеа&quot;, датчик DS18B20 (28 c8 42 e7 03 00 00 61)
  0x28, 0xc8, 0x42, 0xe7, 0x03, 0x00, 0x00, 0x61
}; 

DeviceAddress Thermometer7 = {  // &quot;обратка в ванной&quot;,  (28 FF 5E 42 63 15 03 28)
  0x28, 0xff, 0x5e, 0x42, 0x63, 0x15, 0x03, 0x28
}; 

DeviceAddress Thermometer8 = { // &quot;обратка  котел&quot;  (28 ff a1 3c 63 15 02 02)
  0x28, 0xff, 0xa1, 0x3c, 0x63, 0x15, 0x02, 0x02
}; 

DeviceAddress Thermometer9 = { // &quot;дымоход&quot;, датчик  (28 ff 4b 42 63 15 03 86)
  0x28, 0xff, 0x4b, 0x42, 0x63, 0x15, 0x03, 0x86
}; 

unsigned long currentMillis;//текущее время
unsigned long previousMillis;// &quot;текущее время предыдущего цикла&quot; для расчетов
//unsigned long print_previousMillis;//текущее время для печати
unsigned long index_time = 0;// число измерительных главных циклов от начала запуска программы (то же самое, что текущее время программы)
unsigned long Summa_time_OGO_1 = 0;    //счетчик циклов времени, работает когда котел включен
unsigned long index_kalibr = 0;// число измерительных главных циклов от начала Калибровки
unsigned long Summa_time_OGO_1_kalibr = 0;    //счетчик циклов времени, работает когда котел включен от начала калибровки
unsigned long Summa_temp; // временная переменная

const unsigned long OnTime = 5000; // длительность одного полного цикла измерения 5000 мсек(33 коррекция на частоту кварца)
unsigned long delta; //длительность рабочего цикла программы (все остальное ожидание завершения 5 сек)
int flag; //флаг цикла, =0 при выполнении внутри главного цикла, если =1 то переход к началу следующего главного цикла

//Массив
float Mass[16] = {0};         // массив для хранения прмежуточных значений температуры
//Mass[0] температура текущего датчика 1...9
//Mass[1] ...Mass[8] для хранения средних значений температуры
//Mass[9]хранит данные &quot;дымоход&quot; от предыдущего замера
//среднее датчика &quot;дымоход&quot; не сохраняются
float Cels[10] ;//температура текущего датчика 0...8 ;    [9]- хранит данные &quot;дымоход&quot; от предыдущего замера

float M_OGO[16] ; //[3...15] архивные значений K_OGO -(м3/мес);[3]- K_OGO_sredii (м3/мес);[0]- текущее значение K_OGO(м3/мес);
// M_OGO[1]- температура горячей воды в радиаторах (t5_горячая вода + t6_обратка в комнате)/2   усредненная за период Калибровки
// M_OGO[2] температурный напор(t1_зал - t4_улица) усредненый за период Калибровки

float g_1;                 //скорость изменения температуры &quot;дымохода&quot; - град/сек
float DT_1 = 0.2;         //пороговая скорость град/сек при нагреве котла
float DT_0 = -0.2;        //пороговая скорость град/сек при охлаждении котла
float K_OGO = 0;         //&quot;Коэффициент загрузки котла&quot;
float K_OGO_sredii = 0; //усредннный за период работы программы &quot;Коэффициент загрузки котла&quot;,
float K_OGO_kalibr = 0; //&quot;Коэффициент загрузки котла&quot; при Калибровки

int flag_OGO = 0;        // флаг котла, 0 - при охлаждени и 1 при нагреве котла
int print_OGO = 0;         //флаг для записи данных и вывод информации (1- вывод)

int time_OGO_1 = 0;    //счетчик циклов времени, работает когда котел включен в течении одного цикла
int time_OGO_0 = 0;    //счетчик циклов времени, работает когда котел отключен в течении одного цикла
//int OGO_line = 7;        //начальная строка с которой начинается ввод данных в таблицу сводных параметров

//флаги для вывода на экран lcd

int status_kalibr = false ;//калибровка отключена
int status_alarm = 0;//сигнализация отключена
//int menu =true;//флаг МЕНЮ_0
int Zima_Leto; //Zima_Leto = температура горячей воды (граница Зима/Лето)

int N_OGO = 0;    //счетчик числа измерений K_OGO
//int N_data = 170;// В теле симулятора данных
int Os_0 = 180;  // &quot;0%&quot; шкалы  (180 м3/час-мес)
int Os_1 = 420;  // &quot;100%&quot; шкалы (420 м3/час-мес)
char Znak[2];// хранит полуотсчеты ординат графика

// ---------Кнопки, меню-----------

Bounce knopka1 = Bounce();// Bounce () — инициализация объекта Bounce под именем &quot;knopka1&quot;

const unsigned long pressed_long = 2000; // долговременное нажатие = 2 секунды
const int num_modes = 2; // максимальный номер режима (0,1,2)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
//short int max_mode = num_modes + 1; // вспомогательная переменная
unsigned long pressed_moment; // момент нажатия кнопки
int current_mode = 0; // текущий режим

//---------------Сигнализация-------------------
int takt = true;//номер такта: 0,1


 //--------------Уровень=0..100 положение уровня ---------//
int va_1;
int Qmin =150; // начало шкалы (0%) = 150 м.куб/месяц
int Qmax =450; // конец шкалы (100%) = 450 м.куб/месяцп

float Q_temp; //временная переменная

void setup() {
    
    
     RemoteXY_Init (); 
  //Уровень=0..100 положение уровня 
  
  RemoteXY.level_1 = 1; 
  RemoteXY.level_2 = 1; 
  RemoteXY.level_3 = 1;
  RemoteXY.level_4 = 1;
 

        //-------------------Определим точность измерения температуры--------------//
  sensors.setResolution(Thermometer1, 10); //t1 - зал
  sensors.setResolution(Thermometer2, 10);  //t2 - ПК
  sensors.setResolution(Thermometer3, 10);  //t3 - ванная
  sensors.setResolution(Thermometer4, 10);  //t4 - улица

  sensors.setResolution(Thermometer5, 10);  //t5 - горячая вода
  sensors.setResolution(Thermometer6, 10);  //t6 - обратка в комнате
  sensors.setResolution(Thermometer7, 10);  //t7- обратка в ванной
  sensors.setResolution(Thermometer8, 10);  //t8 - обратка  котел

  sensors.setResolution(Thermometer9, 11);  //t9 - дымоход (11 бит, повышенная точность)

  lcd.init();   // initialize the lcd_I2C для Pro_mini
  
    lcd.backlight();//Включение подсветки дисплея.
    
   
   // ---------Регистрируем и запиваем свои пользовательские символы в память LCD ---------------//
  lcd.createChar(1, char1); 
  lcd.createChar(2, char2);
  lcd.createChar(3, char3);
  lcd.createChar(4, char4);
  lcd.createChar(5, char5);
  lcd.createChar(6, char6);
  lcd.createChar(7, char7);
  lcd.createChar(8, char8); //градус


pinMode(Kn1,INPUT);//настраивает pin , INPUT
digitalWrite(Kn1, HIGH);
 
knopka1.attach(Kn1);// устанавливает пин, к которому подключена кнопка и подключает на этом выводе встроенный подтягивающий резистор

knopka1.interval(5); // устанавливает время антидребезга в миллисекундах

pinMode(Signal_HL, OUTPUT); //
digitalWrite(Signal_HL, HIGH);//Включаем светодиод

Zima_Leto =25;// Zima_Leto = температура горячей воды (граница Зима/Лето)

GAZ_Q = float (GAZ *100 / 527040); //м.куб/такт есть цена одного 5 мс такта в м.куб

T_interval_0 = millis();// фиксация текущего времени в милисекундах запуска программы
previousMillis = T_interval_0;

}

  void loop()  {
     
     RemoteXY_Handler ();
     
//-------------------------- Сигнализация-------------------------------------
   
  if(flag_OGO ==true){//При ВКЛЮЧЕНИИ КОТЛА  мигает светодиод
  
  Timer1.initialize(500000); // set a timer of length 0.5 сек (500000) microseconds (or 0.1 sec - or 10Hz) 
  Timer1.attachInterrupt( timerIsr ); // timerIsr - Функция запускаемая при прерывании
  }
  else {Timer1.attachInterrupt(timerIsr_0);//
  }
//--------------------------END Сигнализация------------------------------------- 


  if (current_mode == 0)  {   //&quot;Температура&quot; -ГАСИМ значек &quot;/&quot;
     lcd.setCursor(2,1);
   lcd.print(&quot; &quot;);//значек &quot; &quot;
   }
  
  if (current_mode == 1)  {   //&quot;Параметры котла&quot; -ГАСИМ значек &quot;/&quot;
     lcd.setCursor(10,1);
   lcd.print(&quot; &quot;);//значек &quot; &quot;
   }
    
    
    //----------------СТАРТ подпрограммы измерения температуры
  
    sensors.requestTemperatures();    //Перевести все датчики в режим измерения температуры
  
  Cels[1] = Celsius(Thermometer1);
  Cels[2] = Celsius(Thermometer2);
  Cels[3] = Celsius(Thermometer3);
  Cels[4] = Celsius(Thermometer4);
  Cels[5] = Celsius(Thermometer5);
  Cels[6] = Celsius(Thermometer6);
  Cels[7] = Celsius(Thermometer7);
  Cels[8] = Celsius(Thermometer8);
  //Cels[9] = Celsius(Thermometer8);// используеться как переменная для расчетов далее
  
  Cels[0] = Celsius(Thermometer9);// в ячейку &quot;0&quot;
    

    ////////////////////////////////////////////////////////////////////////
    //----------- Вывод текущей температуры RemoteXY----------------------//
    ///////////////////////////////////////////////////////////////////////
    
  
    dtostrf(Cels[1],2,0,RemoteXY.text_1); 
      
    dtostrf(Cels[2],2,0,RemoteXY.text_2);   
      
    dtostrf(Cels[3],2,0,RemoteXY.text_3);   
      
    dtostrf(Cels[4],3,0,RemoteXY.text_4);   
      
    dtostrf(Cels[5],4,1,RemoteXY.text_5);   
      
    dtostrf(Cels[6],4,1,RemoteXY.text_6);

    dtostrf(Cels[7],4,1,RemoteXY.text_7);
  
    dtostrf(Cels[8],4,1,RemoteXY.text_8);

    dtostrf(Cels[0],5,1,RemoteXY.text_9); 
    
  //****************************Контроль ЗИМА-ЛЕТО или погасание котла**********************************//
  // ***Если температура горячей воды меньше чем 25 градусов, значит  Котел не греет = ( ЛЕТО или погас)/********//
  
  if (Cels[5] &lt; Zima_Leto) { // Котел не греет, значит ЛЕТО или погас
  RemoteXY.led_1_r = 0;// цвет фона, темный
  RemoteXY.led_1_g = 0;//
  }
  else {
  RemoteXY.led_1_r = 125;// желтый цвет
  RemoteXY.led_1_g = 125;//
  }

        ////---Сигнализация для RemoteXY --------------------//
  if (flag_OGO ==true) {// При ВКЛЮЧЕНИИ КОТЛА  мигает светодиод
    RemoteXY.led_2_r = 255;// тогда включаем красный цвет индикатора
  RemoteXY.led_2_g = 0;
  }// 
  else {                       // иначе
    RemoteXY.led_2_r = 0;     // 
  RemoteXY.led_2_g = 255;   //включаем зеленный цвет индикатора
  }

///////////////////////////////////////////////////////
//***************Расчеты*****************************//
/////////////////////////////////////////////////////////

  //--------------хранит в памяти сумму температур----------------------------

  for(int j=1; j &lt;9; j++) {//хранит в памяти сумму температур для расчета средних

  Mass[j-1] = Cels[j] + Mass[j-1];  //Mass[0...7] 
    
}

    //------------------------------ВЫДЕЛЕНИЕ особых точек---------------------------------------------
  
  if (index_time == 0)  {    //начальный цикл
      Cels[9] = Cels[0];  //запись начального значения до начала расчетов
    }
    
    g_1 = (Cels[0] - Cels[9])/5;  //Первая производная - скорость изменения температуры град/сек (5 это время между циклами, сек)

    Cels[9] = Cels[0];    //сохранили текущую температуру &quot;дымоход&quot; в ячейке массива

    //------------------------Установка флага flag_OGO по параметру DT---------------------------------

    if (g_1 &gt;= DT_1)  {    //котел включен
      flag_OGO = true;
    }

    if (g_1 &lt;= DT_0)   {    //котел отключен
      flag_OGO = false;
    }
  
    //-----------------------------считаем число циклов в течении которого котел включен/отключен---------

    if (flag_OGO == true) {      //котел включен / Калибровка
      time_OGO_1++  ;            //счетчик циклов времени, работает когда котел включен в течении одного цикла нагрев/охлаждение
    Summa_time_OGO_1 ++ ;   // число измерительных главных циклов (5 мс) от начала старта когда котел включен
    
    if (status_kalibr == true) {  //Калибровка 
    Summa_time_OGO_1_kalibr ++;//счетчик циклов времени, работает когда котел включен от начала калибровки
    }

    }
    
    //----------------------------Расчет среднего значения &quot;коэффициента загрузки котла&quot; / Калибровка --------------
    index_time++ ;
    K_OGO_sredii =  100.0 * Summa_time_OGO_1 / index_time ;
    
    if (status_kalibr == true) {  //Калибровка 
    
    M_OGO[1] =M_OGO[1]*index_kalibr;//сумма температура горячей воды в радиаторах предыдущего цикла
    M_OGO[1] = M_OGO[1] + (Cels[5] + Cels[6])/2; //температура горячей воды в радиаторах
    M_OGO[2] =M_OGO[2]*index_kalibr;//сумма температурных напоров предыдущего цикла
    M_OGO[2] = M_OGO[2] + (Cels[1] - Cels[4]); //сумма температурных напоров = (t_зал - t_улица)
        
    index_kalibr++;//считает время работы в режиме Калибровка
    M_OGO[1] = M_OGO[1]/index_kalibr; //dR - средняя температура горячей воды в радиаторах
    M_OGO[2] = M_OGO[2]/index_kalibr; //dT - средний температурный напор (t_зал - t_улица)
    
    K_OGO_kalibr = 100.0 * Summa_time_OGO_1_kalibr / index_kalibr; //K_OGO_sredii за период калибровки
        }
    else {// обнулить 
      Summa_time_OGO_1_kalibr = 0;
      index_kalibr = 0;
      M_OGO[1] = 0;
      M_OGO[2] = 0;
      }
    if (flag_OGO == false)    {      //котел отключен
    time_OGO_0++  ;       //увеличиваем счетчик на +1

    print_OGO = true;      //флаг разрешения печати в момент включения котла
    }
    

  //------------------------------------ РАСЧЕТЫ ЗА ЦИКЛ (нагрев/охлаждение) работы котла-----------------------------------
  
    if ((flag_OGO &amp;&amp; print_OGO) == true) {     //котел включен, печать разрешена в com порт

       
    time_OGO_0 = time_OGO_1 + time_OGO_0; //счетчик - число измерений на однин рабочий цикла котла (нагрев+охлаждение)
    
    K_OGO = 100.0 * time_OGO_1 / time_OGO_0 ; //&quot;Коэффициенте загрузки котла&quot; , нормирован на 100%
    
     //-------------------------средняя температура по датчикам (зо один цикл работы котла---------------------
   
  for(int j=0; j &lt;8; j++) {//сумму температур / время цикла

  Mass[j] = Mass[j] / time_OGO_0; //расчет среднего значения
  Mass[j+8] = Mass[j];  //сохранить среднее в Mass[8] = Mass[15]для вывода на lcd
  
  }
     
    //-------------------- ЗАПИСЬ в массив архивных данных- K_OGO------------------------
    
    M_OGO[0] = K_OGO * GAZ;//м3/мес
        
     if(N_OGO &lt; 13){// запись в массив архивных данных
    
    M_OGO[3+N_OGO] = M_OGO[0];// данные вводятся в ячейки с 3...11(всего 13 ячеек)
    }
    else
    { //при достижении правого края: сдвиг экрана влево с 4 по 16 позиции и печать в крайнию праввую ячейку данных
    for(int j=3; j &lt;15; j++) {

    M_OGO[j] = M_OGO[j+1]; //сдвиг ячеек справа -налево и 
    }
    M_OGO[15] = M_OGO[0]; // 
}
    //-----------------флаги и счетчики по завершению цикла------------------------
  
    for(int j=0; j &lt;8; j++) {//обнулить счетчики суммы температур [0...7]
    Mass[j] = 0;
    }
     
 // OGO_line++ ;// переход к следующей строке
  time_OGO_0 = 0;
  time_OGO_1 = 0;

  print_OGO = false; //печать только в течении одного цикла
  N_OGO++ ; //счетчик числа измерений K_OGO (&quot;Коэффициента загрузки котла&quot; ). 
 
  }
    /////////////////////////////////////////////////////////////////////
    //------------окончание цикла  РАСЧЕТЫ ЗА ЦИКЛ   ////////////////////
    /////////////////////////////////////////////////////////////////////
  
  M_OGO[3] = K_OGO_sredii * GAZ;// Перезапись в ячейку данных с затиранием &quot;0&quot; отсчета
   
   ////////////////////////////////////////////////////////////////////////////////////////////
   //--------------Q м.куб/мес нормируем 0..100 делений графического ндикатора(уровень)------//
   ////////////////////////////////////////////////////////////////////////////////////////////
 
 
  va_1 = int(M_OGO[3]);
  va_1 = constrain(va_1, Qmin, Qmax);
    va_1 = map(va_1, Qmin, Qmax, 1, 100);
      RemoteXY.level_11 = va_1; // Средний расход
  
  va_1 = int(M_OGO[4]);
  va_1 = constrain(va_1, Qmin, Qmax);
    va_1 = map(va_1, Qmin, Qmax, 1, 100);
      RemoteXY.level_1 = va_1; // текущий расход газа
  
  ////////////////////////////////////////////////////////////////////////////////
 //-------Графический индикатор температуры в обратке системы отопления-----------//
 ///////////////////////////////////////////////////////////////////////////////////
 
 va_1 = int(Cels[8]);//температура обратки общая
  va_1 = constrain(va_1, 0,60);//температура обратки общая от 0 до 60 град
    va_1 = map(va_1, 0, 60, 1, 100);
      RemoteXY.level_2 = va_1; //температура обратки общая
 
 
  va_1 = int(Cels[6]);//температура обратки в комнате
  va_1 = constrain(va_1, 0,60);//температура обратки общая от 0 до 60 град
    va_1 = map(va_1, 0, 60, 1, 100);
      RemoteXY.level_3 = va_1; //температура обратки в комнате
 
  va_1 = int(Cels[7]);//температура обратки в ванной
  va_1 = constrain(va_1, 0,60);//температура обратки общая от 0 до 60 град
    va_1 = map(va_1, 0, 60, 1, 100);
      RemoteXY.level_4 = va_1; //температура обратки в ванной
 
            
//--------------Строки--------------------------//
  
  dtostrf(M_OGO[3],3,0,RemoteXY.text_10); //Прогноз расход (средний расход от начала измерений)
  dtostrf(M_OGO[0],3,0,RemoteXY.text_11); //текущее расход

  
  // Печать Легенды ( Qmin и Qmax)
  
  itoa(Qmax,RemoteXY.text_13, 10);
  
  itoa(Qmin, RemoteXY.text_14,10);
  

    /////////////////////////////////////////////////////////////////////////////////
    // ----------------------Считаем объем газа ----------------------------------//
    //////////////////////////////////////////////////////////////////////////////

        // печать целой части с одним знаком после запятой
    Summa_temp = Summa_time_OGO_1;//
        float Q_temp = Summa_temp * GAZ_Q;
        
unsigned long q_temp = Q_temp *1000; //       12345
    int Zeloe = q_temp/1000; // 12345/100 =12, остаток 345
    int Z2_3 =q_temp%1000; // временное хранение остатка 345     
    int    Z1 = Z2_3/100 ; // 345/10 =3, остаток 45
        Z2_3 =Z2_3%100; // = 45

    sprintf(RemoteXY.text_12,&quot;% 4d.%1d&quot;, Zeloe,Z1); //123.1
    
    sprintf(RemoteXY.text_12_0,&quot;%-02d&quot;,Z2_3); //23



        
 ///////////////////////////////////////////////////////////
   //--------------Графика-------------------------------//
   /////////////////////////////////////////////////////////
 
  RemoteXY.onlineGraph_1_var1 = M_OGO[0]/10.0; // текущий расход масштабируем шкалу на 10
  //RemoteXY.onlineGraph_1_var2 = 20.0; // пока не определена
  
  RemoteXY.onlineGraph_1_var3 = Cels[5]; // горячая вода масштабируем шкалу на 10
  RemoteXY.onlineGraph_1_var4 = Cels[4]; //улица
  RemoteXY.onlineGraph_1_var5 = Cels[1]; // зал
  
  
//////////////////////////////////////////////////////////////////////////  
//********************LCD***********************************************//
/////////////////////////////////////////////////////////////////////////

//--------------------МЕНЮ_0 (ЭКРАНЫ lcd) ------------------------------//

// current_mode == 0, 1 и 2
  
  if(current_mode == 0)  { //ekran0 &quot;Температура&quot;
  
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(Cels[1],0); //&quot;зал&quot;
  lcd.print(&quot;\10 &quot;);//значек &quot;градуса&quot;
  lcd.print(Cels[2],0); //&quot;ПК&quot;
  lcd.print(&quot;\10 &quot;);
  lcd.print(Cels[3],0); //&quot;ванная&quot;
  lcd.print(&quot;\10 &quot;);
  lcd.print(Cels[4],0); //&quot;улица&quot;)
  lcd.print(&quot;\10&quot;);
  
  lcd.setCursor(0, 1);
  lcd.print(Cels[5],0);//горячая вода
  lcd.print(&quot;/&quot;);
  lcd.print(Cels[6],0); //&quot;обратка в комнате&quot; (среднее)
  lcd.print(&quot;\10&quot;);
  lcd.setCursor(7,1); 
  lcd.print(M_OGO[0],0);//&quot;K_OGO м3/мес&quot;
  lcd.setCursor(10, 1);
  lcd.print(&quot;month&quot;); //месяц --Отключен русский текст  lcd.print(&quot;\2743/\274ec&quot;);  //м3/мес&quot;{188,51,47,188,101,99,&#039;\0&#039;}; //м3/мес
  
  }

  if (current_mode == 1)  { // ekran1 &quot;Параметры котла&quot;
   
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(Mass[12],1);  //&quot;горячая вода&quot; (среднее)
  lcd.print(&quot;\10&quot;);//значек &quot;градуса&quot;
  lcd.setCursor(6,0); 
  lcd.print(Cels[0],1); //температура  &quot;дымоход&quot;
  lcd.print(&quot;\10&quot;);
  lcd.setCursor(11,0); 
  lcd.print(&quot;k&quot;);
  lcd.print((K_OGO),1);
    
  lcd.setCursor(0, 1);
  lcd.print(Mass[13],1);  //&quot;обратка в комнате&quot; (среднее)
  lcd.print(&quot;\10&quot;);//значек &quot;градуса&quot;
  lcd.print(Mass[14],1);  //&quot;&quot;обратка в ванной&quot; (среднее)
  lcd.print(&quot;\10&quot;);//значек &quot;градуса&quot;
  lcd.setCursor(10, 1);
  lcd.print(&quot;/&quot;);
  lcd.print(Mass[15],1);  //&quot;обратка котел&quot; (среднее)
  lcd.print(&quot;\10&quot;);//значек &quot;градуса&quot;
} 
    
  
  if (current_mode == 2)  { //ekran2 &quot;Потребление газа в месяц&quot;
  
  lcd.clear();
  for(int i=3; i&lt;16; i++){
  Zn(M_OGO[i],Os_0, Os_1,Znak);//(в массив Znak[] возвращаются ординаты для верхней и нижней строки (K_OGO в м3/мес)
  
  lcd.setCursor(i,0);
  lcd.print(Znak[0]); 
  
  lcd.setCursor(i,1);
  lcd.print(Znak[1]); 
    }
  lcd.setCursor(0,0);//текущий K_OGO
  lcd.print(M_OGO[0],(0)); 
  
  lcd.setCursor(0,1);
  lcd.print( M_OGO[3],(0)); //K_OGO_sredii
} 
    
  do
    {    
    //RemoteXY_Handler (); //ВНИМАНИЕ!!! ЕСЛИ RemoteXY_Handler (); включить здесь, то программа работает!!!
    //yield();
    
  // --------------МЕНЮ для knopka1---------------------------------

  if (knopka1.update()) {//если произошло событие
  
    if (knopka1.read()== 1) //если кнопка нажата mode_knopka =1, для TTP223
    {
    pressed_moment = millis(); // запоминаем время нажатия
    
    }
    else { // кнопка отпущена
     
      if((millis() -pressed_moment) &lt;pressed_long)  // если кнопка была нажата кратковременно
      {
     
      current_mode++; // увеличиваем счетчик текушего режима
       if (current_mode &gt;= (num_modes+1)) current_mode = 0;
     
    lcd.backlight();// Подсветка включена  
    }
    else{ // кнопка удерживалась долго          
       
    lcd.noBacklight();//Подсветки дисплея отключена
    pressed_moment = 0; // обнуляем момент нажатия
    }
    
  }
 }


    currentMillis = millis(); // текущее время в миллисекунд
    
  }
  while ((currentMillis -previousMillis) &lt; OnTime); //если меньше,то повтор этого цикла до достижения 5000 мс
   // while ((currentMillis -previousMillis) &lt; 2000); //отладка111
//---------Вывод времени работы от запуска RemoteXY-------------//
  //T_interval = millis();// мсек
  T_interval = (currentMillis - T_interval_0)/1000; //Продолжительность работы программы, сек
  
    TimeSpan(ts)=T_interval;
    sprintf (RemoteXY.text_15, &quot;%02d-%02d-%02d-%02d&quot;, ts.days(),ts.hours(),ts.minutes(),ts.seconds());//текстовая строка  
  previousMillis = currentMillis;
  }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (bukinay1)]]></author>
			<pubDate>Wed, 31 Mar 2021 15:48:29 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3768#p3768</guid>
		</item>
		<item>
			<title><![CDATA[Re: Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3765#p3765</link>
			<description><![CDATA[<p>Пришлите ваш скетч</p>]]></description>
			<author><![CDATA[null@example.com (remotexy)]]></author>
			<pubDate>Wed, 31 Mar 2021 11:59:19 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3765#p3765</guid>
		</item>
		<item>
			<title><![CDATA[Read timeout error, Write error: Broken pipe]]></title>
			<link>https://forum.remotexy.com/viewtopic.php?pid=3764#p3764</link>
			<description><![CDATA[<p>Поясните, как избавиться от ошибок: <strong>Read timeout error</strong> и <strong>Write error: Broken pipe</strong></p><p>Имеем <strong>Arduino_pro_mini + ESP-01</strong>. Подключение <strong>Enernet</strong> через <strong>WI-FI </strong><br />Работа. <br />Организован цикл 5 сек. В течение первой секунды происходит измерение от датчиков температуры DS18b20, далее вычисление по алгоритму программы и вывод данных по RemoteXY и дальнейшее ожидание до завершение 5 сек цикла.<br />Функции delay() не использую.<br />При подключении через USB кабель все работает.<br />Привожу лог подключения:</p><p>&nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.14<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />1&nbsp; &nbsp; 10:20:14.995&nbsp; &nbsp; App version 4.7.13, API 28<br />2&nbsp; &nbsp; 10:20:14.995&nbsp; &nbsp; Device started<br />3&nbsp; &nbsp; 10:20:14.995&nbsp; &nbsp; Ethernet connection started<br />4&nbsp; &nbsp; 10:20:15.000&nbsp; &nbsp; WiFi network bound (129)<br />5&nbsp; &nbsp; 10:20:15.000&nbsp; &nbsp; Connecting to 192.168.1.14:6377...<br />6&nbsp; &nbsp; 10:20:15.252&nbsp; &nbsp; Connecting to 192.168.1.14:6377...<br />7&nbsp; &nbsp; 10:20:15.264&nbsp; &nbsp; Connection established<br />8&nbsp; &nbsp; 10:20:15.285&nbsp; &nbsp; Receiving GUI configuration...<br />9&nbsp; &nbsp; 10:20:16.288&nbsp; &nbsp; Read timeout error<br />10&nbsp; &nbsp; 10:20:16.289&nbsp; &nbsp; Receiving GUI configuration, try 2 ...<br />11&nbsp; &nbsp; 10:20:17.291&nbsp; &nbsp; Read timeout error<br />12&nbsp; &nbsp; 10:20:17.291&nbsp; &nbsp; Receiving GUI configuration, try 3 ...<br />13&nbsp; &nbsp; 10:20:26.440&nbsp; &nbsp; Read timeout error<br />14&nbsp; &nbsp; 10:20:26.440&nbsp; &nbsp; Receiving GUI configuration, try 4 ...<br />15&nbsp; &nbsp; 10:20:26.464&nbsp; &nbsp; GUI configuration received<br />16&nbsp; &nbsp; 10:20:26.474&nbsp; &nbsp; Receiving variables...<br />17&nbsp; &nbsp; 10:20:31.477&nbsp; &nbsp; Read timeout error<br />18&nbsp; &nbsp; 10:20:31.477&nbsp; &nbsp; Receiving variables, try 2 ...<br />19&nbsp; &nbsp; 10:20:36.481&nbsp; &nbsp; Read timeout error<br />20&nbsp; &nbsp; 10:20:36.481&nbsp; &nbsp; Receiving variables, try 3 ...<br />21&nbsp; &nbsp; 10:20:36.481&nbsp; &nbsp; Write error: Broken pipe<br />22&nbsp; &nbsp; 10:20:36.483&nbsp; &nbsp; Disconnect</p><p>На скорости 9600 иногда удается подключиться.<br />При цикле 2 сек подключиться удавалось на скорости 38400</p>]]></description>
			<author><![CDATA[null@example.com (bukinay1)]]></author>
			<pubDate>Wed, 31 Mar 2021 08:52:04 +0000</pubDate>
			<guid>https://forum.remotexy.com/viewtopic.php?pid=3764#p3764</guid>
		</item>
	</channel>
</rss>
