Реализую для себя проект домашнего счётчика энергии с последующим отображением потребления за м-лет. (может быть и за н-лет, посмотрим на сколько хватит ресурсов).
Электроника на базе Ардуино считывает показания 20 датчиков и по готовности, передаёт данные на сервер.
Сервер в виде небольшого роутера GL-AR150, под управлением OpenWRT, имеет на борту lighttpd, php5 и SQLite3. Arduino запускает скрипт обновления данных.
Алгоритм довольно прост:
- Проверяем дату-время в которое были получены данные
- Если в БД даташтамп на минуту mm уже есть, то добавляем к нынешним значениям и делаем инкремент коэффициэнта деления. Если нет даташтампа, то делаем новую запись с минутой mm+1
- Обновляем данные в даташтампе на минуту mm, путём усреднения с помощью коэффициента
Возможно для сервера который будет работать почти без нагрузки, можно и над кодом не пыхтеть, а "состряпать" что-нибудь. Но душа просит изящного решения.
Собственно вопрос, в предыдущей сессии БД получила свою новую запись в виде новой строки или обновления старой. Как в новой сессии определить ID последний записи, если на нём стоит значение AUTOINCREMENT.
last_insert_rowid() - в новом соединении с БД выдаёт 0, или я его не правильно понял
max(id) - работает, но чопорно
select asc limit 1 - хуже чем max(id)
Если есть предложения по изменении алгоритма, то тоже буду рад новым идеям.