Чтение базы данных Home Assistant с помощью Processing

Просто открыть базы можно с помощью например «DB Browser for SQLite». Я брал этот: https://sqlitebrowser.org/.

Чтобы читать данные из базы (предварительно скопированной из Raspberry на компьютер), использовал import de.bezier.data.sql.*; Брал здесь: http://bezier.de/processing/libs/sql/ или здесь: https://github.com/fjenett/sql-library-processing. Документация — http://bezier.de/processing/libs/sql/documentation/de/bezier/data/sql/SQLite.html

Однако с первого раза не получилось — при попытке connect() появлялась ошибка «java.sql.SQLException: [SQLITE_NOTADB] File opened that is not a database file (file is encrypted or is not a database)».

Нашел что версия 3.7.2 xerial sqlite-jdbc которая используется в библиотеке, похоже несовместима с версией MacOS (у меня 10.13.6). Зато совместима версия 3.7.15-M1, которую взял тут: https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.7.15-M1

После этого в каталоге libraries/BesierSQLib/library заменил находящийся там файл sqlite-jdbc-3.7.2.jar на новый, переименовав его так же как старый чтобы именно он импортировался в библиотеку (т.е. в имени файла указано 3.7.2, но реально в нем находится версия 3.7.15-M1).

После этого Processing смог прочитать базу. Пример скетча:

import de.bezier.data.sql.*;
SQLite db;
String tt[];

void setup() {
//size( 450, 450 );
db = new SQLite( this, «home-assistant_v2.db» ); // open database file

if ( db.connect() ) {
  println("Connect ok. Tables:");
  tt = db.getTableNames();
  for (String t : tt) {
    println(t);
  }
// db.query( "select state, created from states where entity_id='sensor.mh_z19_co2_value'" );
// while (db.next ()) {
// println(db.getString("state"), db.getString("created"));
// }

  }
  else {
    println("Connect failed");
  }
}