Перейти к публикации
iT4iT.CLUB

emaus

Пользователи
  • Публикации

    6
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем emaus


  1. Что-то у меня не получилось, залил скетч в nodemcu все ок, но постоянно мигает лампочка и в Мониторинг порту это:

    >>>stack>>>
    
    ctx: cont
    sp: 3ffffda0 end: 3fffffc0 offset: 01b0
    3fffff50:  00000000 ff000000 00000200 402037a9  
    3fffff60:  3ffe891b 00000051 3fffff40 3ffee854  
    3fffff70:  3ffee7ec 3ffe84df 3ffe84de 40100426  
    3fffff80:  3ffee7ec 3ffee7c0 3ffee68c 4020185c  
    3fffff90:  feefeffe feefeffe feefeffe feefeffe  
    3fffffa0:  3fffdad0 00000000 3ffee824 40204208  
    3fffffb0:  feefeffe feefeffe 3ffe850c 40100711  
    <<<stack<<<
    
     ets Jan  8 2013,rst cause:2, boot mode:(3,7)
    
    load 0x4010f000, len 1384, room 16 
    tail 8
    chksum 0x2d
    csum 0x2d
    v8b899c12
    ~ld
    
    Нет сохраненных показаний счетчиков
    Горячая: 0
    Холодная: 0
    Контрольная сумма: 0x0
    ISR not in IRAM!
    
    Abort called

    Что не так я делаю ?


  2. 18.11.2019 в 22:30, Kitsum сказал:

    @emaus нет, так не получится т.к ключи Вашего массива никак не связаны с его значениями. Сейчас, условно, в $data[5] лежат одни данные, а через секунду совершенно другие и это можно устроить даже не добавляя новые записи в таблицу.

    Все, что Вам требуется это использовать понятные пары ключей и значений, например, так

    
    while($row = $result->fetch_assoc()) {
    	$data[$row['topic']] = $row['value'];
    }

    Далее Вы можете легко обращаться к значениям по имени топика и делать это хоть с массивом, хоть с объектом json. А если потребуется перебрать все, что там есть, то можно использовать foreach, благо он есть во всех современных языках.

    Понял, большое вам спасибо)


  3. 17.11.2019 в 01:07, Kitsum сказал:

    @emaus не совсем понимаю, что Вы делаете т.к объяснение идет в контексте другой программы. Вам стоит предоставить Ваш код и более подробно описать что вы хотите сделать. И если этот вопрос никак не связан с текущим проектом, то лучше создать отдельную тему или напишите мне в приват.

    Я про данный скрипт и говорю.

    Покажу в картинках.

    1й рисунок до добавление новых топиков

    1.thumb.JPG.8bc892fc5c6dd64d687c40497ad53a71.JPG

    2й после добавление новых топиков.

    Добавил два новых топика (/villagebox/in/sensor1/temp/ и /villagebox/in/sensor1/hum/)

    2.thumb.JPG.ab36544dc826807c9056580ba3ad9395.JPG

     

    С помощью php скрипта я делаю json массив

    <?php
    // Set the JSON header
            header("Content-type: text/json");
    
            $mysqli = new mysqli("localhost", "mqtt-agent", "mqttpass", "mqttdb");
            $mysqli -> query("SET NAMES 'utf8'");
    
            if ($mysqli->connect_error) {
                echo("Connection failed: " . $mysqli->connect_error);}
            //else
              //  echo "Connection Ready\n\n";
    
        $data = array();
        $result = $mysqli -> query("SELECT md5,topic,value FROM topics");
        while(($row = $result->fetch_assoc())) {
            //$data[] = array($row['md5'],$row['topic'],(int)$row['value']);
            $data[]= $row;
        }
           echo json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK | SORT_DESC);
    ?>

    Проблема в том что и в выводе массива что и в базе, при добавление нового топика строки меняются местами меняются местами, а хотелось бы что бы при добавление нового топика он добавлялся в самый конец.

    Мне кажется что они так выстраиваются по по значению в столбце md5


  4. Большое спасибо, все заработало :)

    Еще вопросик если можно)

    php скриптом делаю json масив, но когда добавляю новый топик в скрипт массив ломается(индексы меняются)

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

    Хотелось бы что бы они шли в столбик и при добавление нового топика он добавлялся в конец.


  5. 21 час назад, Kitsum сказал:

    @emaus доброе время суток.

    В данном примере нет, но функционал шифрования добавляется с помощью метода tls_set с соответствующими параметрами. Посмотреть их можно тут https://www.eclipse.org/paho/clients/python/docs/

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

    Но гораздо более простой вариант, это отправлять сообщение в нужную ветку на брокер в той программе которая должна была вносить изменения в БД. Это не противоречит политике безопасности и гораздо проще чем компилировать собственные модули для СУБД.

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

    Что-то не могу понять(наверно я не то делаю) пытаюсь запустить скрипт с шифрованием но не выходит.

    Вот что сделал, просто добавил это ниже записи mqttc.connect(mqtt_server, mqtt_port, 60)

                    mqttc.tls_set(ca_certs="mqtt.host.ru.pem", certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED,
                           tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None)

    Сертификат генерировал таким способом

    echo -n | openssl s_client -connect mqtt.host.ru:8883 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > mqtt.host.ru.pem

    Подскажите что не так я дела(скорей всего все)

    --

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

×
×
  • Создать...