fix: KoePi HA-Button ist reiner Anzeige-Refresh ohne Pushover

This commit is contained in:
2026-07-10 20:26:37 +02:00
parent ccef4a3f4d
commit 37ebad91c6
2 changed files with 23 additions and 3 deletions

View File

@@ -261,9 +261,9 @@ const mediaRoutes = require('./tools/media/routes');
const mqttClient = require('./mqtt'); const mqttClient = require('./mqtt');
mqttClient.connectMqtt(); mqttClient.connectMqtt();
// HA-Button "KöPi Check jetzt" st denselben Check wie der 06:00-Cron aus // HA-Button "KöPi Check jetzt" ist ein reiner Anzeige-Refresh — sendet nie
// (respektiert den normalen Diff — Pushover geht nur bei echter Änderung raus) // Pushover. Benachrichtigungen bleiben exklusiv dem 06:00-Cron vorbehalten.
mqttClient.setKoepiCheckHandler(() => koepiRoutes.runDailyCheck()); mqttClient.setKoepiCheckHandler(() => koepiRoutes.refreshOffersOnly());
// HA-Buttons "Media Quittieren" / "Media Alle quittieren" — danach sofort den // HA-Buttons "Media Quittieren" / "Media Alle quittieren" — danach sofort den
// Media-Anfragen-Sensor + die dynamischen Buttons in HA aktualisieren // Media-Anfragen-Sensor + die dynamischen Buttons in HA aktualisieren
mqttClient.setMediaAckHandler((id) => { mqttClient.setMediaAckHandler((id) => {

View File

@@ -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. // Wird täglich um 06:00 vom Scheduler in index.js aufgerufen.
// forceNotify=true (manueller Admin-Test): Pushover wird auch ohne Änderung verschickt. // forceNotify=true (manueller Admin-Test): Pushover wird auch ohne Änderung verschickt.
async function runDailyCheck(forceNotify = false) { async function runDailyCheck(forceNotify = false) {
@@ -357,3 +376,4 @@ router.post('/run-daily-check', authenticate, async (req, res) => {
module.exports = router; module.exports = router;
module.exports.runDailyCheck = runDailyCheck; module.exports.runDailyCheck = runDailyCheck;
module.exports.refreshOffersOnly = refreshOffersOnly;