• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 отказался.
Гдето читал, но не могу найти, настройки при отключении питания сбрасываются на дефолтные, что куда я не подтянул?
 
Сверху Снизу