From ba128967bddaf108686d5a0fd324600c80a8931a Mon Sep 17 00:00:00 2001 From: lejubila Date: Wed, 13 Sep 2017 23:59:02 +0200 Subject: [PATCH] =?UTF-8?q?implementato=20spengimento=20di=20tutte=20le=20?= =?UTF-8?q?board=20spb16ch=20e=20riattivazione=20della=20sola=20scheda=20s?= =?UTF-8?q?u=20cui=20=C3=A8=20collegato=20il=20rele=20al=20quale=20si=20st?= =?UTF-8?q?a=20impartendo=20l'ordine=20di=20apertura/chiusura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/piGarden.conf.example | 18 +- conf/piGarden.conf.spb16ch.example | 356 ++++++++++++++++++++++++++++- drv/sample/common.include.sh | 3 + drv/sample/init.include.sh | 2 +- drv/sample/setup.include.sh | 10 + drv/spb16ch/common.include.sh | 41 ++++ drv/spb16ch/config.include.sh | 267 +++++++++++----------- drv/spb16ch/init.include.sh | 14 +- drv/spb16ch/rele.include.sh | 6 + drv/spb16ch/setup.include.sh | 42 ++++ include/drv.include.sh | 8 +- 11 files changed, 621 insertions(+), 146 deletions(-) create mode 100644 drv/sample/common.include.sh create mode 100644 drv/sample/setup.include.sh create mode 100644 drv/spb16ch/common.include.sh create mode 100644 drv/spb16ch/setup.include.sh diff --git a/conf/piGarden.conf.example b/conf/piGarden.conf.example index 72b70fa..71cfce8 100644 --- a/conf/piGarden.conf.example +++ b/conf/piGarden.conf.example @@ -55,8 +55,8 @@ STAT="/usr/bin/stat" EV_MONOSTABLE=0 # Id gpio usati per simulare il doppio deviatore con cui eseguire l'alimentazione alle elettrovalvole -SUPPLY_GPIO_1=2 -SUPPLY_GPIO_2=3 +SUPPLY_GPIO_1=2 # Physical 3 - wPi 8 +SUPPLY_GPIO_2=3 # Physical 5 - wPi 9 # Stato dei due gpio per impartire l'alimentazione positiva alle elettrovalvole (aperta) SUPPLY_GPIO_POS=0 @@ -71,7 +71,7 @@ RELE_GPIO_CLOSE=0 RELE_GPIO_OPEN=1 # Id del gpio usato per collegare il sensore di rilevamento pioggia -RAIN_GPIO=25 +RAIN_GPIO=25 # Physical 22 - wPi 6 # Valore in ingresso sul gpio definito in RAIN_GPIO che indica lo stato di pioggia RAIN_GPIO_STATE=0 @@ -85,22 +85,22 @@ EV_TOTAL=6 # Definizione delle elettrovalvole EV1_ALIAS="1" # -EV1_GPIO=17 +EV1_GPIO=17 # Physical 11 - wPi 0 EV2_ALIAS="2" # -EV2_GPIO=27 +EV2_GPIO=27 # Physical 13 - wPi 2 EV3_ALIAS="3" # -EV3_GPIO=22 +EV3_GPIO=22 # Physical 15 - wPi 3 EV4_ALIAS="4" # -EV4_GPIO=18 +EV4_GPIO=18 # Physical 12 - wPi 1 EV5_ALIAS="5" # -EV5_GPIO=23 +EV5_GPIO=23 # Physical 16 - wPi 4 EV6_ALIAS="6" # -EV6_GPIO=24 +EV6_GPIO=24 # Physical 18 - wPi 5 # Definisce l'api key e il luogo per recuperare lo stato meteo online WUNDERGROUND_KEY="" diff --git a/conf/piGarden.conf.spb16ch.example b/conf/piGarden.conf.spb16ch.example index 6f990b4..5142a80 100644 --- a/conf/piGarden.conf.spb16ch.example +++ b/conf/piGarden.conf.spb16ch.example @@ -80,7 +80,7 @@ RAIN_GPIO_STATE=0 # Numero totale di elettrovalvole -EV_TOTAL=16 +EV_TOTAL=64 # Definizione delle elettrovalvole EV1_ALIAS="Zona_1" # @@ -131,6 +131,342 @@ EV15_GPIO="drv:spb16ch:15" EV16_ALIAS="Zona_16" # EV16_GPIO="drv:spb16ch:16" +EV17_ALIAS="Zona_17" # +EV17_GPIO="drv:spb16ch:17" + +EV18_ALIAS="Zona_18" # +EV18_GPIO="drv:spb16ch:18" + +EV19_ALIAS="Zona_19" # +EV19_GPIO="drv:spb16ch:19" + +EV20_ALIAS="Zona_20" # +EV20_GPIO="drv:spb16ch:20" + +EV21_ALIAS="Zona_21" # +EV21_GPIO="drv:spb16ch:21" + +EV22_ALIAS="Zona_22" # +EV22_GPIO="drv:spb16ch:22" + +EV23_ALIAS="Zona_23" # +EV23_GPIO="drv:spb16ch:23" + +EV24_ALIAS="Zona_24" # +EV24_GPIO="drv:spb16ch:24" + +EV25_ALIAS="Zona_25" # +EV25_GPIO="drv:spb16ch:25" + +EV26_ALIAS="Zona_26" # +EV26_GPIO="drv:spb16ch:26" + +EV27_ALIAS="Zona_27" # +EV27_GPIO="drv:spb16ch:27" + +EV28_ALIAS="Zona_28" # +EV28_GPIO="drv:spb16ch:28" + +EV29_ALIAS="Zona_29" # +EV29_GPIO="drv:spb16ch:29" + +EV30_ALIAS="Zona_30" # +EV30_GPIO="drv:spb16ch:30" + +EV31_ALIAS="Zona_31" # +EV31_GPIO="drv:spb16ch:31" + +EV32_ALIAS="Zona_32" # +EV32_GPIO="drv:spb16ch:32" + +EV33_ALIAS="Zona_33" # +EV33_GPIO="drv:spb16ch:33" + +EV34_ALIAS="Zona_34" # +EV34_GPIO="drv:spb16ch:34" + +EV35_ALIAS="Zona_35" # +EV35_GPIO="drv:spb16ch:35" + +EV36_ALIAS="Zona_36" # +EV36_GPIO="drv:spb16ch:36" + +EV37_ALIAS="Zona_37" # +EV37_GPIO="drv:spb16ch:37" + +EV38_ALIAS="Zona_38" # +EV38_GPIO="drv:spb16ch:38" + +EV39_ALIAS="Zona_39" # +EV39_GPIO="drv:spb16ch:39" + +EV40_ALIAS="Zona_40" # +EV40_GPIO="drv:spb16ch:40" + +EV41_ALIAS="Zona_41" # +EV41_GPIO="drv:spb16ch:41" + +EV42_ALIAS="Zona_42" # +EV42_GPIO="drv:spb16ch:42" + +EV43_ALIAS="Zona_43" # +EV43_GPIO="drv:spb16ch:43" + +EV44_ALIAS="Zona_44" # +EV44_GPIO="drv:spb16ch:44" + +EV45_ALIAS="Zona_45" # +EV45_GPIO="drv:spb16ch:45" + +EV46_ALIAS="Zona_46" # +EV46_GPIO="drv:spb16ch:46" + +EV47_ALIAS="Zona_47" # +EV47_GPIO="drv:spb16ch:47" + +EV48_ALIAS="Zona_48" # +EV48_GPIO="drv:spb16ch:48" + +EV49_ALIAS="Zona_49" # +EV49_GPIO="drv:spb16ch:49" + +EV50_ALIAS="Zona_50" # +EV50_GPIO="drv:spb16ch:50" + +EV51_ALIAS="Zona_51" # +EV51_GPIO="drv:spb16ch:51" + +EV52_ALIAS="Zona_52" # +EV52_GPIO="drv:spb16ch:52" + +EV53_ALIAS="Zona_53" # +EV53_GPIO="drv:spb16ch:53" + +EV54_ALIAS="Zona_54" # +EV54_GPIO="drv:spb16ch:54" + +EV55_ALIAS="Zona_55" # +EV55_GPIO="drv:spb16ch:55" + +EV56_ALIAS="Zona_56" # +EV56_GPIO="drv:spb16ch:56" + +EV57_ALIAS="Zona_57" # +EV57_GPIO="drv:spb16ch:57" + +EV58_ALIAS="Zona_58" # +EV58_GPIO="drv:spb16ch:58" + +EV59_ALIAS="Zona_59" # +EV59_GPIO="drv:spb16ch:59" + +EV60_ALIAS="Zona_60" # +EV60_GPIO="drv:spb16ch:60" + +EV61_ALIAS="Zona_61" # +EV61_GPIO="drv:spb16ch:61" + +EV62_ALIAS="Zona_62" # +EV62_GPIO="drv:spb16ch:62" + +EV63_ALIAS="Zona_63" # +EV63_GPIO="drv:spb16ch:63" + +EV64_ALIAS="Zona_64" # +EV64_GPIO="drv:spb16ch:64" + +EV65_ALIAS="Zona_65" # +EV65_GPIO="drv:spb16ch:65" + +EV66_ALIAS="Zona_66" # +EV66_GPIO="drv:spb16ch:66" + +EV67_ALIAS="Zona_67" # +EV67_GPIO="drv:spb16ch:67" + +EV68_ALIAS="Zona_68" # +EV68_GPIO="drv:spb16ch:68" + +EV69_ALIAS="Zona_69" # +EV69_GPIO="drv:spb16ch:69" + +EV70_ALIAS="Zona_70" # +EV70_GPIO="drv:spb16ch:70" + +EV71_ALIAS="Zona_71" # +EV71_GPIO="drv:spb16ch:71" + +EV72_ALIAS="Zona_72" # +EV72_GPIO="drv:spb16ch:72" + +EV73_ALIAS="Zona_73" # +EV73_GPIO="drv:spb16ch:73" + +EV74_ALIAS="Zona_74" # +EV74_GPIO="drv:spb16ch:74" + +EV75_ALIAS="Zona_75" # +EV75_GPIO="drv:spb16ch:75" + +EV76_ALIAS="Zona_76" # +EV76_GPIO="drv:spb16ch:76" + +EV77_ALIAS="Zona_77" # +EV77_GPIO="drv:spb16ch:77" + +EV78_ALIAS="Zona_78" # +EV78_GPIO="drv:spb16ch:78" + +EV79_ALIAS="Zona_79" # +EV79_GPIO="drv:spb16ch:79" + +EV80_ALIAS="Zona_80" # +EV80_GPIO="drv:spb16ch:80" + +EV81_ALIAS="Zona_81" # +EV81_GPIO="drv:spb16ch:81" + +EV82_ALIAS="Zona_82" # +EV82_GPIO="drv:spb16ch:82" + +EV83_ALIAS="Zona_83" # +EV83_GPIO="drv:spb16ch:83" + +EV84_ALIAS="Zona_84" # +EV84_GPIO="drv:spb16ch:84" + +EV85_ALIAS="Zona_85" # +EV85_GPIO="drv:spb16ch:85" + +EV86_ALIAS="Zona_86" # +EV86_GPIO="drv:spb16ch:86" + +EV87_ALIAS="Zona_87" # +EV87_GPIO="drv:spb16ch:87" + +EV88_ALIAS="Zona_88" # +EV88_GPIO="drv:spb16ch:88" + +EV89_ALIAS="Zona_89" # +EV89_GPIO="drv:spb16ch:89" + +EV90_ALIAS="Zona_90" # +EV90_GPIO="drv:spb16ch:90" + +EV91_ALIAS="Zona_91" # +EV91_GPIO="drv:spb16ch:91" + +EV92_ALIAS="Zona_92" # +EV92_GPIO="drv:spb16ch:92" + +EV93_ALIAS="Zona_93" # +EV93_GPIO="drv:spb16ch:93" + +EV94_ALIAS="Zona_94" # +EV94_GPIO="drv:spb16ch:94" + +EV95_ALIAS="Zona_95" # +EV95_GPIO="drv:spb16ch:95" + +EV96_ALIAS="Zona_96" # +EV96_GPIO="drv:spb16ch:96" + +EV97_ALIAS="Zona_97" # +EV97_GPIO="drv:spb16ch:97" + +EV98_ALIAS="Zona_98" # +EV98_GPIO="drv:spb16ch:98" + +EV99_ALIAS="Zona_99" # +EV99_GPIO="drv:spb16ch:99" + +EV100_ALIAS="Zona_100" # +EV100_GPIO="drv:spb16ch:100" + +EV101_ALIAS="Zona_101" # +EV101_GPIO="drv:spb16ch:101" + +EV102_ALIAS="Zona_102" # +EV102_GPIO="drv:spb16ch:102" + +EV103_ALIAS="Zona_103" # +EV103_GPIO="drv:spb16ch:103" + +EV104_ALIAS="Zona_104" # +EV104_GPIO="drv:spb16ch:104" + +EV105_ALIAS="Zona_105" # +EV105_GPIO="drv:spb16ch:105" + +EV106_ALIAS="Zona_106" # +EV106_GPIO="drv:spb16ch:106" + +EV107_ALIAS="Zona_107" # +EV107_GPIO="drv:spb16ch:107" + +EV108_ALIAS="Zona_108" # +EV108_GPIO="drv:spb16ch:108" + +EV109_ALIAS="Zona_109" # +EV109_GPIO="drv:spb16ch:109" + +EV110_ALIAS="Zona_110" # +EV110_GPIO="drv:spb16ch:110" + +EV111_ALIAS="Zona_111" # +EV111_GPIO="drv:spb16ch:111" + +EV112_ALIAS="Zona_112" # +EV112_GPIO="drv:spb16ch:112" + +EV113_ALIAS="Zona_113" # +EV113_GPIO="drv:spb16ch:113" + +EV114_ALIAS="Zona_114" # +EV114_GPIO="drv:spb16ch:114" + +EV115_ALIAS="Zona_115" # +EV115_GPIO="drv:spb16ch:115" + +EV116_ALIAS="Zona_116" # +EV116_GPIO="drv:spb16ch:116" + +EV117_ALIAS="Zona_117" # +EV117_GPIO="drv:spb16ch:117" + +EV118_ALIAS="Zona_118" # +EV118_GPIO="drv:spb16ch:118" + +EV119_ALIAS="Zona_119" # +EV119_GPIO="drv:spb16ch:119" + +EV120_ALIAS="Zona_120" # +EV120_GPIO="drv:spb16ch:120" + +EV121_ALIAS="Zona_121" # +EV121_GPIO="drv:spb16ch:121" + +EV122_ALIAS="Zona_122" # +EV122_GPIO="drv:spb16ch:122" + +EV123_ALIAS="Zona_123" # +EV123_GPIO="drv:spb16ch:123" + +EV124_ALIAS="Zona_124" # +EV124_GPIO="drv:spb16ch:124" + +EV125_ALIAS="Zona_125" # +EV125_GPIO="drv:spb16ch:125" + +EV126_ALIAS="Zona_126" # +EV126_GPIO="drv:spb16ch:126" + +EV127_ALIAS="Zona_127" # +EV127_GPIO="drv:spb16ch:127" + +EV128_ALIAS="Zona_128" # +EV128_GPIO="drv:spb16ch:128" + # Definisce l'api key e il luogo per recuperare lo stato meteo online WUNDERGROUND_KEY="" @@ -154,3 +490,21 @@ TCPSERVER_PWD="" # Con impostato il valore 1 non invia l'identificativi per statistiche di utilizzo NO_SEND_IDENTIFIER=0 + +# +# Configurazione schede spb16ch +# + +# Stato da assegnare ai gpio per abilitare/disabilitare le schede spb16ch +SPB16CH_GPIO_ON=0 +SPB16CH_GPIO_OFF=1 + +# Gpio di per gestire l'abilitazione/disabilitazione delle chede spb16ch +SPB16CH1_GPIO=17 # Physical 11 - wPi 0 +SPB16CH2_GPIO=27 # Physical 13 - wPi 2 +SPB16CH3_GPIO=22 # Physical 15 - wPi 3 +SPB16CH4_GPIO=18 # Physical 12 - wPi 1 +SPB16CH5_GPIO=23 # Physical 16 - wPi 4 +SPB16CH6_GPIO=24 # Physical 18 - wPi 5 +SPB16CH7_GPIO=4 # Physical 7 - wPi 7 +SPB16CH8_GPIO=14 # Physical 8 - wPi 15 diff --git a/drv/sample/common.include.sh b/drv/sample/common.include.sh new file mode 100644 index 0000000..ad7826a --- /dev/null +++ b/drv/sample/common.include.sh @@ -0,0 +1,3 @@ +# +# Common function for this driver +# diff --git a/drv/sample/init.include.sh b/drv/sample/init.include.sh index f1c3002..3f2d256 100644 --- a/drv/sample/init.include.sh +++ b/drv/sample/init.include.sh @@ -1,5 +1,5 @@ # -# Questa funzione viene inviocata dalla funzione "init" di piGarden se sono presenti elettrovalvole o sensori che utilizzano questo driver +# Questa funzione viene invocata dalla funzione "init" di piGarden se sono presenti elettrovalvole o sensori che utilizzano questo driver # function drv_sample_init { diff --git a/drv/sample/setup.include.sh b/drv/sample/setup.include.sh new file mode 100644 index 0000000..6f74fc0 --- /dev/null +++ b/drv/sample/setup.include.sh @@ -0,0 +1,10 @@ +# +# Questa funzione viene invocata dalla funzione "setup_drv" di piGarden ad ogni avvio dello script +# e serve per eseguire l'evenutale setup del driver se necessario +# +function drv_sample_setup { + + local FOO="bar" + +} + diff --git a/drv/spb16ch/common.include.sh b/drv/spb16ch/common.include.sh new file mode 100644 index 0000000..7ee0f57 --- /dev/null +++ b/drv/spb16ch/common.include.sh @@ -0,0 +1,41 @@ +# +# Funzioni comuni per il driver spb16ch +# + +# +# Abilita una scheda spb16ch in modo che possa esseregli impartito un comando successivamente +# $1 identificativo scheda da abilitare +# +function drv_spb16ch_board_enable { + + local board_id=$1 + + drv_spb16ch_board_disable_all + + local a=SPB16CH"$board_id"_GPIO + local gpio_n=${!a} + + echo "** drv_spb16ch_board_enable() - Enable board: $board_id - gpio $gpio_n" + $GPIO -g write $gpio_n $SPB16CH_GPIO_ON + +} + +# +# Disabilita tutte le schede +# +function drv_spb16ch_board_disable_all { + + echo "** drv_spb16ch_board_disable_all() - Boads id: ${SPB16CH_USED_ID[@]}" + + local board_id + for board_id in ${SPB16CH_USED_ID[@]} + do + local a=SPB16CH"$board_id"_GPIO + local gpio_n=${!a} + + echo "** drv_spb16ch_board_disable_all() - Disable board: $board_id - gpio $gpio_n" + $GPIO -g write $gpio_n $SPB16CH_GPIO_OFF + done + +} + diff --git a/drv/spb16ch/config.include.sh b/drv/spb16ch/config.include.sh index 4ca6d67..8189c67 100644 --- a/drv/spb16ch/config.include.sh +++ b/drv/spb16ch/config.include.sh @@ -4,154 +4,155 @@ # 3-3: separatore # 4-4: il quarto carattere indica il mux channel # 5-5: separatore -# 6-8: gli ultimi tre caratteri indicano il numero del rele sul canale -# +# 6-8: dal 6 all'ottavo carattere indicano il numero del rele sul canale +# 10-10: l'ultimo carattere indica il numero identificativo della scheda spb16ch # Scheda 1 - address 70h - GS1:chiuso, GS2:chiuso, GS3:chiuso -SPB16CH_RELE_MAP[1]="70|0| 1" -SPB16CH_RELE_MAP[2]="70|0| 2" -SPB16CH_RELE_MAP[3]="70|0| 4" -SPB16CH_RELE_MAP[4]="70|0| 8" -SPB16CH_RELE_MAP[5]="70|0| 16" -SPB16CH_RELE_MAP[6]="70|0| 32" -SPB16CH_RELE_MAP[7]="70|0| 64" -SPB16CH_RELE_MAP[8]="70|0|128" -SPB16CH_RELE_MAP[9]="70|1| 1" -SPB16CH_RELE_MAP[10]="70|1| 2" -SPB16CH_RELE_MAP[11]="70|1| 4" -SPB16CH_RELE_MAP[12]="70|1| 8" -SPB16CH_RELE_MAP[13]="70|1| 16" -SPB16CH_RELE_MAP[14]="70|1| 32" -SPB16CH_RELE_MAP[15]="70|1| 64" -SPB16CH_RELE_MAP[16]="70|1|128" +SPB16CH_RELE_MAP[1]="70|0| 1|1" +SPB16CH_RELE_MAP[2]="70|0| 2|1" +SPB16CH_RELE_MAP[3]="70|0| 4|1" +SPB16CH_RELE_MAP[4]="70|0| 8|1" +SPB16CH_RELE_MAP[5]="70|0| 16|1" +SPB16CH_RELE_MAP[6]="70|0| 32|1" +SPB16CH_RELE_MAP[7]="70|0| 64|1" +SPB16CH_RELE_MAP[8]="70|0|128|1" +SPB16CH_RELE_MAP[9]="70|1| 1|1" +SPB16CH_RELE_MAP[10]="70|1| 2|1" +SPB16CH_RELE_MAP[11]="70|1| 4|1" +SPB16CH_RELE_MAP[12]="70|1| 8|1" +SPB16CH_RELE_MAP[13]="70|1| 16|1" +SPB16CH_RELE_MAP[14]="70|1| 32|1" +SPB16CH_RELE_MAP[15]="70|1| 64|1" +SPB16CH_RELE_MAP[16]="70|1|128|1" # Scheda 2 - address 71h - GS1:aperto, GS2:chiuso, GS3:chiuso -SPB16CH_RELE_MAP[17]="71|0| 1" -SPB16CH_RELE_MAP[18]="71|0| 2" -SPB16CH_RELE_MAP[19]="71|0| 4" -SPB16CH_RELE_MAP[20]="71|0| 8" -SPB16CH_RELE_MAP[21]="71|0| 16" -SPB16CH_RELE_MAP[22]="71|0| 32" -SPB16CH_RELE_MAP[23]="71|0| 64" -SPB16CH_RELE_MAP[24]="71|0|128" -SPB16CH_RELE_MAP[25]="71|1| 1" -SPB16CH_RELE_MAP[26]="71|1| 2" -SPB16CH_RELE_MAP[27]="71|1| 4" -SPB16CH_RELE_MAP[28]="71|1| 8" -SPB16CH_RELE_MAP[29]="71|1| 16" -SPB16CH_RELE_MAP[30]="71|1| 32" -SPB16CH_RELE_MAP[31]="71|1| 64" -SPB16CH_RELE_MAP[32]="71|1|128" +SPB16CH_RELE_MAP[17]="71|0| 1|2" +SPB16CH_RELE_MAP[18]="71|0| 2|2" +SPB16CH_RELE_MAP[19]="71|0| 4|2" +SPB16CH_RELE_MAP[20]="71|0| 8|2" +SPB16CH_RELE_MAP[21]="71|0| 16|2" +SPB16CH_RELE_MAP[22]="71|0| 32|2" +SPB16CH_RELE_MAP[23]="71|0| 64|2" +SPB16CH_RELE_MAP[24]="71|0|128|2" +SPB16CH_RELE_MAP[25]="71|1| 1|2" +SPB16CH_RELE_MAP[26]="71|1| 2|2" +SPB16CH_RELE_MAP[27]="71|1| 4|2" +SPB16CH_RELE_MAP[28]="71|1| 8|2" +SPB16CH_RELE_MAP[29]="71|1| 16|2" +SPB16CH_RELE_MAP[30]="71|1| 32|2" +SPB16CH_RELE_MAP[31]="71|1| 64|2" +SPB16CH_RELE_MAP[32]="71|1|128|2" # Scheda 3 - address 72h - GS1:chiuso, GS2:aperto, GS3:chiuso -SPB16CH_RELE_MAP[33]="72|0| 1" -SPB16CH_RELE_MAP[34]="72|0| 2" -SPB16CH_RELE_MAP[35]="72|0| 4" -SPB16CH_RELE_MAP[36]="72|0| 8" -SPB16CH_RELE_MAP[37]="72|0| 16" -SPB16CH_RELE_MAP[38]="72|0| 32" -SPB16CH_RELE_MAP[39]="72|0| 64" -SPB16CH_RELE_MAP[40]="72|0|128" -SPB16CH_RELE_MAP[41]="72|1| 1" -SPB16CH_RELE_MAP[42]="72|1| 2" -SPB16CH_RELE_MAP[43]="72|1| 4" -SPB16CH_RELE_MAP[44]="72|1| 8" -SPB16CH_RELE_MAP[45]="72|1| 16" -SPB16CH_RELE_MAP[46]="72|1| 32" -SPB16CH_RELE_MAP[47]="72|1| 64" -SPB16CH_RELE_MAP[48]="72|1|128" +SPB16CH_RELE_MAP[33]="72|0| 1|3" +SPB16CH_RELE_MAP[34]="72|0| 2|3" +SPB16CH_RELE_MAP[35]="72|0| 4|3" +SPB16CH_RELE_MAP[36]="72|0| 8|3" +SPB16CH_RELE_MAP[37]="72|0| 16|3" +SPB16CH_RELE_MAP[38]="72|0| 32|3" +SPB16CH_RELE_MAP[39]="72|0| 64|3" +SPB16CH_RELE_MAP[40]="72|0|128|3" +SPB16CH_RELE_MAP[41]="72|1| 1|3" +SPB16CH_RELE_MAP[42]="72|1| 2|3" +SPB16CH_RELE_MAP[43]="72|1| 4|3" +SPB16CH_RELE_MAP[44]="72|1| 8|3" +SPB16CH_RELE_MAP[45]="72|1| 16|3" +SPB16CH_RELE_MAP[46]="72|1| 32|3" +SPB16CH_RELE_MAP[47]="72|1| 64|3" +SPB16CH_RELE_MAP[48]="72|1|128|3" # Scheda 4 - address 73h - GS1:aperto, GS2:aperto, GS3:chiuso -SPB16CH_RELE_MAP[49]="73|0| 1" -SPB16CH_RELE_MAP[50]="73|0| 2" -SPB16CH_RELE_MAP[51]="73|0| 4" -SPB16CH_RELE_MAP[52]="73|0| 8" -SPB16CH_RELE_MAP[53]="73|0| 16" -SPB16CH_RELE_MAP[54]="73|0| 32" -SPB16CH_RELE_MAP[55]="73|0| 64" -SPB16CH_RELE_MAP[56]="73|0|128" -SPB16CH_RELE_MAP[57]="73|1| 1" -SPB16CH_RELE_MAP[58]="73|1| 2" -SPB16CH_RELE_MAP[59]="73|1| 4" -SPB16CH_RELE_MAP[60]="73|1| 8" -SPB16CH_RELE_MAP[61]="73|1| 16" -SPB16CH_RELE_MAP[62]="73|1| 32" -SPB16CH_RELE_MAP[63]="73|1| 64" -SPB16CH_RELE_MAP[64]="73|1|128" +SPB16CH_RELE_MAP[49]="73|0| 1|4" +SPB16CH_RELE_MAP[50]="73|0| 2|4" +SPB16CH_RELE_MAP[51]="73|0| 4|4" +SPB16CH_RELE_MAP[52]="73|0| 8|4" +SPB16CH_RELE_MAP[53]="73|0| 16|4" +SPB16CH_RELE_MAP[54]="73|0| 32|4" +SPB16CH_RELE_MAP[55]="73|0| 64|4" +SPB16CH_RELE_MAP[56]="73|0|128|4" +SPB16CH_RELE_MAP[57]="73|1| 1|4" +SPB16CH_RELE_MAP[58]="73|1| 2|4" +SPB16CH_RELE_MAP[59]="73|1| 4|4" +SPB16CH_RELE_MAP[60]="73|1| 8|4" +SPB16CH_RELE_MAP[61]="73|1| 16|4" +SPB16CH_RELE_MAP[62]="73|1| 32|4" +SPB16CH_RELE_MAP[63]="73|1| 64|4" +SPB16CH_RELE_MAP[64]="73|1|128|4" # Scheda 5 - address 74h - GS1:chiuso, GS2:chiuso, GS3:aperto -SPB16CH_RELE_MAP[65]="74|0| 1" -SPB16CH_RELE_MAP[66]="74|0| 2" -SPB16CH_RELE_MAP[67]="74|0| 4" -SPB16CH_RELE_MAP[68]="74|0| 8" -SPB16CH_RELE_MAP[69]="74|0| 16" -SPB16CH_RELE_MAP[70]="74|0| 32" -SPB16CH_RELE_MAP[71]="74|0| 64" -SPB16CH_RELE_MAP[72]="74|0|128" -SPB16CH_RELE_MAP[73]="74|1| 1" -SPB16CH_RELE_MAP[74]="74|1| 2" -SPB16CH_RELE_MAP[75]="74|1| 4" -SPB16CH_RELE_MAP[76]="74|1| 8" -SPB16CH_RELE_MAP[77]="74|1| 16" -SPB16CH_RELE_MAP[78]="74|1| 32" -SPB16CH_RELE_MAP[79]="74|1| 64" -SPB16CH_RELE_MAP[80]="74|1|128" +SPB16CH_RELE_MAP[65]="74|0| 1|5" +SPB16CH_RELE_MAP[66]="74|0| 2|5" +SPB16CH_RELE_MAP[67]="74|0| 4|5" +SPB16CH_RELE_MAP[68]="74|0| 8|5" +SPB16CH_RELE_MAP[69]="74|0| 16|5" +SPB16CH_RELE_MAP[70]="74|0| 32|5" +SPB16CH_RELE_MAP[71]="74|0| 64|5" +SPB16CH_RELE_MAP[72]="74|0|128|5" +SPB16CH_RELE_MAP[73]="74|1| 1|5" +SPB16CH_RELE_MAP[74]="74|1| 2|5" +SPB16CH_RELE_MAP[75]="74|1| 4|5" +SPB16CH_RELE_MAP[76]="74|1| 8|5" +SPB16CH_RELE_MAP[77]="74|1| 16|5" +SPB16CH_RELE_MAP[78]="74|1| 32|5" +SPB16CH_RELE_MAP[79]="74|1| 64|5" +SPB16CH_RELE_MAP[80]="74|1|128|5" # Scheda 6 - address 75h - GS1:aperto, GS2:chiuso, GS3:aperto -SPB16CH_RELE_MAP[81]="75|0| 1" -SPB16CH_RELE_MAP[82]="75|0| 2" -SPB16CH_RELE_MAP[83]="75|0| 4" -SPB16CH_RELE_MAP[84]="75|0| 8" -SPB16CH_RELE_MAP[85]="75|0| 16" -SPB16CH_RELE_MAP[86]="75|0| 32" -SPB16CH_RELE_MAP[87]="75|0| 64" -SPB16CH_RELE_MAP[88]="75|0|128" -SPB16CH_RELE_MAP[89]="75|1| 1" -SPB16CH_RELE_MAP[90]="75|1| 2" -SPB16CH_RELE_MAP[91]="75|1| 4" -SPB16CH_RELE_MAP[92]="75|1| 8" -SPB16CH_RELE_MAP[93]="75|1| 16" -SPB16CH_RELE_MAP[94]="75|1| 32" -SPB16CH_RELE_MAP[95]="75|1| 64" -SPB16CH_RELE_MAP[96]="75|1|128" +SPB16CH_RELE_MAP[81]="75|0| 1|6" +SPB16CH_RELE_MAP[82]="75|0| 2|6" +SPB16CH_RELE_MAP[83]="75|0| 4|6" +SPB16CH_RELE_MAP[84]="75|0| 8|6" +SPB16CH_RELE_MAP[85]="75|0| 16|6" +SPB16CH_RELE_MAP[86]="75|0| 32|6" +SPB16CH_RELE_MAP[87]="75|0| 64|6" +SPB16CH_RELE_MAP[88]="75|0|128|6" +SPB16CH_RELE_MAP[89]="75|1| 1|6" +SPB16CH_RELE_MAP[90]="75|1| 2|6" +SPB16CH_RELE_MAP[91]="75|1| 4|6" +SPB16CH_RELE_MAP[92]="75|1| 8|6" +SPB16CH_RELE_MAP[93]="75|1| 16|6" +SPB16CH_RELE_MAP[94]="75|1| 32|6" +SPB16CH_RELE_MAP[95]="75|1| 64|6" +SPB16CH_RELE_MAP[96]="75|1|128|6" # Scheda 7 - address 76h - GS1:chiuso, GS2:aperto, GS3:aperto -SPB16CH_RELE_MAP[97]="76|0| 1" -SPB16CH_RELE_MAP[98]="76|0| 2" -SPB16CH_RELE_MAP[99]="76|0| 4" -SPB16CH_RELE_MAP[100]="76|0| 8" -SPB16CH_RELE_MAP[101]="76|0| 16" -SPB16CH_RELE_MAP[102]="76|0| 32" -SPB16CH_RELE_MAP[103]="76|0| 64" -SPB16CH_RELE_MAP[104]="76|0|128" -SPB16CH_RELE_MAP[105]="76|1| 1" -SPB16CH_RELE_MAP[106]="76|1| 2" -SPB16CH_RELE_MAP[107]="76|1| 4" -SPB16CH_RELE_MAP[108]="76|1| 8" -SPB16CH_RELE_MAP[109]="76|1| 16" -SPB16CH_RELE_MAP[110]="76|1| 32" -SPB16CH_RELE_MAP[111]="76|1| 64" -SPB16CH_RELE_MAP[112]="76|1|128" +SPB16CH_RELE_MAP[97]="76|0| 1|7" +SPB16CH_RELE_MAP[98]="76|0| 2|7" +SPB16CH_RELE_MAP[99]="76|0| 4|7" +SPB16CH_RELE_MAP[100]="76|0| 8|7" +SPB16CH_RELE_MAP[101]="76|0| 16|7" +SPB16CH_RELE_MAP[102]="76|0| 32|7" +SPB16CH_RELE_MAP[103]="76|0| 64|7" +SPB16CH_RELE_MAP[104]="76|0|128|7" +SPB16CH_RELE_MAP[105]="76|1| 1|7" +SPB16CH_RELE_MAP[106]="76|1| 2|7" +SPB16CH_RELE_MAP[107]="76|1| 4|7" +SPB16CH_RELE_MAP[108]="76|1| 8|7" +SPB16CH_RELE_MAP[109]="76|1| 16|7" +SPB16CH_RELE_MAP[110]="76|1| 32|7" +SPB16CH_RELE_MAP[111]="76|1| 64|7" +SPB16CH_RELE_MAP[112]="76|1|128|7" # Scheda 8 - address 77h - GS1:aperto, GS2:aperto, GS3:aperto -SPB16CH_RELE_MAP[113]="77|0| 1" -SPB16CH_RELE_MAP[114]="77|0| 2" -SPB16CH_RELE_MAP[115]="77|0| 4" -SPB16CH_RELE_MAP[116]="77|0| 8" -SPB16CH_RELE_MAP[117]="77|0| 16" -SPB16CH_RELE_MAP[118]="77|0| 32" -SPB16CH_RELE_MAP[119]="77|0| 64" -SPB16CH_RELE_MAP[120]="77|0|128" -SPB16CH_RELE_MAP[121]="77|1| 1" -SPB16CH_RELE_MAP[122]="77|1| 2" -SPB16CH_RELE_MAP[123]="77|1| 4" -SPB16CH_RELE_MAP[124]="77|1| 8" -SPB16CH_RELE_MAP[125]="77|1| 16" -SPB16CH_RELE_MAP[126]="77|1| 32" -SPB16CH_RELE_MAP[127]="77|1| 64" -SPB16CH_RELE_MAP[128]="77|1|128" - - - +SPB16CH_RELE_MAP[113]="77|0| 1|8" +SPB16CH_RELE_MAP[114]="77|0| 2|8" +SPB16CH_RELE_MAP[115]="77|0| 4|8" +SPB16CH_RELE_MAP[116]="77|0| 8|8" +SPB16CH_RELE_MAP[117]="77|0| 16|8" +SPB16CH_RELE_MAP[118]="77|0| 32|8" +SPB16CH_RELE_MAP[119]="77|0| 64|8" +SPB16CH_RELE_MAP[120]="77|0|128|8" +SPB16CH_RELE_MAP[121]="77|1| 1|8" +SPB16CH_RELE_MAP[122]="77|1| 2|8" +SPB16CH_RELE_MAP[123]="77|1| 4|8" +SPB16CH_RELE_MAP[124]="77|1| 8|8" +SPB16CH_RELE_MAP[125]="77|1| 16|8" +SPB16CH_RELE_MAP[126]="77|1| 32|8" +SPB16CH_RELE_MAP[127]="77|1| 64|8" +SPB16CH_RELE_MAP[128]="77|1|128|8" + +# Array contenente i gli identificativi delle schede usate +declare -g -a SPB16CH_USED_ID +SPB16CH_USED_ID=() diff --git a/drv/spb16ch/init.include.sh b/drv/spb16ch/init.include.sh index 34feed5..340034b 100644 --- a/drv/spb16ch/init.include.sh +++ b/drv/spb16ch/init.include.sh @@ -25,7 +25,7 @@ function drv_spb16ch_init { fi done - # Cerca gli indirizzi delle schede spb16ch utilizzate per i rele che gestiscono alimentazione delle elettrovalvole bistabili + # Cerca gli indirizzi delle schede spb16ch utilizzate per i rele che gestiscono l'alimentazione delle elettrovalvole bistabili for gpio in "$SUPPLY_GPIO_1" "$SUPPLY_GPIO_2" do if [[ "$gpio" == drv:spb16ch:* ]]; then @@ -41,6 +41,7 @@ function drv_spb16ch_init { done # Esegue l'inizializzazione delle schede spb16ch trovate + local address_num for address_num in ${address_used[@]} do echo "****** Inizializzazione address_num = $address_num *******" @@ -51,5 +52,16 @@ function drv_spb16ch_init { $DIR_SCRIPT/drv/spb16ch/scripts/mux_channel.py $address_num 0 done + # Esegue l'inizializzazione dei gpio che gestiscono l'abilitazine/disabilitazione delle schede + local board_id + for board_id in ${SPB16CH_USED_ID[@]} + do + local a=SPB16CH"$board_id"_GPIO + local gpio_n=${!a} + + echo "******** Number used board: $board_id - inizializzazione gpio $gpio_n" + $GPIO -g mode $gpio_n out + done + } diff --git a/drv/spb16ch/rele.include.sh b/drv/spb16ch/rele.include.sh index 7f5415b..f8ddbea 100644 --- a/drv/spb16ch/rele.include.sh +++ b/drv/spb16ch/rele.include.sh @@ -25,6 +25,9 @@ function drv_spb16ch_rele_open { local address_num=${rele_data:0:2} local channel_num=${rele_data:3:1} local rele_num=${rele_data:5:3} + local board_id=${rele_data:9:1} + + drv_spb16ch_board_enable $board_id echo address_num=$address_num echo channel_num=$channel_num @@ -51,6 +54,9 @@ function drv_spb16ch_rele_close { local address_num=${rele_data:0:2} local channel_num=${rele_data:3:1} local rele_num=${rele_data:5:3} + local board_id=${rele_data:9:1} + + drv_spb16ch_board_enable $board_id echo address_num=$address_num echo channel_num=$channel_num diff --git a/drv/spb16ch/setup.include.sh b/drv/spb16ch/setup.include.sh new file mode 100644 index 0000000..352d433 --- /dev/null +++ b/drv/spb16ch/setup.include.sh @@ -0,0 +1,42 @@ +# +# Questa funzione viene inviocata dalla funzione "setup_drv" ad ogni avvio di piGarden +# esegue il setup del driver recuperando gli identificativi delle schede sbp16ch usati +# +function drv_spb16ch_setup { + + # Cerca gli identificativi delle schede spb16ch utilizzate per i rele utilizzati per le zone + for i in $(seq $EV_TOTAL) + do + local a=EV"$i"_GPIO + local gpio="${!a}" + if [[ "$gpio" == drv:spb16ch:* ]]; then + local rele_id=`echo $gpio | $CUT -d':' -f3,3` + local rele_data=${SPB16CH_RELE_MAP[$rele_id]} + if [[ ! -z $rele_data ]]; then + local board_id=${rele_data:9:1} + if [[ ! " ${SPB16CH_USED_ID[@]} " =~ " ${board_id} " ]]; then + SPB16CH_USED_ID+=("$board_id") + fi + fi + fi + done + + # Cerca gli identificativi schede spb16ch utilizzate che gestiscono l'alimentazione delle elettrovalvole bistabili + for gpio in "$SUPPLY_GPIO_1" "$SUPPLY_GPIO_2" + do + if [[ "$gpio" == drv:spb16ch:* ]]; then + local rele_id=`echo $gpio | $CUT -d':' -f3,3` + local rele_data=${SPB16CH_RELE_MAP[$rele_id]} + if [[ ! -z $rele_data ]]; then + local board_id=${rele_data:9:1} + if [[ ! " ${SPB16CH_USED_ID[@]} " =~ " ${board_id} " ]]; then + SPB16CH_USED_ID+=("$board_id") + fi + fi + fi + done + + echo "Identificativi board spb16ch utilizzate: ${SPB16CH_USED_ID[@]}" + +} + diff --git a/include/drv.include.sh b/include/drv.include.sh index 32fefd2..90be5a7 100644 --- a/include/drv.include.sh +++ b/include/drv.include.sh @@ -32,13 +32,19 @@ function setup_drv { local file_drv for drv in "${list_drv[@]}" do - for callback in config init rele supply rainsensor + for callback in config common init rele supply rainsensor setup do file_drv="$DIR_SCRIPT/drv/$drv/$callback.include.sh" if [ -f "$file_drv" ]; then #drv_avalible[$drv]="${drv_avalible[$drv]}#$callback#" #echo ${drv_avalible[$drv]} . "$file_drv" + + if [ $callback == "setup" ]; then + local fnc="drv_${drv}_setup" + echo "$(date) $fnc" >> "$LOG_OUTPUT_DRV_FILE" + $fnc >> "$LOG_OUTPUT_DRV_FILE" 2>&1 + fi fi done done