fix: KoePi HA-Button ist reiner Anzeige-Refresh ohne Pushover
This commit is contained in:
@@ -261,9 +261,9 @@ const mediaRoutes = require('./tools/media/routes');
|
||||
const mqttClient = require('./mqtt');
|
||||
|
||||
mqttClient.connectMqtt();
|
||||
// HA-Button "KöPi Check jetzt" löst denselben Check wie der 06:00-Cron aus
|
||||
// (respektiert den normalen Diff — Pushover geht nur bei echter Änderung raus)
|
||||
mqttClient.setKoepiCheckHandler(() => koepiRoutes.runDailyCheck());
|
||||
// HA-Button "KöPi Check jetzt" ist ein reiner Anzeige-Refresh — sendet nie
|
||||
// Pushover. Benachrichtigungen bleiben exklusiv dem 06:00-Cron vorbehalten.
|
||||
mqttClient.setKoepiCheckHandler(() => koepiRoutes.refreshOffersOnly());
|
||||
// HA-Buttons "Media Quittieren" / "Media Alle quittieren" — danach sofort den
|
||||
// Media-Anfragen-Sensor + die dynamischen Buttons in HA aktualisieren
|
||||
mqttClient.setMediaAckHandler((id) => {
|
||||
|
||||
@@ -301,6 +301,25 @@ async function sendKoepiPushover(offers) {
|
||||
}
|
||||
}
|
||||
|
||||
// Reiner Anzeige-Refresh für den HA-Button "KöPi Check jetzt" — scraped frisch
|
||||
// und aktualisiert nur die MQTT-Entitäten. Sendet NIE Pushover und rührt den
|
||||
// in admin_settings gespeicherten Vergleichsstand nicht an (der bleibt exklusiv
|
||||
// dem 06:00-Cron vorbehalten, damit dessen Diff-Erkennung korrekt bleibt).
|
||||
async function refreshOffersOnly() {
|
||||
try {
|
||||
const { offers } = await scrapeMarktguru(true);
|
||||
const currentSig = offerSignature(offers);
|
||||
const lastSig = db.prepare('SELECT value FROM admin_settings WHERE key=?').get(KOEPI_SETTINGS_KEY)?.value || '';
|
||||
const changed = currentSig !== lastSig; // nur zur Anzeige im "geändert"-Sensor, löst nichts aus
|
||||
mqttClient.publishKoepiState({ offers, changed });
|
||||
console.log(`🍺 KöPi-Refresh (HA-Button): ${offers.length} Angebot(e) angezeigt, keine Pushover.`);
|
||||
return { changed, sent: false, offerCount: offers.length };
|
||||
} catch (e) {
|
||||
console.error('KöPi Refresh Fehler:', e.message);
|
||||
return { error: e.message };
|
||||
}
|
||||
}
|
||||
|
||||
// Wird täglich um 06:00 vom Scheduler in index.js aufgerufen.
|
||||
// forceNotify=true (manueller Admin-Test): Pushover wird auch ohne Änderung verschickt.
|
||||
async function runDailyCheck(forceNotify = false) {
|
||||
@@ -357,3 +376,4 @@ router.post('/run-daily-check', authenticate, async (req, res) => {
|
||||
|
||||
module.exports = router;
|
||||
module.exports.runDailyCheck = runDailyCheck;
|
||||
module.exports.refreshOffersOnly = refreshOffersOnly;
|
||||
|
||||
Reference in New Issue
Block a user