ESP32 Ошибка строкового массива при изменении части строки - PullRequest
0 голосов
/ 03 мая 2020

Здравствуйте, У меня проблемы с массивом. У меня есть массив строк ( String inOut [10]; ). В функции настройки у меня есть для l oop, где я заполняю массив "0.0.0.0.0.0.0.0.0.0".

Я использую его как значения для своего веб-сервера. Каждое значение между точками имеет адрес. Я использую функции "inOutSet" и "inOutGet" для работы со строкой (чтобы получить значение c или изменить значение c).

Все работает, если я пытаюсь изменить значение например, из функции l oop, но если я вызываю функцию inOutSet () на сервере, я получаю сообщение об ошибке.

Как работает мой код: Когда я включаю какой-либо флажок на веб-странице, javascript отправляет запрос XMLHttpRequest несколько раз. Следующий запрос отправляется, только если предыдущий запрос отправляет ответ обратно. Таким образом, я создаю сообщение, состоящее из 6 слов, которые обрабатывает функция процессора. Пример сообщения: «0 X0 ID 0 X0 H» означает, что в индексе 0 (inOut [0]) измените значение в позиции 0 (то есть первое число) на значение 0 + X0 = 0. Эти значения затем используются в функции процессора в выражении "else if (var ==" H ")". Функция inOutSet (msgId, msgPos, tempString) с параметрами из сообщения выполняется, и я получаю сообщение об ошибке. Значения, которые отправляются с веб-сайта, верны. Они отображаются перед выполнением функции inOutSet.

Вот мой вывод терминала (я использую visual studio с platform.io):

Connecting to WiFi..
192.168.43.183
Original string: 0.0.0.0.0.0.0.0.0.0
Index Value of . is 11
Value inOut: 0.0.0.0.0.99.0.0.0.0
Original string: 0.0.0.0.0.99.0.0.0.0
Index Value of . is 18
Value inOut: 0.0.0.0.0.99.0.0.99.0
Original string: 0.0.0.0.0.99.0.0.99.0
Index Value of . is 9
Value inOut: 0.0.0.0.99.99.0.0.99.0
Original string: 0.0.0.0.99.99.0.0.99.0
Index Value of . is 5
Value inOut: 0.0.99.0.99.99.0.0.99.0
Original string: 0.0.99.0.99.99.0.0.99.0
Index Value of . is 14
Value inOut: 0.0.99.0.99.5.0.0.99.0
Original string: 0.0.99.0.99.5.0.0.99.0
Index Value of . is 20
Value inOut: 0.0.99.0.99.5.0.0.8.0
Original string: 0.0.99.0.99.5.0.0.8.0
Index Value of . is 11
Value inOut: 0.0.99.0.4.5.0.0.8.0
Original string: 0.0.99.0.4.5.0.0.8.0
Index Value of . is 1
Value inOut: 2.0.99.0.4.5.0.0.8.0

// КОНЕЦ РУКОВОДСТВА ПО ИСПОЛЬЗОВАНИЮ ФУНКЦИИ inOutSet (). До сих пор функция работает. Затем Процессор записывает, какие сообщения он получил. Он хочет изменить индекс 0, положение 0 на значение 61. Он находит, что индекс первой точки находится на позиции 1, и он должен изменить первый ноль ("0.0.0.0 .0.0.0.0.0.0 ")" 61 "в этом случае. Но он пишет CT_HTTP. И другое дерьмо после изменения значения в сообщении. ПОЧЕМУ?

Processor in: 0
Processor in: X0
Processor in: ID
Processor in: 6
Processor in: X1
Processor in: H
Arrived values:
Original string: 2.0.99.0.4.5.0.0.8.0
Index Value of . is 1
Value inOut: CT_HTTP.0.99.0.4.5.0.0.8.0
msg id 0: CT_HTTP.0.99.0.4.5.0.0.8.0
Processor in: 0
Processor in: X0
Processor in: ID
Processor in: 0
Processor in: X0
Processor in: H
Arrived values:
Original string: CT_HTTP.0.99.0.4.5.0.0.8.0
Index Value of . is 7
Value inOut: .0.99.0.4.5.0.0.8.0
msg id 0: .0.99.0.4.5.0.0.8.0
Processor in: 0
Processor in: X0
Processor in: ID
Processor in: 3
Processor in: X9
Processor in: H
Arrived values:
Original string: .0.99.0.4.5.0.0.8.0
Index Value of . is 0
Value inOut: NOT_USED.0.99.0.4.5.0.0.8.0
msg id 0: NOT_USED.0.99.0.4.5.0.0.8.0

Каждый раз, когда я изменяю значение, которое должно быть записано в строку, текст, который выводит мне терминал, является другим. Я показал вам больше примеров с другими значениями.

Вот моя программа:

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <FS.h>
#include <Wire.h>

const char* ssid = "Test";
const char* password = "12345678";
// Stores LED state
String ledState;
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

#define ledPin 2  //BuiltInLed is inverted
#define countMax 2500
#define multiplyMax 100 
int count = 0, multiply = 0;
int nr1=0, nr2=0,msgPos, msgId, msgVar;
String inOut[10];
String tempStr1, tempStr2;


/*  
  PINS i can use as In/Out-puts:
  0, 2, 12, 13, 14, 15, 16, / 1x Analog in 0
  Only pin 15 is not PWM
  Pin0 = D3;  Pin14 = D5  
  Pin2 = D4;  Pin15 = D8
  pin12= D6;  Pin16 = D0
  Pin13= D7;  
*/

//***************************************

/*Set value of String[] on the nrPos to val*/
void inOutSet(int nrX, int nrPos, String val)
{
  tempStr1 = inOut[nrX];
  Serial.print("Original string: "); Serial.println(tempStr1);
  int tempPos = 0;
  if (nrPos != 0)
  {
    tempPos = -1;
    for (int i = 0; i < nrPos; i++)
    {
      tempPos = tempStr1.indexOf(".", tempPos+1);
    }
    tempStr1 = inOut[nrX].substring(0, tempPos)+".";
    tempPos = inOut[nrX].indexOf(".", tempPos+1);
    tempStr2 = inOut[nrX].substring(tempPos);
  }
  else
  {
    tempPos = tempStr1.indexOf(".", tempPos);
    tempStr1 = "";
    tempStr2 = inOut[nrX].substring(tempPos);
  }
  Serial.print("Index Value of . is ");Serial.println(tempPos);

  inOut[nrX] = tempStr1+val+tempStr2;
  Serial.print("Value inOut: ");Serial.println(inOut[nrX]); 
}

String inOutGet(int nrX, int nrPos)
{
  tempStr1 = inOut[nrX];
  int tempPos =0;
  if (nrPos != 0)
  {
    tempPos = -1;
    for (int i = 0; i < nrPos; i++)
    {
      tempPos = tempStr1.indexOf(".", tempPos+1);
    }
    tempStr1 = inOut[nrX].substring(tempPos+1);
    //Serial.print("tempString 1 - ");Serial.println(tempStr1);
    tempPos = tempStr1.indexOf(".");
    tempStr1 = tempStr1.substring(0, tempStr1.indexOf(".", tempPos));
    //Serial.print("tempString 1.1- ");Serial.println(tempStr1);
  }
  return tempStr1;
}

void stat()
{
  Serial.println(msgId);
  Serial.println(msgVar);
}


String dataRequest() 
{
  String tempOut = "g";
  msgId = nr1;
  tempOut = tempOut+nr1+".";
  nr1 = 0; nr2 = 0;
  Serial.print("Data Request: ");
  Serial.println(msgId);
  Serial.print("Returning value: ");
  tempOut += inOut[msgId];

  Serial.println(tempOut);
  Serial.println("Data Request end----");
  return tempOut;
}

// Handles headers
String processor(const String& var){
  Serial.print("Processor in: ");  Serial.println(var);
  String tempString;

  if (var == "0") { nr1=0; return var;} 
  if (var == "1") { nr1=10; return var;}
  if (var == "2") { nr1=20; return var;}
  if (var == "3") { nr1=30; return var;}
  if (var == "4") { nr1=40; return var;}
  if (var == "5") { nr1=50; return var;}
  if (var == "6") { nr1=60; return var;}
  if (var == "7") { nr1=70; return var;}
  if (var == "8") { nr1=80; return var;}
  if (var == "9") { nr1=90; return var;}

  if (var == "X0") { nr2=0; return var;}  
  if (var == "X1") { nr2=1; return var;}
  if (var == "X2") { nr2=2; return var;}
  if (var == "X3") { nr2=3; return var;}
  if (var == "X4") { nr2=4; return var;}
  if (var == "X5") { nr2=5; return var;}
  if (var == "X6") { nr2=6; return var;}
  if (var == "X7") { nr2=7; return var;}
  if (var == "X8") { nr2=8; return var;}
  if (var == "X9") { nr2=9; return var;}

  if (var == "ID")
  {
    msgId = nr1;
    msgPos = nr2;
    nr1 = 0; nr2 = 0;
    return var;
  }
  else if (var == "H")
  {
    msgVar = nr1+nr2;
    nr1 = 0; nr2 = 0;
    if (msgVar >= 99)    {msgVar = 100;}    
    Serial.println("Arrived values: ");
    tempString = ""+msgVar;
    inOutSet(msgId, msgPos, tempString);
    Serial.print("msg id ");Serial.print(msgId); Serial.print(": ");
    Serial.println(inOut[msgId]);
    return var;
  }
  else if (var == "G")
  {
    nr1 = nr1/10;
    return dataRequest();
  }
  return "error";
}


void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(9600);

  // filling the array with zeroes
  for (int i = 0; i < 9; i++)
  {
    inOut[i] = "0.0.0.0.0.0.0.0.0.0";
  }

  if(!SPIFFS.begin()){Serial.println("\nSPIFFS chyba!"); return;}

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }

  // Print ESP32 Local IP Address
  Serial.println(WiFi.localIP());

  // Route for root / web page
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/index.html", String(), false, processor);
  });

  //route to favicon
  server.on("favicon.ico", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/favicon.png", "image/png");
  });

  // Route to load style.css file
  server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/style.css", "text/css");
  });

  // Route to javascript
  server.on("/main.js", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/main.js", "text/javascript");
  });


// Nr1 of the msg
  server.on("/0", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("0").c_str());
  });
  server.on("/1", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("1").c_str());
  });
  server.on("/2", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("2").c_str());
  });
  server.on("/3", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("3").c_str());
  });
  server.on("/4", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("4").c_str());
  });
  server.on("/5", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("5").c_str());
  });
  server.on("/6", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("6").c_str());
  });
  server.on("/7", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("7").c_str());
  });
  server.on("/8", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("8").c_str());
  });
  server.on("/9", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("9").c_str());
  });
// Nr2 of the msg
  server.on("/X0", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X0").c_str());
  });
  server.on("/X1", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X1").c_str());
  });
  server.on("/X2", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X2").c_str());
  });
  server.on("/X3", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X3").c_str());
  });
  server.on("/X4", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X4").c_str());
  });
  server.on("/X5", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X5").c_str());
  });
  server.on("/X6", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X6").c_str());
  });
  server.on("/X7", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X7").c_str());
  });
  server.on("/X8", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X8").c_str());
  });
  server.on("/X9", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("X9").c_str());
  });
//end commands for processor
  server.on("/ID", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("ID").c_str());
  });
  server.on("/H", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("H").c_str());
  });
  server.on("/G", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", processor("G").c_str());
  });

  // Start server
  server.begin();
}

//zmení vstupné percento od 0 do 100 na hodnotu od 0 po 255 pre arduino
int perTo255(String in)
{
  int out = (int)((float)in.toInt()*2.55f);
  return out;
}

int perTo1024(String in)
{
  return (int)((float)in.toInt()*10.23f);
}


/*-------------LOOP---------------*/
void loop() {
  count++;
  if (count > countMax)  {    multiply++; count = 0;  }
  if (multiply > multiplyMax)
  {

    inOutSet(0, 5, "99");
    inOutSet(0, 8, "99");
    inOutSet(0, 4, "99");
    inOutSet(0, 2, "99");

    inOutSet(0, 5, "5");
    inOutSet(0, 8, "8");
    inOutSet(0, 4, "4");
    inOutSet(0, 2, "2");

    delay(60000);
    multiply = 0;
  }
} 

Если я отправляю значение 1, он хочет написать «application / x- www-form-urlencoded.0....»

Вот мой индекс. html и main. js но я не не думаю, что вам это нужно. Это должно быть хорошо, потому что сообщение приходит в порядке.

let sliderIdPool = [];
let chBoxIdPool = [];
let poolRequest = [];
let poolFormValue = [];
let ioValues = [];
let poolRequestAddAllow = false;
let autorequest = true; //pre zastavenie requestov

searchSliderId(); //pridanie všetkych použitych sliderov do poolu a priradenie listenerov
searchChBoxId(); //pridanie všetkych použitych chBoxov do poolu
searchFormID(); //prida vsetky zobrazovacie oknicka do poolu

//***********************************************************/
//funkcia na pridávanie záznamov správy do zoznamu sprav pre ESP
function poolRequestAdd(hodnota)
{
    poolRequest.push(hodnota);
    //console.log(poolRequest);
}

//***********************************************************/
//funkcia na vymazavanie zápisov v zozname správ
function poolRequestDel()
{
    let temp = poolRequest[0];
    poolRequest.shift();
    if (poolRequest.length >0)
    {
        poolRequestStart();
    }
}

//***********************************************************/
//funkcia na odoslanie dalsieho requestu po ukoncení predosleho
function poolRequestStart()
{
    if(!poolRequestAddAllow)
    {
        poolRequestAddAllow = true;
        espReq(poolRequest[0]);
    }
}

//***********************************************************/
//Funkcia pre odosielanie požiadavok URL
function espReq(url) //odosielanie do esp
{
    //console.log("poziadavka "+url+" odoslana...")
    let xhttp = new XMLHttpRequest();
    let val;
    xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        //console.log("response: "+this.responseText);
        //console.log("response slice: "+this.responseText.slice(0, 1));
        poolRequestAddAllow = false;
        if (this.responseText == poolRequest[0] )
        {
            poolRequestDel();
        }
        if (this.responseText.slice(0, 1) == "g")
        {
            updateValues(this.responseText);
            poolRequestDel();
        }
    }
  };
  console.log("URL navolena: "+ url);
  xhttp.open("GET", url, true);
  xhttp.send();
}



//***********************************************************/
//chBox ak príde ID napríklad 00tLedpas tak sa oddelí
//prvé dvojčislie ktoré symbolizuje adresu v ESP programe
//pismeno "t" na tretom mieste symbolizuje funkciu togle
//ak tam nie je "t" tak sa prevezme hodnota slidera s rovnakym
//menom id ktorý avšak musí obsahovat "s" - 00sLedpas
function chBox(id) {
    let hodnota;
    let nrTemp;
    let setDefaultSliderVal = false;
    try{    
        let checkBox = document.getElementById(id);
        //console.log("zahakol si id: "+id);
        nrTemp = id.slice(0, 2);
        //console.log("slice bol: "+nrTemp);
        if (id.slice(2,3) == "t")
        {
            //console.log("t");
            if (checkBox.checked != true)
                {//ak je true tak ho chcem vypnuť
                hodnota = "00"
                }
                else
                {//ak je false tak ho chcem zapnuť
                hodnota = "99";
                }
        }
        else
        {//skompletujem a vyhladam slider id hodnotu
            //console.log("je to aj zo sliderom");
            let strTemp = id.slice(2, id.length);
            let sliderVal = document.getElementById(nrTemp+"s"+strTemp).value;
            //console.log("Hodnota slidera bola: "+ typeof sliderVal+ sliderVal);
            if (sliderVal >99) {    sliderVal = 99; }
            hodnota = ""+sliderVal;
            //V pripade ze je cislo mensie ako 9 alebo sa vypne chBox tak sa pridá 
            //do stringu 0 kôli korektnosti správy espReq
            if (sliderVal <= 9) { hodnota = "0"+hodnota;   }
            if (!checkBox.checked) { hodnota = "00"; setDefaultSliderVal=false; }
            //console.log("TU "+sliderVal+"...2 "+ hodnota);
        }
        //console.log("hodnota chkBoxu bola: "+checkBox.checked);
    }
    catch(err) {
        console.log("chBox func error!");
    }
    //console.log("Hodnota je: "+hodnota);
    poolRequestAdd(nrTemp.slice(0,1));
    poolRequestAdd("X"+nrTemp.slice(1,2));
    poolRequestAdd("ID");
    poolRequestAdd(hodnota.slice(0,1));
    poolRequestAdd("X"+hodnota.slice(1,2));
    poolRequestAdd("H");
    if (setDefaultSliderVal) 
    {
        poolRequestAdd(nrTemp.slice(0,1));
        poolRequestAdd("X"+nrTemp.slice(1,2));
        poolRequestAdd("ID");
        poolRequestAdd(hodnota.slice(0,1));
        poolRequestAdd("X"+hodnota.slice(1,2));
        poolRequestAdd("H");
    }
    //console.log("Hodnota nr Temp: "+nrTemp);
    //console.log(poolRequest);
    //console.log("Po pridani _________")
    poolRequestStart();
}

//***********************************************************/
//hladanie všetkych slider IDcok a aktualizovanie ich hodnôt pri pohybe slidera
function searchSliderId() {
    let temp = document.getElementsByClassName("Slider");

    for (let index = 0; index < temp.length; index++) {
        sliderIdPool.push(temp[index].id);
        document.getElementById(temp[index].id+"Stat").innerHTML = temp[index].value;

        temp[index].oninput = function() //pri pohybe zobrazuj aktualnu hodnotu
        {
            document.getElementById(temp[index].id+"Stat").innerHTML = this.value;
        }
        temp[index].onchange = function()//po zastaveni odosli hodnotu ako espReq
        {
            let tempIdName = document.getElementById(temp[index].id).id;
            tempIdName = tempIdName.slice(0,2) + tempIdName.slice(3, tempIdName.length);
            //console.log(tempIdName+": "+document.getElementById(tempIdName).checked);
            if (document.getElementById(tempIdName).checked) {//Iba ak je chBox true
                chBox(tempIdName);
            }
        }
    }
}

function searchChBoxId()
{
    let temp = document.getElementsByClassName("checkbox");
    for (let index = 0; index < temp.length; index++)
    {
        chBoxIdPool.push(temp[index].id);
    }
    //console.log(chBoxIdPool);
}

function searchFormID()
{
    let temp = document.getElementsByClassName("Form");
    for (let index = 0; index < temp.length; index++)
    {
        poolFormValue.push(temp[index].id);
    }
}

//***********************************************************/
//Vytvorenie update funkcii pre aktualne viditelne miestnosti
function getDocQuery(text){return document.querySelectorAll(text);}
getUpdateIzba(0,0);

let miestnostiList = getDocQuery("article div h2");
let tempElement1, tempElement2, TTemp;
let observer = new IntersectionObserver(function(entries){
    if(entries[0].isIntersecting == true)
    try {
        tempElement1 = entries[0].target.parentElement.id;
        tempElement2 = entries[1].target.parentElement.id;  
    } catch (error) {
        console.log(error);
    } 
    //console.log("Room in View p1 "+ tempElement1);
    //console.log("Room in View p2 "+ tempElement2);
    getUpdateIzba(tempElement1, tempElement2);
}, { threshold: [0.3] });


miestnostiList.forEach(element => {
observer.observe(element);
});

//odoslanie požiadavky na hodnoty od ESP
function getUpdateIzba(param1, param2) {
    //console.log("stahujem data pre izbu "+param1+ ", "+param2);
    if (param1 == param2) {
        poolRequestAdd(param1);
        poolRequestAdd("G");
    }
    else
    {
        poolRequestAdd(param1);
        poolRequestAdd("G");
        poolRequestAdd(param2);
        poolRequestAdd("G");    
    }
    //console.log(poolRequest);
    //console.log("Po pridani _________")
    poolRequestStart();
}

//Po prijati hodnot od ESP sa spusti tato funkcia a aktualizuje všetky hodnoty 
//zobrazenej a naposledy navstivenej izby
function updateValues(responseTxt)
{
    let adress, tempStr1;
    let tempNr;
    //console.log("Odpoved ESP: "+responseTxt);
    adress = (parseInt(responseTxt.slice(1,2)))*10;
    tempStr1 = responseTxt;
    for (let i = 0; i<10; i++)
    {//vlozim prijate udaje do ioValues izby
        tempNr = tempStr1.indexOf(".");
        tempStr1 = tempStr1.slice(tempNr+1);
        if (tempStr1.indexOf(".") > 0) 
        {
            ioValues[adress+i] = tempStr1.slice(0, tempStr1.indexOf("."));
        }
        else 
        {
            ioValues[adress+i] = tempStr1.slice(0);
        }
    }
    //console.log(ioValues);

    //zobrazim hodnoty do slideru a prepnem chBoxy
    for (let i = 0; i<chBoxIdPool.length; i++)
    {
        let tempNr = parseInt(chBoxIdPool[i].slice(0,2));
        let tempElement = document.getElementById(chBoxIdPool[i]);
        let tempIdName = tempElement.id;
        let tempStrig = tempIdName.slice(2);
        //console.log("el1 , el2, nr "+ tempElement1, tempElement2, tempNr);
        if (tempElement1 == parseInt(chBoxIdPool[i].slice(0,1)) 
            || tempElement2 == parseInt(chBoxIdPool[i].slice(0,1))) 
        {
        // ak tam t je tak je to toogle switch a jedine co treba aktualizovat je checkbox
            //console.log("prave sa robi "+tempElement.id);
            if (ioValues[tempNr] == "0") {
                tempElement.checked = false;
                //ioValues[tempNr] = "100";
            }
            else { tempElement.checked = true; }

            //ak tam t nie je tak treba aktualizovat aj slider a sliderStat
            if (chBoxIdPool[i].slice(2,3) != "t" && ioValues[tempNr] > 0) 
            {
                //aktualizujem ciselne zobrazenie
                if (tempNr < 10) {tempIdName = "0"+tempNr;}
                else {tempIdName = tempNr;}
                //console.log("Element "+tempIdName+"s"+tempStrig+"Stat"+" = "+ioValues[tempNr]);
                document.getElementById(tempIdName+"s"+tempStrig+"Stat").innerHTML = ioValues[tempNr];
                //Zadáme pozíciu pre slider
                document.getElementById(tempIdName+"s"+tempStrig).value = ioValues[tempNr];
            }
        }
    }
    //console.log(":________:");
    for (let i = 0; i<poolFormValue.length; i++)
    {
        let tempIdName = poolFormValue[i];
        //console.log("TID "+tempIdName);
        let tempNr = parseInt(tempIdName.slice(0,2));
        document.getElementById(tempIdName).innerHTML = ioValues[tempNr];
    }
}

//pre testovanie
function manualSend(S, xS, H, xH)
{
    console.log("odosielam: "+ S, xS, H, xH);
    poolRequestAdd(""+S);
    poolRequestAdd(""+xS);
    poolRequestAdd("ID");
    poolRequestAdd(""+H);
    poolRequestAdd(""+xH);
    poolRequestAdd("H");
    poolRequestStart();
}
//TODO: vytvor manualne odosielanie a otestuj zadavanie hodnôt

//pravidelne vyslany request na aktualizovanie hodnôt
setInterval(function() {
    if (autorequest)
    {
        getUpdateIzba(tempElement1, tempElement2);    
        console.log("Status request hodnôt: ");
    }
}, 6000);
* {
    padding: 0;
    margin: 0;
    text-decoration: none;
    color: rgb(194, 191, 191);
}

/*adresacia id #id a adresacia triedy .Trieda*/
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="style.css">
    </head>
    
    <body>
        <div class="TopNavigationBar">
            <nav class="Nav">
                <div class="Scroll"> <!--Sem zadávame záznami do hornej lišty-->
                    <a href="#0">ALL</a>
                    <a href="#6">ROOMX</a>
                </div>
            </nav>
        </div>

        <!--stranka-->
        <article>
            <!--Prvá neparna miestnosť-->
            <div id="0" class="Odd Miestnost">
                <h2>Dom</h2>
                <aside class="Riadok">
                    <p>Led Strip</p>
                    <input class="checkbox" type="checkbox" id="00Ledpas" onclick="chBox('00Ledpas')">
                </aside>
                <aside class="Riadok">
                    <p>Intenzita (<span id="00sLedpasStat"></span>) </p>
                    <input type="range" min="0" max="100" value="100" class="Slider" id="00sLedpas">
                </aside>
                <aside class="Riadok">
                    <p>Teplota</p>
                    <p>(<span class="Form" id="01xTeplota"></span>)</p>
                </aside>
            </div>
            
            <!--Siesta neparna miestnosť-->
            <div id="6" class="Miestnost">
                <h2>Pivnica</h2>
                <aside class="Riadok">
                    <p>Osvetlenie</p>
                    <input class="checkbox" type="checkbox" id="60Osvetlenie" onclick="chBox('60Osvetlenie')">
                </aside>
                <aside class="Riadok">
                    <p>Intenzita (<span id="60sOsvetlenieStat"></span>)</p>
                    <input type="range" min="1" max="100" value="100" class="Slider" id="60sOsvetlenie">
                </aside>
                <aside class="Riadok">
                    <p>Brana</p>
                    <input class="checkbox" type="checkbox" id="61tBrana" onclick="chBox('61tBrana')">
                </aside>
            </div>
            
    </body>

    <script src="main.js"></script>
</html>
...