#!/usr/bin/perl

##########################
# Configuration vaiables #
##########################
$powerlink = "192.168.1.200";     # Powerlink address
#$powerlink = powermax;            # Powerlink address
$port      = 7523;                # Powerlink telnet port
$username  = root2;               # Powerlink user
$password  = visonic;             # Powerlink password
$language  = 1;                   # 0 = English, 1 = Norwegian bm

###################
# Useful commands #
###################
# Get status:                     1 1
# Set status:                     1 2 <disarm|home|away|homeBypass|awayBypass|walktest> <instant|latchkey|regular>
# Get sensors status:             2 1
# Get sensors configuration:      2 2
# Get keyfobs status:             2 3
# Get keyfobs configuration:      2 4
# Get 1w-keypad status:           2 5
# Get 1w-keypad configuration:    2 6
# Get 2w-keypad status:           2 7
# Set sensor type:                2 8 <1-30> <0-10> (1:Emergency 2:Flood 3:Gas 4:Delay 1 5:Delay 2 6:Interior-Follow 7:Perimeter 8:Perimeter-Follow 9:24 Hours Silent 10:24 Hours Audible)
# Set sensor name:                2 9 <0-30> (0:Attic 1:Back door 2:Basement 3:Bathroom 4:Bedroom 5:Child room 6:Closet 7:Den 8:Dining room 9:Downstairs 10:Emergency 11:Fire 12:Front door 13:Garage 14:Garage door 15:Guest room 16:Hall 17:Kitchen 18:Laundry room 19:Living room 20:Master bathroom 21:Master bedroom 22:Office 23:Upstairs 24:Utility room 25:Yard 26:Custom1 27:Custom2 28:Custom3 29:Custom4 30:Custom5)
# Set sensor chime:               2 10 <1-30> <Off|Melody|Sensor>
# Mute siren:                     2 11
# Get siren status:               2 12
# Get user settings:              3 1
# Set auto arm time:              3 2 <hh>
# Set private tel no:             3 3 <1-4> <12345678????????>
# Set voice:                      3 4 <Enable|Disable>
# Set auto arm:                   3 5 <Enable|Disable>
# Set squawk option:              3 6 <Enable|Disable>
# Set time format:                3 7 <Europe|USA>
# Set date format:                3 8 <Europe|USA>
# Get panel definitions:          4 1
# Set bypass (sensor off):        4 2 <0-2> (0:no bypass 1:force arm 2:manual bypass)
# Get communications definitions: 5 1
# Get X10 Status:                 6 1
# Set X10 Status:                 6 2 <1-15|all> <on|off|dimmer|brighter>
# Get logfile:                    8 1

################################################################################

use Expect;

my $exp = Expect->spawn("telnet", ("-l", "$username", "$powerlink", "$port"))
or die "Cannot spawn telnet: $!\n";

my $cli = 0;

$exp->log_stdout(0);
$exp->expect(3, ["Unable to connect", sub { die "Unable to connect.\n"; }]);
$exp->expect(3, "Password:"); $exp->send("$password\n");
$exp->expect(3, '-re', 'root@.*:/#');
$exp->send("ps x|grep cli\n");
$exp->log_file(\&parse_ps);
$exp->expect(3, '-re', 'root@.*:/#');

if (!$cli) {
  $exp->send("/misc/wc-pxa255/binaries/cli > /dev/null &\n");
  $exp->expect(3, '-re', 'root@.*:/#');
}

$exp->send("if \[ -p /tmp/cli_in \] && \[ -p /tmp/cli_out \]; then echo 3 @ARGV qq > /tmp/cli_in && cat /tmp/cli_out; fi\n");
$exp->expect(3, "; fi");
$exp->log_file(\&parse_powermax);
$exp->expect(30, '-re', 'root@.*:/#');
$exp->log_file(undef);
$exp->send("exit\n");
$exp->soft_close();

sub parse_ps {
    if ($_[0] =~ /.*binaries.*/) {
	$cli = 1;
    }
}

sub parse_powermax {

    # Table 10en
    @System_Status_en =
	(
	 "Disarm",      #  0
	 "Exit delay",  #  1
	 "Exit delay",  #  2
	 "Entry delay", #  3
	 "Home",        #  4
	 "Away",        #  5
	 "User test",   #  6
	 "Download",    #  7
	 "Programming", #  8
	 "Installer",   #  9
	 "Home bypass", # 10
	 "Away bypass", # 11
	 "Ready",       # 12
	 "Not ready"    # 13
	 );
    
    # Table 11en
    @System_State_Flags_en =
	(
	 "Not ready",      # 0
	 "Memory",         # 1
	 "Trouble",        # 2
	 "Bypass on",      # 3
	 "Last 10 seconds" # 4
	 );
    
    # Table 12en
    @System_Mode_Flags_en =
	(
	 "Quick arm enable", # 0
	 "Latchkey enable"   # 1
	 );
    
    # Table 13en
    @System_CPU_Failure_en = 
	(
	 "AC failure",            # 0
	 "Low battery",           # 1
	 "Not active",            # 2
	 "Fuse trouble",          # 3
	 "Line failure",          # 4
	 "Communication failure", # 5
	 "Tamper open",           # 6
	 "Jammed trouble",        # 7
	 "Tamper alarm"           # 8
	 );
    
    # Table 14en
    @OFF_ON_en = 
	(
	 "Off", # 0
	 "On"   # 1
	 );
    
    # Table 15en
    @DIS_EN_en = 
	(
	 "Disable", # 0
	 "Enable"   # 1
	 );
    
    # Table 16en
    @USA_Europe_en = 
	(
	 "USA",   # 0
	 "Europe" # 1
	 );
    
    # Table 17en
    @Zone_Name_en = 
	(
	 "Attic",           #  0
	 "Back door",       #  1
	 "Basement",        #  2
	 "Bathroom",        #  3
	 "Bedroom",         #  4
	 "Child room",      #  5
	 "Closet",          #  6
	 "Den",             #  7
	 "Dining room",     #  8
	 "Downstairs",      #  9
	 "Emergency",       # 10
	 "Fire",            # 11
	 "Front door",      # 12
	 "Garage",          # 13
	 "Garage door",     # 14
	 "Guest room",      # 15
	 "Hall",            # 16
	 "Kitchen",         # 17
	 "Laundry room",    # 18
	 "Living room",     # 19
	 "Master bathroom", # 20
	 "Master bedroom",  # 21
	 "Office",          # 22
	 "Upstairs",        # 23
	 "Utility room",    # 24
	 "Yard",            # 25
	 "Custom1",         # 26
	 "Custom2",         # 27
	 "Custom3",         # 28
	 "Custom4",         # 29
	 "Custom5"          # 30
	 );
    
    # Table 18en
    @Zone_Type_en = 
	(
	 "Non-alarm",        #  0
	 "Emergency",        #  1
	 "Flood",            #  2
	 "Gas",              #  3
	 "Delay 1",          #  4
	 "Delay 2",          #  5
	 "Interior-follow",  #  6
	 "Perimeter",        #  7
	 "Perimeter-follow", #  8
	 "24 hours silent",  #  9
	 "24 hours audible", # 10
	 "Fire",             # 11
	 "Interior",         # 12
	 "Panic",            # 13
	 "Burglar alarm"     # 14
	 );
   
    # Table 19en
    @Zone_Chime_en = 
	(
	 "Chime off",      # 0
	 "Melody chime",   # 1
	 "Zone name chime" # 2
	 );
    
    # Table 20en
    @Log_Zone_Type_en = 
	(
	 "Control panel",         #  0
	 "Zone",                  #  1
	 "Keyfob",                #  2
	 "User",                  #  3
	 "Wireless commander",    #  4
	 "Wireless siren",        #  5
	 "2-way wireless keypad", #  6
	 "X-10",                  #  7
	 "GSM",                   #  8
	 "Powerlink",             #  9
	 "PGM",                   # 10
	 "Camera"                 # 11
	 );
    
    # Table 21en
    @Log_Event_Code_en = 
	(
	 "",                                           #   0
	 "Interior alarm",                             #   1
	 "Perimeter alarm",                            #   2
	 "Delay alarm",                                #   3
	 "24h silent alarm",                           #   4
	 "24h audible alarm",                          #   5
	 "Tamper",                                     #   6
	 "Control panel tamper",                       #   7
	 "Tamper alarm",                               #   8
	 "Tamper alarm",                               #   9
	 "Communication loss",                         #  10
	 "Panic from keyfob",                          #  11
	 "Panic from control panel",                   #  12
	 "Duress",                                     #  13
	 "Confirm alarm",                              #  14
	 "General trouble",                            #  15
	 "General trouble restore",                    #  16
	 "Interior restore",                           #  17
	 "Perimeter restore",                          #  18
	 "Delay restore",                              #  19
	 "24h silent restore",                         #  20
	 "24h audible restore",                        #  21
	 "Tamper restore",                             #  22
	 "Control panel tamper restore",               #  23
	 "Tamper restore",                             #  24
	 "Tamper restore",                             #  25
	 "Communication restore",                      #  26
	 "Cancel alarm",                               #  27
	 "General restore",                            #  28
	 "Trouble restore",                            #  29
	 "UNUSED ALARM",                               #  30
	 "Recent close",                               #  31
	 "Fire",                                       #  32
	 "Fire restore",                               #  33
	 "Not active",                                 #  34
	 "Emergency",                                  #  35
	 "UNUSED EMERGENCY",                           #  36
	 "Disarm latchkey",                            #  37
	 "Confirm alarm emergency",                    #  38
	 "Supervision (inactive)",                     #  39
	 "Supervision restore (active)",               #  40
	 "Low battery",                                #  41
	 "Low battery restore",                        #  42
	 "AC failure",                                 #  43
	 "AC restore",                                 #  44
	 "Control panel low battery",                  #  45
	 "Control panel low battery restore",          #  46
	 "RF jamming",                                 #  47
	 "RF jamming restore",                         #  48
	 "Communications failure",                     #  49
	 "Communications restore",                     #  50
	 "Telephone line failure",                     #  51
	 "Telephone line restore",                     #  52
	 "Auto test",                                  #  53
	 "Fuse failure",                               #  54
	 "Fuse restore",                               #  55
	 "Keyfob low battery",                         #  56
	 "Keyfob low battery restore",                 #  57
	 "Resetting av tekniker",                      #  58
	 "Batterifrakopling",                          #  59
	 "Remote commander low battery",               #  60
	 "Remote commander low battery restore",       #  61
	 "Remote commander inactive",                  #  62
	 "Remote commander restore active",            #  63
	 "Low battery acknowledge",                    #  64
	 "Clean me",                                   #  65
	 "Fire trouble",                               #  66
	 "Low battery",                                #  67
	 "Battery restore",                            #  68
	 "AC failure",                                 #  69
	 "AC restore",                                 #  70
	 "Supervision (inactive)",                     #  71
	 "Supervision restore (active)",               #  72
	 "Gas alert",                                  #  73
	 "Gas alert restore",                          #  74
	 "Gas trouble",                                #  75
	 "Gas trouble restore",                        #  76
	 "Flood alert",                                #  77
	 "Flood alert restore",                        #  78
	 "X-10 trouble",                               #  79
	 "X-10 trouble restore",                       #  80
	 "Arm home",                                   #  81
	 "Arm away",                                   #  82
	 "Quick arm home",                             #  83
	 "Quick arm away",                             #  84
	 "Disarm",                                     #  85
	 "Fail to arm (auto)",                         #  86
	 "Enter test mode",                            #  87
	 "Exit test mode",                             #  88
	 "Force arm away",                             #  89
	 "Auto arm away",                              #  90
	 "Instant away",                               #  91
	 "Bypass",                                     #  92
	 "Fail to set (by user)",                      #  93
	 "Door open",                                  #  94
	 "Communication established by control panel", #  95
	 "System reset",                               #  96
	 "Installer programming",                      #  97
	 "Wrong password",                             #  98
	 "Not sys event",                              #  99
	 "Not sys event",                              # 100
	 
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#101-116
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#117-132
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#133-148
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#149-164
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#165-180
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#181-196
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#197-212
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#213-228
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#229-244
	 "", "", "", "",                                                #245-248
	 
	 "PGM off",                                    # 249
	 "PGM on",                                     # 250
	 "X-10 off",                                   # 251
	 "X-10 on",                                    # 252
	 "Camera trouble",                             # 253
	 "Camera being viewed off",                    # 254
	 "Camera being viewed on"                      # 255
	 );
    
    # Table 22en
    @Zone_Events_en = 
	(
	 "None",                  #  0
	 "Tamper alarm",          #  1
	 "Tamper restore",        #  2
	 "Open",                  #  3
	 "Closed",                #  4
	 "Violated",              #  5
	 "Panic alarm",           #  6
	 "Jammed",                #  7
	 "Tamper open",           #  8
	 "Communication failure", #  9
	 "Line failure",          # 10
	 "Fuse",                  # 11
	 "Not active",            # 12
	 "Low battery",           # 13
	 "AC failure",            # 14
	 "Fire alarm",            # 15
	 "Emergency",             # 16
	 "Siren tamper",          # 17
	 "Siren tamper restore",  # 18
	 "Siren low battery",     # 19
	 "Siren AC failure"       # 20
	 );
    
    # Table 23en
    @Zone_Status_en = 
	(
	 "Alarm",        # 0
	 "Tamper alarm", # 1
	 "Open",         # 2
	 "Low battery",  # 3
	 "Inactive",     # 4
	 "Tamper open",  # 5
	 "Enrolled",     # 6
	 "Bypassed",     # 7
	 "AC failure"    # 8
	 );
    
    # Table 24en
    @Severity = 
	(
	 "Alert",               # 0
	 "Alarm",               # 1
	 "Other",               # 2
	 "Open / close",        # 3
	 "Camera being viewed", # 4
	 "Camera trouble",      # 5
	 "Home device on off",  # 6
	 "Home device trouble"  # 7
	 );


    # Table 10no
    @System_Status_no =
	(
	 "Frakopler",              #  0
	 "Utgangsforsinkelse",     #  1
	 "Utgangsforsinkelse",     #  2
	 "Inngangsforsinkelse",    #  3
	 "Hjemme",                 #  4
	 "Borte",                  #  5
	 "Gangtest",               #  6
	 "Nedlasting",             #  7
	 "Programmering",          #  8
	 "Installatør",            #  9
	 "Tvangstilkopler hjemme", # 10
	 "Tvangstilkopler borte",  # 11
	 "Klar",                   # 12
	 "Ikke klar"               # 13
	 );
    
    # Table 11no
    @System_State_Flags_no =
	(
	 "Ikke klar",        # 0
	 "Melding i minnet", # 1
	 "Feil",             # 2
	 "Tvangstilkopler",  # 3
	 "Siste nedtelling"  # 4
	 );
    
    # Table 12no
    @System_Mode_Flags_no =
	(
	 "Hurtigtilkopling aktiv",   # 0
	 "Barnevakttilkopling aktiv" # 1
	 );
    
    # Table 13no
    @System_CPU_Failure_no = 
	(
	 "Strømforsyningsfeil",   # 0
	 "Svakt batteri",         # 1
	 "Ikke aktiv",            # 2
	 "Sikringsfeil",          # 3
	 "Linjefeil",             # 4
	 "Communication failure", # 5
	 "Sabotasjeåpning",       # 6
	 "Radioforstyrrelse",     # 7
	 "Sabotasjealarm"         # 8
	 );
    
    # Table 14no
    @OFF_ON_no = 
	(
	 "Av", # 0
	 "På"   # 1
	 );
    
    # Table 15no
    @DIS_EN_no = 
	(
	 "Inaktiv", # 0
	 "Aktiv"    # 1
	 );
    
    # Table 16no
    @USA_Europe_no = 
	(
	 "USA",   # 0
	 "Europa" # 1
	 );
    
    # Table 17no
    @Zone_Name_no = 
	(
	 "Loft",        #  0
	 "Bakdør",      #  1
	 "Kjeller",     #  2
	 "Toalett",     #  3
	 "Soverom 2",   #  4
	 "Barnerom",    #  5
	 "Bod",         #  6
	 "Arbeidsrom",  #  7
	 "Spisestue",   #  8
	 "1. etasje",   #  9
	 "Nødalarm",    # 10
	 "Brann",       # 11
	 "Inngangsdør", # 12
	 "Garasje",     # 13
	 "Garasjedør",  # 14
	 "Gjesterom",   # 15
	 "Gang",        # 16
	 "Kjøkken",     # 17
	 "Vaskerom",    # 18
	 "Stue",        # 19
	 "Bad",         # 20
	 "Soverom 1",   # 21
	 "Kontor",      # 22
	 "2. etasje",   # 23
	 "Teknisk rom", # 24
	 "Hage",        # 25
	 "Valgfri 1",   # 26
	 "Valgfri 2",   # 27
	 "Valgfri 3",   # 28
	 "Valgfri 4",   # 29
	 "Valgfri 5"    # 30
	 );
    
    # Table 18no
    @Zone_Type_no = 
	(
	 "Ikke-alarm",          #  0
	 "Nødalarm",            #  1
	 "Vannlekkasje",        #  2
	 "Gasslekkasje",        #  3
	 "Forsinka 1",          #  4
	 "Forsinka 2",          #  5
	 "Interiør følgesone",  #  6
	 "Perimeter",           #  7
	 "Perimeter følgesone", #  8
	 "24-timer stille",     #  9
	 "24-timer sirene",     # 10
	 "Brann",               # 11
	 "Interiør",            # 12
	 "Panikk",              # 13
	 "Innbruddsalarm"       # 14
	 );
   
    # Table 19no
    @Zone_Chime_no = 
	(
	 "Dørklokke av",      # 0
	 "Dørklokke melodi",  # 1
	 "Dørklokke sonenavn" # 2
	 );
    
    # Table 20no
    @Log_Zone_Type_no = 
	(
	 "Kontrollpanel",            #  0
	 "Sone",                     #  1
	 "Fjernkontroll",            #  2
	 "Bruker",                   #  3
	 "Wireless commander",       #  4
	 "1-vegs trådløst tastatur", #  5
	 "2-vegs trådløst tastatur", #  6
	 "X-10",                     #  7
	 "GSM",                      #  8
	 "Powerlink",                #  9
	 "PGM",                      # 10
	 "Kamera"                    # 11
	 );
    
    # Table 21no
    @Log_Event_Code_no = 
	(
	 "",                                        #   0
	 "Interiøralarm",                           #   1
	 "Perimeteralarm",                          #   2
	 "Forsinka alarm",                          #   3
	 "24-timer stille alarm",                   #   4
	 "24-timer sirene alarm",                   #   5
	 "Sabotasje",                               #   6
	 "Kontrollpanel sabotert",                  #   7
	 "Sabotasjealarm",                          #   8
	 "Sabotasjealarm",                          #   9
	 "Kommunikasjonsfeil",                      #  10
	 "Panikkalarm fra fjernkontroll",           #  11
	 "Panikkalarm fra kontrollpanel",           #  12
	 "Overfallsalarm",                          #  13
	 "Alarmbekreftelse",                        #  14
	 "Generell feil",                           #  15
	 "Gjenoppretting av generell feil",         #  16
	 "Interiør klarert",                        #  17
	 "Perimeter klarert",                       #  18
	 "Forsinkelse klarert",                     #  19
	 "24-timer stille klarert",                 #  20
	 "24-timer sirene klarert",                 #  21
	 "Sabotasje klarert",                       #  22
	 "Sabotasje på kontrollpanel klarert",      #  23
	 "Sabotasje klarert",                       #  24
	 "Sabotasje klarert",                       #  25
	 "Kommunikasjon gjenopptatt",               #  26
	 "Avbryt alarm",                            #  27
	 "Generell gjenoppretting",                 #  28
	 "Feil utbedra",                            #  29
	 "UBRUKT ALARM",                            #  30
	 "Nylig tilkopling",                        #  31
	 "Brann",                                   #  32
	 "Brann klarert",                           #  33
	 "Ikke aktiv",                              #  34
	 "Nødalarm",                                #  35
	 "UBRUKT NØDALARM",                         #  36
	 "Frakopling barnevakt",                    #  37
	 "Bekreft alarm",                           #  38
	 "Overvåking (inaktiv)",                    #  39
	 "Overvåking gjenopptatt (aktiv)",          #  40
	 "Svakt batteri",                           #  41
	 "Batteri ok",                              #  42
	 "Strømforsyningsfeil",                     #  43
	 "Strømforsyning ok",                       #  44
	 "Svakt batteri i kontrollpanel",           #  45
	 "Batteri i kontrollpanel ok",              #  46
	 "Radioforstyrrelse",                       #  47
	 "Radioforstyrrelse ok",                    #  48
	 "Kommunikasjonsfeil",                      #  49
	 "Kommunikasjon gjenopptatt",               #  50
	 "Telefonlinjefeil",                        #  51
	 "Telefonlinje ok",                         #  52
	 "Automatisk test",                         #  53
	 "Sikringsfeil",                            #  54
	 "Sikring ok",                              #  55
	 "Svakt batteri i fjernkontroll",           #  56
	 "Batteri i fjernkontroll ok",              #  57
	 "Nullstilling av tekniker",                #  58
	 "Batteri utkopla",                         #  59
	 "Svakt batteri i 1-vegstastatur",          #  60
	 "Batteri i 1-vegstastatur ok",             #  61
	 "1-vegstastatur inaktivt",                 #  62
	 "1-vegstastatur aktivt",                   #  63
	 "Bekreftelse på svakt batteri",            #  64
	 "Rens meg",                                #  65
	 "Brannfeil",                               #  66
	 "Svakt batteri",                           #  67
	 "Batteri ok",                              #  68
	 "Strømforsyningsfeil",                     #  69
	 "Strømforsyning ok",                       #  70
	 "Overvåking (inaktiv)",                    #  71
	 "Overvåking gjenopptatt (aktiv)",          #  72
	 "Gasslekkasje",                            #  73
	 "Gasslekkasje klarert",                    #  74
	 "Gassfeil",                                #  75
	 "Gassfeil klarert",                        #  76
	 "Vannlekkasjealarm",                       #  77
	 "Vannlekkasje klarert",                    #  78
	 "X-10-feil",                               #  79
	 "X-10 ok",                                 #  80
	 "Tilkopling hjemme",                       #  81
	 "Tilkopling borte",                        #  82
	 "Hurtig tilkopling hjemme",                #  83
	 "Hurtig tilkopling borte",                 #  84
	 "Frakopling",                              #  85
	 "Mislykka tilkopling (automatisk)",        #  86
	 "Start testmodus",                         #  87
	 "Slutt testmodus",                         #  88
	 "Tvangstilkopling borte",                  #  89
	 "Automatisk tilkopling borte",             #  90
	 "Momentant borte",                         #  91
	 "Utkopling",                               #  92
	 "Mislykka hendelse (av bruker)",           #  93
	 "Dør åpen",                                #  94
	 "Kommunikasjon oppretta av kontrollpanel", #  95
	 "System resatt",                           #  96
	 "Installatørprogramming",                  #  97
	 "Galt passord",                            #  98
	 "Ingen systemhendelse",                    #  99
	 "Ingen systemhendelse",                    # 100
	 
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#101-116
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#117-132
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#133-148
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#149-164
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#165-180
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#181-196
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#197-212
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#213-228
	 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",#229-244
	 "", "", "", "",                                                #245-248
	 
	 "PGM av",                                  # 249
	 "PGM på",                                  # 250
	 "X-10 av",                                 # 251
	 "X-10 på",                                 # 252
	 "Kamerafeil",                              # 253
	 "Kamera ikke i bruk",                      # 254
	 "Kamera i bruk"                            # 255
	 );
    
    # Table 22no
    @Zone_Events_no = 
	(
	 "Ingenting",                    #  0
	 "Sabotasjealarm",               #  1
	 "Sabotasje klarert",            #  2
	 "Åpen",                         #  3
	 "Stengt",                       #  4
	 "Overtredelse",                 #  5
	 "Panikkalarm",                  #  6
	 "Radioforstyttelse",            #  7
	 "Sabotasjeåpning",              #  8
	 "Kommunikasjonsfeil",           #  9
	 "Linjefeil",                    # 10
	 "Sikring",                      # 11
	 "Ikke aktiv",                   # 12
	 "Svakt batteri",                # 13
	 "Strømforsyningsfeil",          # 14
	 "Brannalarm",                   # 15
	 "Nødalarm",                     # 16
	 "Sirenesabotasje",              # 17
	 "Sirenesabotasje klarert",      # 18
	 "Svakt batteri på sirene",      # 19
	 "Strømforsyningsfeil på sirene" # 20
	 );
    
    # Table 23no
    @Zone_Status_no = 
	(
	 "Alarm",              # 0
	 "Sabotasjealarm",     # 1
	 "Åpen",               # 2
	 "Svakt batteri",      # 3
	 "Inaktiv",            # 4
	 "Sabotasjeåpning",    # 5
	 "Innmeldt",           # 6
	 "Utkopla",            # 7
	 "Strømforsyningsfeil" # 8
	 );
    
    # Table 24no
    @Severity_no = 
	(
	 "Varsel",          # 0
	 "Alarm",           # 1
	 "Annet",           # 2
	 "Til-/frakopling", # 3
	 "Kamera i bruk",   # 4
	 "Kamerafeil",      # 5
	 "Utstyr av/på",    # 6
	 "Utstyrsfeil"      # 7
	 );

    # Reference to severity table
    @Events_Severity = 
	(
	 -1, #   0
	 1,  #   1
	 1,  #   2
	 1,  #   3
	 1,  #   4
	 1,  #   5
	 1,  #   6
	 1,  #   7
	 1,  #   8
	 0,  #   9
	 1,  #  10
	 1,  #  11
	 1,  #  12
	 1,  #  13
	 1,  #  14
	 2,  #  15
	 2,  #  16
	 2,  #  17
	 2,  #  18
	 2,  #  19
	 2,  #  20
	 2,  #  21
	 2,  #  22
	 2,  #  23
	 2,  #  24
	 2,  #  25
	 2,  #  26
	 2,  #  27
	 2,  #  28
	 2,  #  29
	 2,  #  30
	 1,  #  31
	 1,  #  32
	 2,  #  33
	 2,  #  34
	 1,  #  35
	 2,  #  36
	 2,  #  37
	 2,  #  38
	 0,  #  39
	 2,  #  40
	 0,  #  41
	 2,  #  42
	 0,  #  43
	 2,  #  44
	 0,  #  45
	 2,  #  46
	 0,  #  47
	 2,  #  48
	 0,  #  49
	 2,  #  50
	 0,  #  51
	 2,  #  52
	 2,  #  53
	 0,  #  54
	 2,  #  55
	 0,  #  56
	 2,  #  57
	 2,  #  58
	 2,  #  59
	 0,  #  60
	 2,  #  61
	 0,  #  62
	 2,  #  63
	 2,  #  64
	 0,  #  65
	 0,  #  66
	 0,  #  67
	 2,  #  68
	 0,  #  69
	 2,  #  70
	 0,  #  71
	 2,  #  72
	 1,  #  73
	 2,  #  74
	 0,  #  75
	 2,  #  76
	 1,  #  77
	 2,  #  78
	 7,  #  79
	 2,  #  80
	 3,  #  81
	 3,  #  82
	 3,  #  83
	 3,  #  84
	 3,  #  85
	 2,  #  86
	 2,  #  87
	 2,  #  88
	 3,  #  89
	 3,  #  90
	 3,  #  91
	 2,  #  92
	 2,  #  93
	 2,  #  94
	 2,  #  95
	 2,  #  96
	 2,  #  97
	 2,  #  98
	 2,  #  99
	 2,  # 100
	 
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#101-116
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#117-132
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#133-148
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#149-164
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#165-180
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#181-196
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#197-212
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#213-228
	 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,#229-244
	 -1, -1, -1, -1,                                                #245-248
	 
	 6,  # 249
	 6,  # 250
	 6,  # 251
	 6,  # 252
	 5,  # 253
	 4,  # 254
	 4   # 255
	 );
    
    # References to above tables
    @Arrays = 
	(
	 [
	  NULL,                   #  0
	  NULL,                   #  1
	  NULL,                   #  2
	  NULL,                   #  3
	  NULL,                   #  4
	  NULL,                   #  5
	  NULL,                   #  6
	  NULL,                   #  7
	  NULL,                   #  8
	  NULL,                   #  9
	  System_Status_en,       # 10
	  System_State_Flags_en,  # 11
	  System_Mode_Flags_en,   # 12
	  System_CPU_Failure_en,  # 13
	  OFF_ON_en,              # 14
	  DIS_EN_en,              # 15
	  USA_Europe_en,          # 16
	  Zone_Name_en,           # 17
	  Zone_Type_en,           # 18
	  Zone_Chime_en,          # 19
	  Log_Zone_Type_en,       # 20
	  Log_Event_Code_en,      # 21
	  Zone_Events_en,         # 22
	  Zone_Status_en,         # 23
	  Severity                # 24
	  ],
	 [
	  NULL,                   #  0
	  NULL,                   #  1
	  NULL,                   #  2
	  NULL,                   #  3
	  NULL,                   #  4
	  NULL,                   #  5
	  NULL,                   #  6
	  NULL,                   #  7
	  NULL,                   #  8
	  NULL,                   #  9
	  System_Status_no,       # 10
	  System_State_Flags_no,  # 11
	  System_Mode_Flags_no,   # 12
	  System_CPU_Failure_no,  # 13
	  OFF_ON_no,              # 14
	  DIS_EN_no,              # 15
	  USA_Europe_no,          # 16
	  Zone_Name_no,           # 17
	  Zone_Type_no,           # 18
	  Zone_Chime_no,          # 19
	  Log_Zone_Type_no,       # 20
	  Log_Event_Code_no,      # 21
	  Zone_Events_no,         # 22
	  Zone_Status_no,         # 23
	  Severity                # 24
	  ]	 
	 );

    $_[0] =~ s/root\@.*:\/# //g;
    $_[0] =~ s/\r//g;
    while ($_[0] =~ m/([0-9]+)-([0-9]+)/g) {
	$t = $Arrays[$language][$1][$2];
	$_[0] =~ s/$&/"$t"/;
    }
    print $_[0];
}
