import time
from taalmodule import *
# audio gedeelte: de gebruikte geluidsbestanden 
# de standaardtaal en eventueel de aanvullende taal
# staan in "taalmodule.py" 
taal=['leeg','nederlands','engels','frans','duits','spaans','portugees','italiaans','belgisch','deens','noors','zweeds','pools','chech','hongaars','roemeens','russisch','grieks','turks']


# wat wordt afgespeeld bij triggering van:
# tril=trilsensnor, sonor=geluidsensor, pir=infra-rood sensor
# lijst van sensoren aan uitbereidingsprintje:
# sensor = ["geluid bijrijder","tril bestuurder","tril bijrijder", "geluid bestuurder","tril slaapkamer","tril douche","tril keuken","tril dinette"]
# bij alarmgeveligheid Hoog/laag en [1e keer, 2e keer]
# de nummering verwijst naar de volgende lijst 
# 0= sirene, 1= alarm signaal luidspreker 2= standaardtaal, 3= aanvullende taal, 4= 2e waarschuwingsboodschap 5= attentie+signaal 6= portier-signaal
# 7= u hebt het alarm getriggerd, 8 = leeg/stil, 9 = alarm aan, 10= test alarm 11= alarm uit 12= alarm uit met bijzonderheden 13= start alarm-aan procedure
# pir_duur= aantal seconden wachttijd als pir na die tijd nog steeds hoog dan volgt actie Dit is gedaan omdat mensen die gewoon langs lopen niet behoeven te worden gewaarschuwd;
# het alarm gaat wel naar fase 2 op het moment van triggering; daarvoor geldt de wachttijd dus niet! 
# verlooptijd na het verstrijken van die tijd sinds de laatste keer dat een PIR is geactiveerd valt het alarm terug naar fase 1
# uitschakeltijd is de tijd die je hebt om na opening van de deur het alarm uit te schakelen.
# de items in de standaard waarschuwingsniveaus zijn de waarden van de sensoren. Als laatste is de waarde van de pir_duur aangegeven. 
sound=['sirene','alarm_zwak.mp3',standaard_taal+'.mp3',aanvullende_taal+'.mp3','eind','att','port','alarm','stil','alarmaan.mp3','alarmtest.mp3','alarmuitzonder.mp3','alarmuitmet.mp3','start.mp3']
sensor = ["portson","porttril","porttril", "portson","tril","tril","tril","tril"] #sensoren op 0 - 7 dus op GPB0 (portier), GPB1(portier) etc.
niveau = ["stad","dorp","platteland","camping","eigen"]
stadniv=[5,6,5,5,5,6,5,5,2,4,8,8,0,0,15,5]
dorpniv=[5,6,5,5,6,6,5,6,2,4,2,8,0,0,15,5]
plattelandniv=[6,1,5,6,6,1,5,6,2,4,2,4,0,0,15,5]
campingniv=[5,5,5,5,5,5,5,5,2,8,8,8,1,1,15,2]
eigenniv=[5,6,5,5,6,6,5,6,2,4,2,4,0,1,15,3]
standaard=eigenniv
nu= time.time()
tril_high=[standaard[0],standaard[1]]
tril_low=[standaard[2],standaard[3]]
portier_high=[standaard[4],standaard[5]]
portier_low=[standaard[6],standaard[7]]
pir_high=[standaard[8],standaard[9]]
pir_low=[standaard[10],standaard[11]]
reed_contact=[standaard[12],standaard[13]]
pir_duur=standaard[14]
trigger_max=standaard[15] #maximaal aantal keren dat dezelfde tril/geluid-sensor gedurende de verlooptijd mag triggeren; 0= geen maximum 
verlooptijd=120
uitschakeltijd=5


#monitoring van (camptica) gegevens
monitoring=2 #0= uit; 1= niet bij alarm 2= altijd
mon_interval=1800 #aantal seconden tussen de metingen
monlicht=30 # aan seconden lcd-scherm aan
soortdb=['sirene','alarmsignaal','waarschuwing','tweede keer','attentie','attentie +']

# alarm-duur bij 1e en 2e poging tot inbraak en bij 
# verbreking reed-contact (geslaagde poging)
alarm_duur1=5
alarm_duur2=10
alarm_duurreed=30

# Slaapmodus: Bij slaapmodus wordt automatisch campingniveau geactiveerd; je moet zelf HOOG (met waarschuwingen) of 
#LAAG (dmv schakelaar op besturingspaneeltje) aangeven; Daarnaast geeft je hier onder aan welke reed-kontakten en tril/geluidsensors gecheckt
# moeten worden (geen dan laat je tussen de haken leeg) # reed: 1= rechts (douche,keuken,dinette), 2=links (bank, luik), 3 = slaapkamerraam, 
#4= camperdeur, 5 = pirlinks, 6 pirrechts: tril 0 1,2,3 portieren geluid en tril, 4 = slaapkamerraam, 5 = douche, 6 = keuken en 7 = dinette
slaapmodus=True
slaapmodus_check=[1,2,4,5,6]
slaapmodus_gpbcheck=[0,1,2,3,5,6,7]


# hier staan de paden waar het programma zelf staat, 
# waar de geluiden staan en waar foto's en log
# worden opgeslagen
path_sys='/home/pi/alarmsys/'
path_foto='/home/pi/alarmsys/webcam/'
path_geluid='/home/pi/alarmsys/geluid/'
path_log='/home/pi/alarmsys/log/'

# afhandeling Video. geef eerst aan welk progamma je gebruikt
# fswebcam of motion. Als motion dan regel je de rest
# in motion.conf. Zo nee dan regel je de rest hier 
# wil je een opname per email zet dan email_on op True
# geef je email-adres op en telefoonnummer voor de
# SMS boodschap
video_prog='motion'
email_on=True
my_email='roland@zwiebelfam.nl'

# idnummer van de ontvanger van de Telegram-boodschap
my_tel='user#379680301'

# - - MCP23017 registers - - #
# niet wijzigen!!!!
IODIRA       = 0x00   # IO in-out register  (0=output, 1=input (Default))
IODIRB       = 0x01
IOPOLA       = 0x02   # IO polariteit   (0=normal, 1=inverse)
IOPOLB       = 0x03
GPINTENA     = 0x04   # interrupt on change (0=disable, 1=enable)
GPINTENB     = 0x05
DEFVALA      = 0x06   # default vergelijking interrupt on change
DEFVALB      = 0x07
INTCONA      = 0x08   # interrupt control (0=interrupt on change, 1=interrupt on change via DEFVAL)
INTCONB      = 0x09
IOCONA       = 0x0A   # in-out registercontrole
IOCONB       = 0x0B
GPPUA        = 0x0C   # pull-up weerstand (0=disabled, 1=enabled)
GPPUB        = 0x0D
INTFA        = 0x0E   # interrupt vlag
INTFB        = 0x0F
INTCAPA      = 0x10   # interrupt capture
INTCAPB      = 0x11
GPIOA        = 0x12   # in poort-waarde
GPIOB        = 0x13
OLATA    	 = 0x14	  # out poort-waarde
OLATB        = 0x15 

# hier de gegevens van de uitbreidingsbordjes
# eerst de beide chips, dan de interuptlijst A en B van MCP[0] *voor het geval onderweg een sensor stuk gaat
# kun je die d.m.v. van deze lijst uit zetten (op 0)
#er is ook een automatische controle op defecte sensoren; zet daarvoor autocheck op 1;
# dan de sensors: het zijn arrays met als eerste het adres van de chip (0x20 tot 0x27)
# daarna het register (GPIO of OLAT, A of B) en dan het pinnr(0 - 7)

MCP=[0x20, 0x21]
autocheck=1
int_lijst_a=[1,1,1,1,1,1,1,1]
int_lijst_b=[1,1,1,1,1,1,1,1]
actief_trigger=[0,0,0,0,0,0,0,0]
trigger_list=[0,0,0,0,0,0,0,0]

pir1=[0x20,GPIOA,0]
pir2=[0x20,GPIOA,1]
pir3=[0x20,GPIOA,2]
pir4=[0x20,GPIOA,3]
pir5=[0x20,GPIOA,4]
pir6=[0x20,GPIOA,5]
pir7=[0x20,GPIOA,6]
pir8=[0x20,GPIOA,7]
soundport2=[0x20,GPIOB,0]
trilport2=[0x20,GPIOB,1]
trilport1=[0x20,GPIOB,2]
soundport1=[0x20,GPIOB,3]
trilslaap=[0x20,GPIOB,4]
trildouche=[0x20,GPIOB,5]
trilkeuken=[0x20,GPIOB,6]
trildinette=[0x20,GPIOB,7]

# hier de adressen van de modules aan I2C en 1-Wire
I2C_ADDR  = 0x3F # I2C device address van LCD-scherm
drukmeter=0x76 # bme280 barometer
koel_sensor = "28-0416526f72ff"


# nu als laatste de overige installatie-afhankelijke variabelen
check_blok=[25,83,18,33,25,85,2,35,25,131,2,33,25,132,16,25] # 1953-12-21/1955-02-23/1983-02-21/1984-10-19
een_wire_pin=7
sirene_pin=12
voed_relais_pin=18
mosi_nfc=19
miso_nfc=21
rst_nfc=22
clk_nfc=23
sda_nfc=24
camptica_pin=37
sens=33
slaapm_toggle=35
taalkeuze_pin=40
reed_links=31
reed_rechts=29
reed_camperdeur=26
reed_slaap=15
reed_pirlinks=13
reed_pirrechts=11
led_slaap=32
