Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

MQTTwarn

Тема в разделе "Домашние IoT серверы", создана пользователем Victor, 3 июн 2015.

  1. alfa2

    alfa2 Новичок

    Сообщения:
    25
    Симпатии:
    1
    подумал, посоветовался с Kuthullu Himself и изменил секцию

    squlite_timestamp.ry
    Код (Text):
    1.  
    2.     c = conn.cursor()
    3.     try:
    4.         c.execute('CREATE TABLE IF NOT EXISTS %s (id INTEGER PRIMARY KEY AUTOINCREMENT, topic TEXT, payload TEXT, data DATETIME NOT NULL)' % table)
    5.     except Exception, e:
    6.         srv.logging.warn("Cannot create sqlite table in %s : %s" % (path, str(e)))
    7.         return False
    8.  
    9.       text = item.message
    10.     topic = item.topic
    11.  
    12.     try:
    13.         c.execute('INSERT INTO %s VALUES (NULL, ?, ?, datetime(\'now\'))' % table, (topic, text, ))
    14.         conn.commit()
    15.         c.close()
    16.  
    в mqttwarn.ini
    Код (Text):
    1. launch    =  sqlite_timestamp
    2.  
    3. [config:sqlite_timestamp]
    4. targets = {
    5.   'base' : [ '/mnt/sda2/mydb.db',  'sensor' ]
    6.   }
    7.  
    8. [esp8266/ESP00aaaaa6/dsw1]
    9. targets = log:warn, sqlite_timestamp:base
    10.  
    11. [esp8266/ESP00bbbb33/dhth1]
    12. targets = log:warn, sqlite_timestamp:base
    теперь в таблицу добавилась еще ячейка topic (например вида - "esp8266/ESP00aaaaa6/dsw1")
    все данные складываю в одну таблицу.

    вытаскиваю на web страницу средствами php (главное работает на любой платформе) , пока криво (особенно когда вывожу данные с нескольких topic'ов в одну таблицу), как научусь, будет красиво
    Код (Text):
    1. <?php
    2.  
    3. $db = new SQLite3('/mnt/sda2/mydb.db');
    4. $db->prepare('PRAGMA journal_mode=WAL;');
    5. $sql=('SELECT topic, payload, datetime(data, "+180 minutes")
    6. FROM sensor
    7. WHERE topic LIKE "esp8266/ESP00aaaaa6/dsw1"
    8. ORDER BY data
    9. DESC LIMIT 48');
    10. $result = $db->query($sql);
    11.  
    12. echo '<table border="1">';
    13. echo '<tr>';
    14. echo '<th align=center width="200"><font color=blue>Дата, время</font></th>';
    15. echo '<th align=center width="150"><font color=blue>кубов</font></th>';
    16.  
    17. while ($row = $result->fetchArray(SQLITE3_ASSOC))
    18. {
    19. echo '
    20.   <tr>
    21.   <td align=center width="150">'.$row['datetime(data, "+180 minutes")'].'</td>
    22.   <td align=center width="100">'.$row['payload'].'</td>
    23.   </tr>
    24. ';
    простенько, и без графиков (позже нарисую)
     

    Вложения:

    • water_c.png
      water_c.png
      Размер файла:
      59,4 КБ
      Просмотров:
      14
    Последнее редактирование: 21 окт 2018

Поделиться этой страницей