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');
|
const mqttClient = require('./mqtt');
|
||||||
|
|
||||||
mqttClient.connectMqtt();
|
mqttClient.connectMqtt();
|
||||||
// HA-Button "KöPi Check jetzt" lö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) => {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user