Files
harbour-aira/rpm/harbour-aira.spec
T

121 lines
5.4 KiB
RPMSpec

Name: harbour-aira
Summary: Control your Aira heat pump through a local bridge
Version: 0.6.0
Release: 1
Group: Qt/Qt
License: MIT
URL: https://git.hackatoniclife.com/kaneda/harbour-aira
Source0: %{name}-%{version}.tar.gz
Source1: %{name}.desktop
Requires: sailfishsilica-qt5 >= 0.10.9
BuildRequires: pkgconfig(sailfishapp) >= 1.0.2
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: desktop-file-utils
# lupdate/lrelease: i .qm si compilano in build (CONFIG += sailfishapp_i18n).
BuildRequires: qt5-qttools-linguist
%global debug_package %{nil}
%description
Native Sailfish OS client for an Aira Home heat pump.
It does not talk to the Aira cloud directly: the cloud API is gRPC over HTTP/2
and Qt 5.6 has no HTTP/2. A small bridge on the user's server (Python,
pyairahome) keeps the credentials and exposes the plant as JSON over HTTP/1.1.
The app shows the current state, the energy data (heat produced, electricity
used, efficiency, savings) and sends the hot-water and heating commands.
The interface is in English and Italian: by default it follows the phone
language and falls back to English, and the language can also be picked in the
app settings.
Address and token of the bridge live in the app settings (AppConfigLocation);
no personal data is stored in the binary.
%changelog
* Sat Oct 10 2026 Carlo <carlo@carlobaratto.it> - 0.6.0-1
- Home di sola consultazione: stato in una riga con pallino colorato, le due
letture (casa e acqua calda) grandi e toccabili, tre azioni rapide; le due
regolazioni e i pulsanti di navigazione escono dalla Home
- pagina Regolazioni: obiettivo casa e obiettivo acqua calda, ognuno con il
valore attuale sempre visibile, slider, valori rapidi e conferma; boost ACS
- Comandi impianto: quattro interruttori al posto di otto pulsanti acceso/
spento, piu' tre pulsanti per le azioni senza stato; diagnostica spostata
nella pagina Impianto
- messaggi dei comandi ancorati in fondo alla pagina, visibili sempre
- numeri vecchi mostrati spenti, con l'ora dell'ultimo aggiornamento
- lo stato si rilegge da solo due secondi dopo un comando
* Sat Oct 10 2026 Carlo <carlo@carlobaratto.it> - 0.5.0-1
- schermata iniziale riordinata come l'app ufficiale: temperatura esterna in
alto, messaggio di stato, scheda dell'impianto con casa e acqua calda
- pagina Dati: calore prodotto, elettricita' usata, efficienza (COP) e risparmi
- pagina Impianto: stato, termostato a parete, versioni del software, errori
* Sat Oct 10 2026 Carlo <carlo@carlobaratto.it> - 0.4.0-1
- interfaccia in inglese e italiano, scelta nelle impostazioni con ripiego
sull'inglese; numeri con il separatore decimale della lingua
* Sat Oct 10 2026 Carlo <carlo@carlobaratto.it> - 0.3.0-1
- pagina Altri comandi: assenza, night mode, riscaldamento forzato, legionella,
ACS on/off, verifica impianto; stato attuale in cima alla pagina
* Fri Oct 09 2026 Carlo <carlo@carlobaratto.it> - 0.2.0-1
- temperatura della casa e obiettivo per zona (slider 5-30 gradi)
* Fri Oct 09 2026 Carlo <carlo@carlobaratto.it> - 0.1.0-1
- prima release: stato impianto, obiettivo ACS, boost ACS
%prep
%setup -q -n %{name}-%{version}
%build
%qmake5
make %{?_smp_mflags}
# Catalogo italiano. Il .pro dichiara CONFIG += sailfishapp_i18n (che sui kit
# recenti genera e installa i .qm da solo), ma su altri kit quel template non li
# produce in modo affidabile — vedi harbour-tide/harbour-quill — e un catalogo
# mancante NON fa fallire la compilazione: l'app resterebbe in inglese senza dire
# niente. Qui lo si rigenera comunque; il file finisce nella stessa cartella dove
# lo cerca src/translator.cpp. Il .ts si cerca con find perche' sfdk usa i
# sorgenti live (shadow build) e la cartella puo' chiamarsi harbour-aira-0.5.0
# (tarball), harbour-aira (clone) o harbour-aira-main (archivio di Gitea).
TS=$(find %{_builddir}/.. -maxdepth 4 -name 'harbour-aira-it.ts' 2>/dev/null | head -1)
if [ -z "$TS" ]; then
echo "ERROR: harbour-aira-it.ts not found" >&2
exit 1
fi
lrelease "$TS" -qm %{_builddir}/harbour-aira-it.qm
%install
make install INSTALL_ROOT=%{buildroot}
mkdir -p %{buildroot}%{_datadir}/applications
# Il catalogo nel data dir dell'app: e' li' che translator.cpp lo carica
# (/usr/share/harbour-aira/translations).
mkdir -p %{buildroot}%{_datadir}/%{name}/translations
install -m 0644 %{_builddir}/harbour-aira-it.qm %{buildroot}%{_datadir}/%{name}/translations/
# Il desktop file si cerca con find: sfdk usa i sorgenti live (shadow build) e
# la cartella sorgente puo' chiamarsi harbour-aira-0.1.0 (tarball), harbour-aira
# (clone) o harbour-aira-main (zip di Gitea).
DESKTOP=$(find %{_builddir}/.. -maxdepth 4 -name '%{name}.desktop' 2>/dev/null | head -1)
if [ -z "$DESKTOP" ] && [ -f %{SOURCE1} ]; then DESKTOP=%{SOURCE1}; fi
if [ -z "$DESKTOP" ]; then
echo "ERROR: %{name}.desktop not found" >&2
exit 1
fi
install -m 0644 "$DESKTOP" %{buildroot}%{_datadir}/applications/%{name}.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop || true
%files
%defattr(-,root,root,-)
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/86x86/apps/%{name}.png
%{_datadir}/icons/hicolor/108x108/apps/%{name}.png
%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
%{_datadir}/icons/hicolor/172x172/apps/%{name}.png
%{_datadir}/%{name}/qml
%{_datadir}/%{name}/translations/%{name}*.qm