support PostgreSQL database
This commit is contained in:
@@ -47,6 +47,11 @@ Wymagane parametry:
|
|||||||
* ENERGA_USERNAME - nazwa użytkownika w aplikacji Energa Mój licznik
|
* ENERGA_USERNAME - nazwa użytkownika w aplikacji Energa Mój licznik
|
||||||
* ENERGA_PASSWORD - hasło użytkownika w aplikacji Energa Mój licznik
|
* ENERGA_PASSWORD - hasło użytkownika w aplikacji Energa Mój licznik
|
||||||
|
|
||||||
|
Opcjonalne parametry:
|
||||||
|
|
||||||
|
* POSTGRESQL_CONNSTRING - namiar na bazę PostgreSQL do przechowywania odczytów;
|
||||||
|
format opisany w [dokumentacji PGSQL](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS)
|
||||||
|
(przykładowo `postgresql://uzytkownik:haslo@serwer/mojlicznik`)
|
||||||
|
|
||||||
## Konfiguracja sensorów
|
## Konfiguracja sensorów
|
||||||
Do HA możesz dodać sensory, które zawierają informacje udostępniane przez API
|
Do HA możesz dodać sensory, które zawierają informacje udostępniane przez API
|
||||||
|
|||||||
14
src/api.py
14
src/api.py
@@ -1,4 +1,4 @@
|
|||||||
from peewee import SqliteDatabase
|
from peewee import SqliteDatabase, PostgresqlDatabase
|
||||||
from flask import Flask, jsonify, request, redirect, url_for, abort
|
from flask import Flask, jsonify, request, redirect, url_for, abort
|
||||||
from waitress import serve
|
from waitress import serve
|
||||||
#from datetime
|
#from datetime
|
||||||
@@ -9,10 +9,14 @@ import urllib.parse
|
|||||||
|
|
||||||
logger = logging.getLogger("energaMeter.api")
|
logger = logging.getLogger("energaMeter.api")
|
||||||
|
|
||||||
|
if postgresql_connstring := os.getenv("POSTGRESQL_CONNSTRING"):
|
||||||
path = os.path.dirname(os.path.abspath(__file__))
|
from psycopg2.extensions import parse_dsn
|
||||||
db_file = 'data/database.sqlite'
|
db_name = parse_dsn(postgresql_connstring)['dbname']
|
||||||
db = SqliteDatabase(os.path.join(path, db_file))
|
db = PostgresqlDatabase(db_name, dsn=postgresql_connstring)
|
||||||
|
else:
|
||||||
|
path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
db_file = 'data/database.sqlite'
|
||||||
|
db = SqliteDatabase(os.path.join(path, db_file))
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from peewee import SqliteDatabase
|
from peewee import SqliteDatabase, PostgresqlDatabase
|
||||||
from datetime import datetime, timedelta, date
|
from datetime import datetime, timedelta, date
|
||||||
import calendar, requests, re, time, json, os, logging
|
import calendar, requests, re, time, json, os, logging
|
||||||
import http.cookiejar as cookiejar
|
import http.cookiejar as cookiejar
|
||||||
@@ -10,9 +10,16 @@ import urllib.parse
|
|||||||
|
|
||||||
logger = logging.getLogger("energaMeter")
|
logger = logging.getLogger("energaMeter")
|
||||||
|
|
||||||
path = os.path.dirname(os.path.abspath(__file__))
|
if postgresql_connstring := os.getenv("POSTGRESQL_CONNSTRING"):
|
||||||
db_file = 'data/database.sqlite'
|
from psycopg2.extensions import parse_dsn
|
||||||
db = SqliteDatabase(os.path.join(path, db_file))
|
db_name = parse_dsn(postgresql_connstring)['dbname']
|
||||||
|
db_host = parse_dsn(postgresql_connstring)['host']
|
||||||
|
db = PostgresqlDatabase(db_name, dsn=postgresql_connstring)
|
||||||
|
logger.info(f"Używam bazy PostgreSQL „{db_name}” na {db_host}")
|
||||||
|
else:
|
||||||
|
path = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
db_file = 'data/database.sqlite'
|
||||||
|
db = SqliteDatabase(os.path.join(path, db_file))
|
||||||
|
|
||||||
class ChartType(Enum):
|
class ChartType(Enum):
|
||||||
DAY = "DAY"
|
DAY = "DAY"
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user