• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Возможна ли запись в файл на "малом ВебСервере"?

pvvx

Активный участник сообщества
Еще такой момент интересует, если поместить вебфайл и xml в папку protected, передача по адресу web.cgi?sys_ram0x60000000=... перестает работать, как это исправить?
Нет не перестает. В базе так и сделано. Там необходимо обратиться за стандартным HTM и браузер запомнит пароль на сессию к данному ресурсу... В нормальных браузерах запрос пароля выскочит и от первого обращения в newAJAXCommand() к папке с паролем...
Обращение web.cgi не входит в защищенную паролем область. Это, и приоритеты паролей с разными областями, реализовано только на web-свалке для RTL чипов, т.к. ESP я более не развиваю.
 
Последнее редактирование:

Elik

New member
Нет не перестает. В базе так и сделано. Там необходимо обратиться за стандартным HTM и браузер запомнит пароль на сессию к данному ресурсу... В нормальных браузерах запрос пароля выскочит и от первого обращения в newAJAXCommand() к папке с паролем...
Обращение web.cgi не входит в защищенную паролем область. Это, и приоритеты паролей с разными областями, реализовано только на web-свалке для RTL чипов, т.к. ESP я более не развиваю.
Странно, всплывает ошибка:
Command failed.
Connection to device was lost


Все, заработало, в файле htm в папке protect и в нем скрипт newAJAXCommand('web.cgi?sys_ram0x60000000... забыл вставить ../

у меня 10 ESPшек валяется, надо их использовать, потом перейду на RTL ))))
 
Последнее редактирование:

pvvx

Активный участник сообщества
Для самых маленьких, в последних версиях работает ~uart_data~ и uart_data=xxxxxxxx...
Снимок1530.gif
http://sesp8266/web.cgi?uart_data=30313233343536373839300D0A -> в UART вылезет "01234567890"
При запросе, через паузу, файла get.xml, типа такого содержания:
<data>~uart_data~</data>
Прочитаете что ответил ваш контроллер...

hex to string in JS · GitHub
JavaScript validation with regular expression: Convert ASCII to Hexadecimal format - w3resource
 

Elik

New member
Для самых маленьких, в последних версиях работает ~uart_data~ и uart_data=xxxxxxxx...
Посмотреть вложение 4332
http://sesp8266/web.cgi?uart_data=30313233343536373839300D0A -> в UART вылезет "01234567890"
При запросе, через паузу, файла get.xml, типа такого содержания:
<data>~uart_data~</data>
Прочитаете что ответил ваш контроллер...

hex to string in JS · GitHub
JavaScript validation with regular expression: Convert ASCII to Hexadecimal format - w3resource
Не знаю правильно ли я составил вот это:

htm file:

Код:
<html>
<head>
<meta charset="utf-8">
<script src="../../site.js"></script>
<script>
var mesUart0 = "";
var mesUart1 = "";
var mesUart2 = "";
var uartString0 = [];
var uartString1 = [];
var uartString2 = [];

function senddata(i){
if(i == 1){
newAJAXCommand('../../web.cgi?sys_ram0x60000000=0x3d&sys_ram0x60000000=0x26&sys_ram0x60000000=0x31&sys_ram0x60000000=0x2d&sys_ram0x60000000=0x6f&sys_ram0x60000000=0x6e&sys_ram0x60000000=0xa');
}
if(i == 2){
newAJAXCommand('../../web.cgi?sys_ram0x60000000=0x3d&sys_ram0x60000000=0x26&sys_ram0x60000000=0x31&sys_ram0x60000000=0x2d&sys_ram0x60000000=0x6f&sys_ram0x60000000=0x66&sys_ram0x60000000=0x66&sys_ram0x60000000=0xa');
}
}


function readUart(){
newAJAXCommand('test.xml', updateStatus, true);
}

function updateStatus(xmlData) {
//-----------------Date-----------------------------------
mesUart0 = "";
 for(i=0;i<11;i++){
 var hex0 = getXMLValue(xmlData, 'date' + i);
 uartString0[i] = hex0.substr(8, 9);
 mesUart0 += String.fromCharCode(parseInt(uartString0[i],16));
 }
 if(mesUart0 != "00000000000"){
 document.getElementById('xmlDate').innerHTML = mesUart0;
 }
//-----------------Time-----------------------------------
mesUart1 = "";
 for(l=0;l<8;l++){
 var hex1 = getXMLValue(xmlData, 'time' + l);
 uartString1[l] = hex1.substr(8, 9);
 mesUart1 += String.fromCharCode(parseInt(uartString1[l],16));
 }
 if(mesUart1 != "00000000"){
 document.getElementById('xmlTime').innerHTML = mesUart1;
 }
//-----------------Pin 5-----------------------------------
mesUart2 = "";
for(k=0;k<11;k++){
 var hex2 = getXMLValue(xmlData, 'pn' + k);
 uartString2[k] = hex2.substr(8, 9);
 mesUart2 += String.fromCharCode(parseInt(uartString2[k],16));
 }
 if(mesUart2 == " SW05_0001 "){
 document.getElementById('xmlPin5').innerHTML = "ON"
 }
  if(mesUart2 == " SW05_0000 "){
 document.getElementById('xmlPin5').innerHTML = "OFF"
 }
}

</script>
  <style>
   body{
    background-color: white; /* Цвет фона веб-страницы */
   }
   </style>
</head>

<body onload="readUart()">
<!--<div style="width:100%">
<img src="img/mega3.png" width="100%" style="margin: 0 0 0 0"></img>
</div>
-->
RTC Date:
<div id="xmlDate">...</div><br><br>
RTC Time:
<div id="xmlTime">...</div><br><br>
Switch Digital Pin 5
<button onclick="senddata(1)">ON</button>
<button onclick="senddata(2)">OFF</button>
<br>
Digital Pin#5 Status:
<div id="xmlPin5">...</div><br>
</body>
</html>
xml file:

Код:
<response>
<date0>~sys_ram0x60000000~</date0>
<date1>~sys_ram0x60000000~</date1>
<date2>~sys_ram0x60000000~</date2>
<date3>~sys_ram0x60000000~</date3>
<date4>~sys_ram0x60000000~</date4>
<date5>~sys_ram0x60000000~</date5>
<date6>~sys_ram0x60000000~</date6>
<date7>~sys_ram0x60000000~</date7>
<date8>~sys_ram0x60000000~</date8>
<date9>~sys_ram0x60000000~</date9>
<date10>~sys_ram0x60000000~</date10>

<time0>~sys_ram0x60000000~</time0>
<time1>~sys_ram0x60000000~</time1>
<time2>~sys_ram0x60000000~</time2>
<time3>~sys_ram0x60000000~</time3>
<time4>~sys_ram0x60000000~</time4>
<time5>~sys_ram0x60000000~</time5>
<time6>~sys_ram0x60000000~</time6>
<time7>~sys_ram0x60000000~</time7>

<pn0>~sys_ram0x60000000~</pn0>
<pn1>~sys_ram0x60000000~</pn1>
<pn2>~sys_ram0x60000000~</pn2>
<pn3>~sys_ram0x60000000~</pn3>
<pn4>~sys_ram0x60000000~</pn4>
<pn5>~sys_ram0x60000000~</pn5>
<pn6>~sys_ram0x60000000~</pn6>
<pn7>~sys_ram0x60000000~</pn7>
<pn8>~sys_ram0x60000000~</pn8>
<pn9>~sys_ram0x60000000~</pn9>
<pn10>~sys_ram0x60000000~</pn10>
</response>
вроде все работает, но изредка идет мусор, остатки кода и прочее. Стало получше, когда изменил частоту запроса XML в файле site.js с 500 на 100мс, но такое ощущение, что так не хорошо - слишком частые запросы перегрузят там сокет какой нибудь.... Посоветуйте как оптимизировать передачу и прием данных если можете?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Нечего там перегружать. system.xml там гораздо больше и половина вызовов в нем значительно превышают простой sprintf числа.
Оптимизировать это на данном подходе не имеет смыслу. Это надо полностью переделывать на работу UART c websocket и составлять протокол общения с внешним устройством... Я пока занят другим, да и от ESP8266 отказался.
 

Elik

New member
Нечего там перегружать. system.xml там гораздо больше и половина вызовов в нем значительно превышают простой sprintf числа.
Оптимизировать это на данном подходе не имеет смыслу. Это надо полностью переделывать на работу UART c websocket и составлять протокол общения с внешним устройством... Я пока занят другим, да и от ESP8266 отказался.
Гдето читал, но не могу найти, настройки при отключении питания сбрасываются на дефолтные, что куда я не подтянул?
 
Сверху Снизу