Помогите со скриптом.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Помогите со скриптом.

Сообщение adzam » Пн апр 18, 2022 3:28 pm

Прошу помощи у студии.
Нужно создать скрипт который сможет обновить конкретный DIV на конкретной странице.
например я хочу, чтоб при изменеии температуры на улице ow_fact.temperature запускался какой либо скрипт или метод и обновлял <div id="pogoda" > на страние default.html .
Как все сделать понятно, кроме тела самого скрипта.
<div id="pogoda" > обновляю постоянно с помощью скрипта :

<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>


Если нужно обновлять много дивов то страница явно напрягается, поэтому хочу запустить чтоб див обновлялся только при измнении переменной ow_fact.temperature
Помогите пожадуйста кто в этом разбирается и сможет помочь написать такой скрипт.
В нэте искал но не нашел ничего.
Заранее спасибо за любой ответ.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Re: Помогите со скриптом.

Сообщение adzam » Пн апр 18, 2022 8:40 pm

Очень жаль что никто не знает, или не хочет ...
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Jilber
Сообщения: 682
Зарегистрирован: Ср май 03, 2017 7:41 pm
Благодарил (а): 111 раз
Поблагодарили: 107 раз

Re: Помогите со скриптом.

Сообщение Jilber » Пн апр 18, 2022 9:17 pm

А нельзя использовать "Запускать метод при изменении" ?
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Re: Помогите со скриптом.

Сообщение adzam » Пн апр 18, 2022 9:39 pm

Так я метод запустить могу а что в методе написать?
Вот в чем проблема....
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Помогите со скриптом.

Сообщение fandaymon » Пн апр 18, 2022 10:14 pm

adzam писал(а):
Пн апр 18, 2022 3:28 pm
Прошу помощи у студии.
Нужно создать скрипт который сможет обновить конкретный DIV на конкретной странице.
например я хочу, чтоб при изменеии температуры на улице ow_fact.temperature запускался какой либо скрипт или метод и обновлял <div id="pogoda" > на страние default.html .
Как все сделать понятно, кроме тела самого скрипта.
<div id="pogoda" > обновляю постоянно с помощью скрипта :

<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>


Если нужно обновлять много дивов то страница явно напрягается, поэтому хочу запустить чтоб див обновлялся только при измнении переменной ow_fact.temperature
Помогите пожадуйста кто в этом разбирается и сможет помочь написать такой скрипт.
В нэте искал но не нашел ничего.
Заранее спасибо за любой ответ.
В принципе тут возможны 2 варианта

1. По таймеру запускать джаваскипт, который будет запрашивать через ajax нужное свойство и при его изменении менять то, что выводиться в диве

2. Использовать веб-сокеты - на страничке подписаться на обновления
СпойлерПоказать

Код: Выделить всё

<script type="text/javascript">

  var httpRefreshTimer = 0;
  var subscribedWebSockets=0;
  var subscribedWebSocketsTimer;
  var requestSent = Math.round(+new Date()/1000);
  function subscribeToStatus() {
   console.log('Sending devices subscription request...');
   var payload;
   payload = new Object();
   payload.action = 'Subscribe';
   payload.data = new Object();
   payload.data.TYPE='events';
   payload.data.EVENTS='TUSTATUS';
   wsSocket.send(JSON.stringify(payload));
   subscribedWebSocketsTimer=setTimeout('subscribeToStatus();', 3000);
   return false;
  }

  $.subscribe('wsConnected', function (_) {
   clearTimeout(httpRefreshTimer);
   subscribeToStatus();
  });

  $.subscribe('wsData', function (_, response) {
   if (response.action=='subscribed') {
    console.log('Subscription to devices confirmed.');
    clearTimeout(subscribedWebSocketsTimer);
    subscribedWebSockets=1;
   }
   if (response.action=='events') {
    var obj=jQuery.parseJSON(response.data);
    var objCnt = obj.EVENT_DATA.VALUE.length;
    if (obj.EVENT_DATA.VALUE.FIELD=='STATE') {
     if (obj.EVENT_DATA.VALUE.VALUE==0) {
      document.getElementById('tustate'+obj.EVENT_DATA.VALUE.ID).src='../templates/tuya/img/off-button.png';
     } else {
      document.getElementById('tustate'+obj.EVENT_DATA.VALUE.ID).src='../templates/tuya/img/on-button.png';

     } 
     
    } else if (obj.EVENT_DATA.VALUE.FIELD=='ONLINE') {
     var online_control=document.getElementById('tuonline'+obj.EVENT_DATA.VALUE.ID)
     if (obj.EVENT_DATA.VALUE.VALUE==1) {
      online_control.className="label label-success";
      online_control.title="Online";
      online_control.innerHTML="Online";

     } else {
      online_control.className="label label-warning";
      online_control.title="Offline";
      online_control.innerHTML="Offline";

     } 

    }
   }
  });

 </script>
, а при изменении свойства вызывать

Код: Выделить всё

processSubscriptions('TUSTATUS', array('FIELD' => 'ONLINE','VALUE' => $value,'ID' =>$device_id));
Вот такой коде в модуле туи меняет рисунок при изменении свойства ONLINE

TUSTATUS - это название подписки, его надо поменять на своё
За это сообщение автора fandaymon поблагодарил:
adzam (Вт апр 19, 2022 8:23 pm)
Рейтинг: 1.16%
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Re: Помогите со скриптом.

Сообщение adzam » Пн апр 18, 2022 10:56 pm

Мне кажется это не то , этот скрипт проверяет и меняет картинку одну на другую а мне нужно чтоб див перезагрузился и показывал уже новое измененное значение.
Но все равно спасибо за ответ.
Мне кажется что сдесь нужен скрипт типа этого

<script type='text/javascript'>
setInterval(function(){
$("#pogoda").load("index.php #pogoda");
}, 60000);
</script>


но чтоб он не запускался сам через промежуток времени, а чтоб этот скрипт можно было бы запустить из метода,который запускается при изменении значения. Т. е. нужен скрипт который можно запустить дистанционно другой командой.
Я со скриптами слабо знаком поэтому не могу ничего придумать.
Последний раз редактировалось adzam Пн апр 18, 2022 11:03 pm, всего редактировалось 1 раз.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Помогите со скриптом.

Сообщение fandaymon » Пн апр 18, 2022 11:03 pm

adzam писал(а):
Пн апр 18, 2022 10:56 pm
Мне кажется это не то , этот скрипт проверяет и меняет картинку одну на другую а мне нужно чтоб див перезагрузился и показывал уже новое измененное значение.
Но все равно спасибо за ответ.
Что именно будет делать js-скрипт при изменении - это будет зашито в самом скрипте, в данном случае там зашито изменение картинки, никто не мешает менять что-то в диве, примерно таким же образом - выбираем селектором нужный див и меняем в нём то что нужно - класс, innerhtml, цвета и т.д.
За это сообщение автора fandaymon поблагодарил:
adzam (Вт апр 19, 2022 8:23 pm)
Рейтинг: 1.16%
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Re: Помогите со скриптом.

Сообщение adzam » Пн апр 18, 2022 11:06 pm

Да может быть,но к сожалению моих знаний не хватит чтоб переделать этот скрипт.
Поэтому и прошу помощи.
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Помогите со скриптом.

Сообщение Logrus » Вт апр 19, 2022 7:14 am

%объект.свойство% при изменении самого свойства обновляется по веб сокетам и перегзагружает див в котором находится

хз что там тс хочет
За это сообщение автора Logrus поблагодарил:
Svetлая (Ср апр 20, 2022 11:55 am)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Помогите со скриптом.

Сообщение Logrus » Вт апр 19, 2022 7:28 am

adzam писал(а):
Пн апр 18, 2022 11:06 pm
Да может быть,но к сожалению моих знаний не хватит чтоб переделать этот скрипт.
Поэтому и прошу помощи.
https://mjdm.ru/forum/viewtopic.php?f=7&t=3379
читать, понимать, дефаулт.хтмл подписан на веб сокеты вроде б это проверить, но помню сцены в шабку засовывали
За это сообщение автора Logrus поблагодарил:
adzam (Вт апр 19, 2022 8:23 pm)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить