<<< Back

Как можно НЕ использовать сцены в MJDM. Часть 1.


skysilver (2019-07-23 21:29:12):

Отлично. А исходники будут? ;)

(1)
 
Smoke (2019-07-23 21:41:43):

Да, выкину "как есть" в следующей части.

(1)
 
vashal (2019-07-24 04:34:50):

Вот что-то такое надо добавить в стандартные интерфейсы MDM!

(1)
 
webms (2019-07-24 10:44:16):

Отлично! Спасибо за статью

(0)
 
webms (2019-07-24 11:06:44):

Кстати, у меня тоже была мысль встроить планшет в стену. НО я протестировал на двухстороннем скотче и не понравился результат
Купил первый мини айпад, создал страничку для планшета в МД, повесил, сделал янкость всего вкл.. и заметил что через пару часов работы он просто отваливается от вай файя и перестает обновлять страницы, или жутко начинает тупеть на касания.

Как у вас дела с этим?

(0)
 
Smoke (2019-07-24 11:22:49):

Для планшета заказано крепление на стену, так удобнее) Страницу стоит переодически перезагружать, чтобы избежать перепополнения кеша браузера. Также экран стоит держать постоянно включеным, чтобы работали Ajax запросы...

(0)
 
webms (2019-07-24 12:38:39):

и нет зависаний?

(0)
 
Smoke (2019-07-24 12:51:27):

Неа...

(1)
 
directman (2019-07-24 12:53:07):

Может адаптировать под ПУ и оформить модулем?

(1)
 
directman (2019-07-24 13:18:34):

Для планшета на стене рекомендую https://connect.smartliving.ru/profile/1502/compon...

(1)
 
Smoke (2019-07-24 13:40:12):

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

(0)
 
webms (2019-07-24 16:05:33):

хм.. наверное мой айпад глючный
потому что я отказался и за этого от моей идеи

(0)
 
TurburatoR (2019-07-24 18:58:35):

Спасибо за наводку на Paw. Наконец то могу управлять подсветкой, и выключать экран в режиме НикогоНетДома. В majorDroid эту функцию так и не встроили...

(0)
 
directman (2019-07-24 22:04:21):

По paw у меня есть даже заготовка модуля. Времени адаптировать как обычно не хватает. https://github.com/directman66/majordomo-mqtt_paw

Если кто допилит, я буду премного благодарен.

(0)
 
directman (2019-07-24 22:11:58):

Ждем странички со стилями.

(0)
 
Smoke (2019-07-24 22:36:51):

Делюсь ссылкой - https://yadi.sk/d/NtX9OrEgrGBK0w Как уже говорил - отдаю как есть. Многое не доделано.

(1)
 
directman (2019-07-25 06:23:41):

Загрузилось.Очень круто. Теперь было бы круто шаблон натравить на ПУ.

(0)
 
directman (2019-07-25 06:53:24):

не хватает json/nowtime.php

(0)
 
newz20 (2019-07-25 10:38:12):

Предлагаю взяться за задачу разработки интерфейса в коннекте которая. Может Вас это заинтересует? https://connect.smartliving.ru/tasks/249.html думаю когда вы начнете выкладывать наработки бюджет вырастет еще.

(1)
 
nick7zmail (2019-07-25 15:33:35):

А смысл не использовать сцены, когда на сцене вполне реализуется тоже самое? В чём вы видите "кривизну" сцен МДМ?

(0)
 
vashal (2019-07-26 03:01:30):

"Кривизна" не в плане возможностей, а в плане "топорности" интерфейса.

(0)
 
nick7zmail (2019-07-26 05:46:38):

Стандартные элементы да, немого топорные. Но
1) их можно "изуродовать" через css (см. приимер на сцене город из маркета), и привести к более-менее приемлимому виду.
2) Никто их не заставляет использовать, можно юзать чистые html элементы, но при этом не терять функционал сцен (создавать состояния у html элементов, использовать фишки типа "выполнить при клике" и вызывать методы, код, и что хотите...
3) Раз уж взялись свои странички писать - крайне рекомендую использовать для обновления свойств вебсокеты а не аякс...т.к. во-первых получите обновление в реалтайме (в отличие обновления по таймеру в аяксе) во-вторых не будете "долбить" сервер запросами каждый раз как наступит цикл таймера.
вот опять же пример


$.subscribe('wsConnected', function (_) {
         var payload;
         payload = new Object();
         payload.action = 'Subscribe';
         payload.data = new Object();
         payload.data.TYPE='properties';
         payload.data.PROPERTIES='sensor_temp04.value'; //подписываемся на сенсор
         wsSocket.send(JSON.stringify(payload));
        });
function processPropertiesUpdate(data) {
         var obj=jQuery.parseJSON(data);
         var objCnt = obj.length;
           if (objCnt) {
              for(var i=0;i<objCnt;i++) {
               if (obj[i]['PROPERTY']=='sensor_temp04.value') {
      src_temp1=obj[i]['VALUE'];//вот тут забираем значение
         alert(src_temp1);
      $.publish('sensor_temp04.value.updated', obj[i]['VALUE']);}
              }
           }
        }$.subscribe('wsData', function (_, response) {
          if (response.action=='properties') {
           processPropertiesUpdate(response.data);
          }
          });
(0)
 
nick7zmail (2019-07-26 05:57:46):

А...и если пишите не в домашних страницах, а прямо на отдельной странице - сокеты нужно ещё инициализировать. Подключить websockets.html, или прописать код

<script type="text/javascript" src="/js/jquery.tiny-pubsub.js"></script>
<script>

var wsTimer=0;
var startedWebSockets=0;

    function startWebSockets() {
        var loc = window.location, new_uri;
        var serverUrl='';
        if (loc.protocol === "https:") {
                serverUrl = "wss:";
        } else {
                serverUrl = "ws:";
        }
        serverUrl += "//" + loc.host + ':8001/majordomo';
        try {
            console.log('Conneting to '+serverUrl);
         if (window.MozWebSocket) {
           wsSocket = new MozWebSocket(serverUrl);
         } else if (window.WebSocket) {
           wsSocket = new WebSocket(serverUrl);
         }

        } catch (e) {
            console.log('Failed connecting to '+serverUrl);
             return false;
        }
        wsSocket.binaryType = 'blob';
        wsSocket.onopen = function(msg) {
         ///connected
          console.log('WS connected (three.scene)');
          startedWebSockets=1;
          clearTimeout(wsTimer);
          $.publish('wsConnected');
        };
        wsSocket.onmessage = function(msg) {
          console.log('WS data (three.scene)');
          var response;
          response = JSON.parse(msg.data);
          console.log('Action: '+response.action+'; Data: '+response.data);
          $.publish('wsData', response);
          return;
        };
        wsSocket.onclose = function(msg) {
          //disconnected
          startedWebSockets=0;
          wsTimer=setTimeout('startWebSockets();', 5*1000);
          $.publish('wsDisconnected', []);
          console.log('WS disconnected (three.scene)');
          return;
        };
    }
$(document).ready(function(){

startWebSockets();

});

</script>
(2)
 
Xor (2019-07-28 00:47:16):

serverUrl += "//" + loc.host + ':8001/majordomo'; --- порт в конфиге определяется через 'WEBSOCKETS_PORT', можно налететь(

(0)
 
nick7zmail (2019-07-28 07:31:06):

Ну я ж как пример привёл...если человек переопределил порт в конфиге, он наверное знает об этом, и в коде заменит :-D

(1)
 
Xor (2019-07-28 12:39:07):

вот для этого человека и написал)

(0)
 
oleg1971 (2019-07-29 20:21:07):

А можете рассказать поподробней, как управлять яркостью планшета?

(0)
 

Please login to leave comments. Join us!