예제 #1
0
def url_porte():
    porte.read_config()
    img_etat = "ouverte"
    img_etat_title = "Porte ouverte"
    img_action = "fermer"
    img_action_title = "Fermer la porte"
    running = False
    if request.method == 'POST':
        # demande de modification de l'etat de la porte
        if porte.is_closed():
            # la porte est fermee
            porte.open()
        else:
            # la porte est ouverte ou en etat instable
            porte.close()
    if porte.is_closed():
        # la porte est fermee
        img_etat = "fermee"
        img_etat_title = "Porte fermee"
        img_action = "ouvrir"
        img_action_title = "Ouvrir la porte"
        Alerteur().remove_alert(porte.module_name)
    elif not porte.is_opened():
        # la porte n'est pas ouverte = porte en deplacement
        img_etat = "en-cours"
        img_etat_title = "En cours de deplacement..."
        running = True
    else:
        # porte ouverte
        Alerteur().remove_alert(porte.module_name)
    template_data = {
        'running':
        running,
        'img_etat':
        url_for("static", filename="img/porte-" + img_etat + ".png"),
        'img_etat_title':
        img_etat_title,
        'img_action':
        url_for("static", filename="img/porte-" + img_action + ".png"),
        'img_action_title':
        img_action_title,
        'url_porte':
        url_for("url_porte"),
        'open_last_date':
        porte.open_last_date,
        'open_next_date':
        porte.open_next_date,
        'close_last_date':
        porte.close_last_date,
        'close_next_date':
        porte.close_next_date,
    }
    return render_template('porte.html', **template_data)
예제 #2
0
 def close(self):
     """ferme la porte"""
     for i in range(self.max_rotation):
         self.stepper.moveOnePeriod(0)
         if self.is_closed():
             break
     if i < self.max_rotation:  # la porte n'est pas arrivee jusqu'en bas
         Alerteur().add_alert(self.module_name,
                              "La porte n'est pas fermee entierement.")
     else:
         Alerteur().remove_alert(self.module_name)
     #self.stepper.stop_motor()
     self.write_state("close")
예제 #3
0
 def open(self):
     """ouvre la porte"""
     for i in range(self.max_rotation):
         self.stepper.moveOnePeriod(1)
         if self.is_closed():
             break
     if i < self.max_rotation:  # la porte n'est pas arrivee jusqu'en haut
         Alerteur().add_alert(self.module_name,
                              "La porte n'est pas ouverte entierement.")
     else:
         Alerteur().remove_alert(self.module_name)
     #self.stepper.stop_motor()
     self.write_state("open")
예제 #4
0
 def close(self):
     """ferme la porte"""
     Alerteur().remove_alert(self.module_name)
     self.motor.backward()
     max = self.max_delai * 2
     i = 0
     while i < max:
         if self.is_closed():
             break
         time.sleep(0.5)
         i += 1
     self.motor.stop()
     if i == max:
         Alerteur().add_alert(self.module_name,
                              "La porte n'est pas fermee entierement.")
     self.write_state("close")
예제 #5
0
 def open(self):
     """ouvre la porte"""
     Alerteur().remove_alert(self.module_name)
     self.motor.forward()
     max = self.max_delai * 2
     i = 0
     while i < max:
         if self.is_opened():
             break
         time.sleep(0.5)
         i += 1
     self.motor.stop()
     if i == max:
         Alerteur().add_alert(self.module_name,
                              "La porte n'est pas ouverte entierement.")
     self.write_state("open")
예제 #6
0
 def callback_interrupt(self, bouton):
     """callback d'interruption"""
     if bouton == self.pin_bas:
         if self.last_level != 0:  # le niveau d'eau n'était pas bas
             self.write_level(0)
             alerteur = Alerteur()
             alerteur.add_alert(self.module_name, "Niveau d'eau faible.")
     else:
         if self.last_level == 0:  # le niveau n'est plus bas
             alerteur = Alerteur()
             alerteur.remove_alert(self.module_name)
         if bouton == self.pin_milieu:
             self.write_level(1)
         else:
             self.write_level(2)
예제 #7
0
 def read_level(self):
     """lit le niveau de batterie"""
     addresse = 0x48
     self.bus.write_byte(addresse,self.channel)
     value = self.bus.read_byte(addresse)
     time.sleep(1)
     volts = self.convert_volts(value,2)
     self.write_level(volts)
     alerteur = Alerteur()
     if volts < self.seuil_min:
         alerteur.add_alert(self.module_name, "Batterie faible.")
     else:
         alerteur.remove_alert(self.module_name)
     return volts
예제 #8
0
def url_alertes():
    template_data = {'alertes': Alerteur().alertes}
    return render_template('alertes.html', **template_data)