Pour cela, j'utilise un Rpi 2 B, avec une Raspbian à jour et Webiopi pour contrôler simplement les E/S GPIO.
J'avais bien avancé, mais pour éviter certains cas particulier, j'ai voulu reprendre la programmation pour nettoyer un peu et optimiser le code.
Mes règles ressembleront à ça:

Genre de cas particulier: Si je démarre une règle à 20h et termine à 1:00, tout fonctionnait bien.... sauf le dernier jour, puisque 1:00 est déjà sur le jour suivant la fin de la règle... donc règle considérée comme inactive...
Pour palier à cela, j'ai voulu jouer avec les dates. Pour cela, j'ai cherché (merci Google) et écrit mon code de cette manière:
Code : Tout sélectionner
   # retrieve current datetime
   now = datetime.datetime.now()
   act_day = datetime.date.isocalendar(now)[2]
   act_year = datetime.date.isocalendar(now)[0]
   # Initialisation des sorties relais 1-7 (la sortie 8 tenant compte de l'état des sorties 1-5 sera piloté automatiquement).
   # Initialisation règle 1:
   # Vérification si début et fin de la règle_1 dans la même année (ex: juin - sept.)
   if mois_debut_1 <= mois_fin_1:
      annee_debut_1 = act_year
      annee_fin_1 = act_year
   # Vérification si début et fin de la règle_1 chevauchent 2 années (ex: nov.-mars)
   if mois_debut_1 > mois_fin_1:
      if mois_debut_1 > mois_en_cours:
         annee_debut_1 = act_year -1
         annee_fin_1 = act_year
      if mois_debut_1 > mois_en_cours:
         annee_debut_1 = act_year
         annee_fin_1 = act_year +1
   # Vérification si début et fin de la règle_1 chevauchent 2 jours (ex: 23:00-07:00)
   if ((heure_debut_1 > heure_fin_1) or ((heure_debut_1 == heure_fin_1) and (minutes_debut_1 > minutes_fin_1))):
      jour_fin_1 = jour_fin_1 + 1
   # Création dates de début et de fin règle_1
   debut_1 = datetime(annee_debut_1,mois_debut_1,jour_debut_1,heure_debut_1,minutes_debut_1)
   fin_1 = datetime(annee_fin_1,mois_fin_1,jour_fin_1,heure_fin_1,minutes_fin_1)J'ai pourtant testé ces lignes de commandes en python sur mon Rpi sans souci... Pour y arriver, il me faut taper:
Code : Tout sélectionner
import datetime
from datetime import datetimeMais dès que j'écris cela dans mon script Webiopi, je n'ai plus accès à l'interface WEB.
Je n'arrive pas à comprendre pourquoi.
PS: je suis un vrai "newbie" et sur Rpi, et Linux et Python... mais je peut apprendre
 
 Pour plus d'infos sur mon projet, c'est par ici
 viewtopic.php?f=34&t=2296
 viewtopic.php?f=34&t=2296