Exemplo n.º 1
0
def test_schedConflict():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=3)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=1)
  cfg.valves['valve1'].schedules['sched2'] = cfg.schedules['sched2']
  cfg.valves['valve2'].schedules.clear()
  cfg.valves['valve3'].schedules.clear()
  cfg.valves['valve4'].schedules.clear()
  cfg.valves['valve5'].schedules.clear()
  assertValves(valves, ['valve1'], [(False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(5)
  assertValves(valves, ['valve1'], [(True, True)])
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assertValves(valves, ['valve1'], [(True, True)])
  assert len(q.queue) == 0
  time.sleep(60)
  assert len(q.queue) == 0
  assert valves['valve1'].secondsDaily == 240
Exemplo n.º 2
0
def test_sh_mqttErrors():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    setStartTimeToNow(cfg, 'sched1', duration=0.5)
    setStartTimeToNow(cfg, 'sched2', deltaInMinutes=10)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    irrigate.start()
    time.sleep(2)
    irrigate.mqtt.processMessages("xxx/suspend/valve1/command", "asd")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/open/valve1/command", "asd")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve1/command", "")
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/suspend/valve1/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve1/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/asd/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("xxx/enable/valve786/command", 4)
    time.sleep(1)
    irrigate.mqtt.processMessages("", "")
    time.sleep(1)
    irrigate.mqtt.processMessages("/", 4)
    time.sleep(30)
    assert valves['valve1'].secondsDaily == 30
Exemplo n.º 3
0
def test_sh_mqttDisableAfterOpen():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    cfg.valves['valve1'].enabled = False
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
Exemplo n.º 4
0
def test_sh_mqttOpen2():
    irrigate, logger, valves, q, cfg = test_sh_mqttOpen()
    irrigate.mqtt.processMessages("xxx/open/valve2/command", 0.2)
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True),
                                                          (True, True),
                                                          (False, False)])
    assert len(q.queue) == 0
    return irrigate, logger, valves, q, cfg
Exemplo n.º 5
0
def test_schedPerSeason():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=1)
  cfg.valves['valve2'].schedules.clear()
  setStartTimeToNow(cfg, 'sched2', duration=1)
  cfg.schedules['sched1'].seasons.clear()
  cfg.schedules['sched1'].seasons.append(irrigate.getSeason(cfg.latitude))
  cfg.schedules['sched2'].seasons.clear()
  cfg.schedules['sched2'].seasons.append(irrigate.getSeason(-1 * cfg.latitude))
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
Exemplo n.º 6
0
def test_sh_mqttDisableWhileInQueue():
    irrigate, logger, valves, q, cfg = test_sh_mqttOpen2()
    irrigate.mqtt.processMessages("xxx/open/valve3/command", 1)
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True),
                                                          (True, True),
                                                          (False, False)])
    assert len(q.queue) == 1
    cfg.valves['valve1'].enabled = False
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (True, True),
                                                          (True, True)])
    assert len(q.queue) == 0
Exemplo n.º 7
0
def test_schedPerDay():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=1)
  cfg.valves['valve2'].schedules.clear()
  setStartTimeToNow(cfg, 'sched2', duration=1)
  cfg.schedules['sched1'].days.clear()
  dayStr = calendar.day_abbr[datetime.datetime.today().weekday()]
  cfg.schedules['sched1'].days.append(dayStr)
  cfg.schedules['sched2'].days.clear()
  dayStr = calendar.day_abbr[(datetime.datetime.today() + datetime.timedelta(days=1)).weekday()]
  cfg.schedules['sched2'].days.append(dayStr)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
Exemplo n.º 8
0
def test_sh_mqttOpen():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    cfg.valves['valve1'].schedules.clear()
    cfg.valves['valve2'].schedules.clear()
    cfg.valves['valve3'].schedules.clear()
    irrigate.start()
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    irrigate.mqtt.processMessages("xxx/open/valve1/command", 0.2)
    time.sleep(3)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    return irrigate, logger, valves, q, cfg
Exemplo n.º 9
0
def test_sh_mqttOpenDisabled():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    cfg.valves['valve1'].schedules.clear()
    cfg.valves['valve2'].schedules.clear()
    cfg.valves['valve3'].schedules.clear()
    cfg.valves['valve1'].enabled = False
    irrigate.start()
    time.sleep(4)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
    irrigate.mqtt.processMessages("xxx/open/valve1/command", 1)
    time.sleep(4)
    assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False),
                                                          (False, False),
                                                          (False, False)])
    assert len(q.queue) == 0
Exemplo n.º 10
0
def test_schedThirdWaiting():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=1.2)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=1, duration=0.1)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 0
  time.sleep(60)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 1
  time.sleep(12)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (True, True)])
  assert len(q.queue) == 0
  time.sleep(10)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
Exemplo n.º 11
0
def test_schedSimple():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=0.1)
  setStartTimeToNow(cfg, 'sched2', deltaInMinutes=10)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(3)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (True, True), (False, False)])
  assert len(q.queue) == 0
  time.sleep(6)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  assert valves['valve1'].secondsDaily >= 6
Exemplo n.º 12
0
def test_schedOverlap():
  irrigate, logger, cfg, valves, q = init("test_config.yaml")
  setStartTimeToNow(cfg, 'sched1', duration=0.1)
  setStartTimeToNow(cfg, 'sched2', duration=0.1)
  cfg.valves['valve1'].schedules["sched2"] = cfg.schedules['sched2']
  cfg.valves['valve2'].schedules.clear()
  cfg.valves['valve3'].schedules.clear()
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  assert len(q.queue) == 0
  irrigate.start()
  time.sleep(5)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(True, True), (False, False), (False, False)])
  assert len(q.queue) == 0
  time.sleep(10)
  assertValves(valves, ['valve1', 'valve2', 'valve3'], [(False, False), (False, False), (False, False)])
  time.sleep(65)
  assert valves['valve1'].secondsDaily == 12
  assert len(q.queue) == 0
Exemplo n.º 13
0
def test_sh_sensorOverridesMqtt():
    irrigate, logger, cfg, valves, q = init("test_config.yaml")
    setStartTimeToNow(cfg, 'sched4')
    cfg.valves['valve1'].schedules.clear()
    cfg.valves['valve2'].schedules.clear()
    cfg.valves['valve3'].schedules.clear()
    cfg.schedules['sched4'].sensor.handler.disable = True
    irrigate.start()
    time.sleep(3)
    # Should be handled but not opened
    assertValves(valves, ['valve5'], [(True, False)])

    irrigate.mqtt.processMessages("xxx/suspend/valve5/command", 0)
    time.sleep(3)
    # Should not open because the sensor overrides
    assertValves(valves, ['valve5'], [(True, False)])

    cfg.schedules['sched4'].sensor.handler.disable = False
    time.sleep(3)
    # Should open because the sensor is now enabled and the MQTT command is already "lost"
    assertValves(valves, ['valve5'], [(True, True)])