1 janvier 2026 : Les scénarios ne se lancent plus : Patch temporaire

Bonjour,

Comme beaucoup, je ne suis pas à jour de la dernière version:

  • Raspberry 3B + boitier element14 + SSD 128 Giga
  • Bien sur, il n’y a pas de SD, ça boote direct sur le SSD
  • Raspberry buster 64 bits (à jour et pour cause, il n’y a plus d’évolution)
  • Scripts pour boitier element14
  • jeedom 4.4.19
  • Un zwave en openzWave.
  • Un thermostat RadioThermostat CT50 avec son module Wifi piloté par des scripts python en version 2
  • Un dongle zwve AEOTEC

Il tourne parfaitement, pas de reboot

2 jeedoms :

  • un sous la main et un autre à 300km
  • Ils font la gestion et la surveillance du chauffage (gestion des pages horaires, consignes, etc)

La mise à jour avec changement d’OS (qui entre autre mettra python V3 et z-Wave JS), il y a aucune chance que cela fonctionne. Pas question de faire 12 aller retour de 300km …
Pas sur non plus que Raspberry 3B soit suffisant pour Debian 11 …

Alors, les mises à jour, c’est uniquement l’été surtout pour un jeedom à distance …
Donc la version 4.5.2 ce sera pour cet été …

Alors il semblerait que la cause provient d’un test de date dans la fonction isDateOk du fichier /var/www/html/core/jeedom.class.php qui interdit les dates supérieures au 1 janvier 2026.

Patch avec l’éditeur de fichier:
1 - j’ai sauvegardé la version courante (çà peut servir)
2 - j’ai recherché la fonction « public static function isDateOk() » (située un peu après le milieu du fichier

/**
	 *
	 * @return boolean
	 */
	public static function isDateOk() {
		if (config::byKey('ignoreHourCheck') == 1) {
			return true;
		}
		$cache = cache::byKey('hour');
		$lastKnowDate = $cache->getValue();
		if ($lastKnowDate > strtotime('UTC')) {
			self::forceSyncHour();
			sleep(3);
			if ($lastKnowDate > strtotime('UTC')) {
				return false;
			}
		}
		$minDateValue = new \DateTime('2020-01-01');
		$mindate = strtotime($minDateValue->format('Y-m-d 00:00:00'));
		$maxDateValue = $minDateValue->modify('+6 year')->format('Y-m-d 00:00:00');
		$maxdate = strtotime($maxDateValue);
		if (strtotime('now') < $mindate || strtotime('now') > $maxdate) {
			self::forceSyncHour();
			sleep(3);
			if (strtotime('now') < $mindate || strtotime('now') > $maxdate) {
				log::add('core', 'error', __('La date du système est incorrecte (avant ' . $minDateValue . ' ou après ' . $maxDateValue . ') :', __FILE__) . ' ' . (new \DateTime())->format('Y-m-d H:i:s'), 'dateCheckFailed');
				return false;
			}
		}
		return true;
	}

3 - J’ai remplacé la ligne suivante:
$maxDateValue = $minDateValue->modify(‹ +6 year ›)->format(‹ Y-m-d 00:00:00 ›);
par
$maxDateValue = $minDateValue->modify(‹ +16 year ›)->format(‹ Y-m-d 00:00:00 ›);

4 - 10 ans de plus ça laisse de la marge pour installer un nouveau système.

Pas sur que cela soit suffisant comme patch temporaire mais les scénarios semblent se lancer correctement

Cordialement Michel

2 « J'aime »

Bonsoir,

Tout ceci a déjà été expliqué, débattu, corrigé des le 1er janvier au matin.

Sinon belle analyse.

Merci pour votre réponse, mais mon inquiétude est de savoir si c’est suffisant comme patch temporaire

Non, si vous voulez conserver vos historiques vous avez 2 autres lignes à corriger :yum:

Pour les scénarios oui.

Mais il reste ie souci sur les historiques a corriger si ce n’est pas encore fait

Mais ca ne sert a rien de chercher quoi corriger tout a déjà été donné sur le forum :wink:

1 « J'aime »

Bonsoir,

Merci pour le lien pour la correction des historiques
1 - var/www/html/core/history.class.php

	/**
	 * Archive data from history into historyArch
	 */
	public static function archive() {
		global $JEEDOM_INTERNAL_CONFIG;
		$sql = 'DELETE FROM history WHERE `value` IS NULL';
		DB::Prepare($sql, array());
		$sql = 'DELETE FROM historyArch WHERE `value` IS NULL';
		DB::Prepare($sql, array());
		$sql = 'DELETE FROM history WHERE `datetime` <= "2010-01-01 01:00:00" OR  `datetime` >= "2036-01-01 01:00:00"';
		DB::Prepare($sql, array());
		$sql = 'DELETE FROM historyArch WHERE `datetime` <= "2010-01-01 01:00:00" OR  `datetime` >= "2036-01-01 01:00:00"';
		DB::Prepare($sql, array());
		$sql = 'DELETE FROM history WHERE `value` IS NULL';
		DB::Prepare($sql, array());

J’ai mis 2010 en valeur mini et 2036 en valeur maxi

J’ai fait le patch sur mon jeedom local, je ferai demain sur le jeedom distant (il manquera quelques historiques, mais ce n’est pas grave)

Merci

Bonjour,

Tout est de nouveau normal grâce à ces deux patches temporaires …
Même le le plugin teleinfo alimenté par Wifinfo V3.0.1 sur esp32 a retrouvé son historique journalier

Je vais faire la mise à jour du jeedom distant
Enfin je ferai les backups vers mon NAS qui serviront de base pour l’upgrade

Merci à vous