4. Configuratie

De configuratie van CasPPer staat opgeslagen in twee bestanden (caspper.ini|conf en logging.ini|conf. Deze bestanden hebben het formaat van een windows ’ini’ bestand. Dat wil zeggen dat het bestand bestaat uit velden met een veldnaam en een waarde, gescheiden door een = teken. Groepen van deze velden zijn gegroepeerd in secties. De secties worden aangegeven door een naam in vierkante haken.

4.1 caspper.ini | conf

Dit bestand bevat de volledige configuratie van de applicatie. Het bevat

  • Globale secties
  • ’Super’ secties
  • Onderdeel secties

4.1.1 Globale secties

Globale secties bevatten algemene instelling voor het gehele programma

  • customer. Bevat klant specifieke instellingen
  • activation. Beval instelling ten behoeve van de programma activatie

4.1.2 ’Super’ secties

’Super’ secties zijn catergorieën van onderdelen in CasPPer. Iedere veldnaam in een ’super’ sectie is de naam van een onderdeel sectie. De waarde van het veld bepaalt of het onderdeel actief is (0 of 1)

Alle ’super’ secties zijn verplicht in het configuratie bestand

  • schedules. Bevat bloktijden schemas. Bijvoorbeeld ten behoeve van happy hour.
  • loggers. Bevat buffers met log teksten.
  • ios. Bevat digitale IO modules
  • events. Bevat objecten die een externe gebeurtenis representeren. Zoals opkomen van een digitale input.
  • functions. Bevat uitsturingen. Dit kan bijvoorbeeld een digitale uitsturing zijn, maar kan ook het versturen van een tekst over het netwerk zijn.
  • statuses. Bevat objecten die een externe waarde representeren, zoals de status van een digitale ingang of de waarden van een teller.
  • queues. Bevat wachtrij objecten.
  • controllers. Bevat objecten die communiceren met wasstraat besturingen.
  • transactions. Bevat object die opslag van transactie presenteren.
  • monitors. Bevat objecten die een transactie log bijhouden op basis van (besturings)tellers.
  • conveyors. Bevat interne besturings componenten op basis van beschikbare informatie over posities van autos in de wasstraat
  • ports. Bevat externe lees en schrijf poorten.
  • inputs. Bevat invoer componenten voor wachtrij invoer.
  • resources. Bevat functie elementen voor externe programeer interfaces
  • xmlrpcs. Bevat externe programmer interfaces.
  • services. Beval web interfaces.

4.1.3 Onderdeel secties

De onderdeel secties bevatten allereerst een type veld. Dit bevat het type van het onderdeel. De daarop volgende velden bevatten de instellingen voor dit specifieke type. Sommige instellingen zijn verplicht voor een type, andere optioneel. Velden kunnen een een verwijzing bevatten naar andere onderdelen uit de configuratie. Een verwijzing bestaat uit de naam van een ander onderdeel in de configuratie. Het onderdeel waarnaar verwezen wordt moeten reeds bestaan op het moment dat de verwijzing wordt ingelezen. Dit betekent dat de volgorde van onderdelen in het configuratie bestand belangrijk kan zijn. Let hierbij op het feit dat ’super’ secties worden ingelezen in de volgorde als beschreven in "’Super’ secties" en de onderdelen binnen een ’super’ sectie op alfabet van de gekozen naam voor de onderdelen. Indien een verwijzing niet bestaat verschijnt er een "Object required" bericht in de log file.

4.1.4 Voorbeeld

Een voorbeeld fragment uit een configuratie bestand

 
[controllers]                  #'Super' sectie met controllers
hoofd_wasstraat_controller=1   # Actieve controller. De naam is vrij te kiezen...

[hoofd_wasstraat_controller]   # ... maar komt overeen met die van de onderdeel sectie
type=ace_control               # Het type controller
controller_path=c:\some path\  # Instelling voor dit type controller

4.2 logging.ini | conf

Het logging bestand bevat instelling voor welke data waarnaartoe wordt gelogd. Normaliter zijn alleen wijzigingen nodig ten behoeve van probleem oplossing. Om bijvoorbeeld meer informatie in het log bestand zichtbaar te maken, kan het level van zowel de logger als de loghandler op DEBUG gezet worden.

4.3 Configuratie Opties

 
======================================
<class 'caslib.base.AssemblyObject'>

======================================
<class 'caspper.webiface.WebInterface'>
port                             required: N object: N TCP port to listen on.  Defaults to 80

======================================
<class 'caspper.logs.AssemblyLogger'>
capacity                         required: N object: N Number of log messages to hold. Defaults to 32
level                            required: N object: N Minimum level to be logged: DEBUG, INFO, WARNING, ERROR, CRITICAL. Defaults to WARNING

======================================
<class 'caspper.logs.MemoryLogger'>
log_heap_per_minute              required: N object: N Dump heap log every minute. Defaults to False
log_level                        required: N object: N Log level for messages. Defaults to "INFO"
log_heap_per_hour                required: N object: N Dump heap log every hour. Defaults to False

======================================
<class 'caslib.events.AssemblyEvent'>

======================================
<class 'caslib.dio.baseio.BaseIO'>

======================================
<class 'caslib.dio.baseio.DummyIO'>

======================================
<class 'caspper.controller.bock.BockOmron'>
extra_options_dm                 required: N object: N DM address to write extra options to, defaults to 311
read_time_dm                     required: N object: N DM address to read controller time from
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
write_time_dm                    required: N object: N DM address to write controller time to
extra_option_programs            required: N object: N Translation table for options that are not programs, but program modifiers: option->modifier
happy_hour_flag_dm               required: N object: N DM address of happy hour status
default_program                  required: N object: N Default program number the controller will wash when no program input is available
port                             required: N object: N TCP or UDP port the controller listens on for FINS commands
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
set_program_dm                   required: N object: N DM address to write program input to, defaults to 301
happy_hour_counters_dm           required: N object: N First DM address of happy hour counters
counters_dm                      required: N object: N First DM address of counters
connection_mode                  required: N object: N Connection mode: tcp, udp or hostlink. Defaults to tcp
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
address                          required: Y object: N TCP or UDP address of controller
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caslib.rpcutils.RpcResource'>
resource_name                    required: Y object: N Name of resource in server

======================================
<class 'caspper.controller.basecontroller.AcceptTimeoutMixin'>
always_accept_after              required: N object: N Automatically accept a program when it is still on the controller after this amount of seconds. Defaults to 300

======================================
<class 'caspper.controller.basecontroller.CountingController'>
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
default_program                  required: N object: N Default program number the controller will wash when no program input is available
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
happy_hour_provider              required: N object: Y Time blocks object that indicates happy hour status
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caslib.dio.sockio.SockIo'>
port                             required: Y object: N 

======================================
<class 'caspper.statuses.AssemblyStatus'>

======================================
<class 'caspper.statuses.IoInput'>
nh                               required: N object: N Normally high value of port. Defaults to false
port                             required: Y object: N Input port of IO module to fetch status from
io                               required: Y object: Y IO module object to fetch status from

======================================
<class 'caspper.statuses.IoOutput'>
nh                               required: N object: N Normally high value of port. Defaults to false
port                             required: Y object: N Input port of IO module to fetch status from
io                               required: Y object: Y IO module object to fetch status from

======================================
<class 'caspper.statuses.SettableStatus'>
value                            required: N object: N Value of status. Defaults to 0

======================================
<class 'caspper.statuses._IoValue'>
nh                               required: N object: N Normally high value of port. Defaults to false
port                             required: Y object: N Input port of IO module to fetch status from
io                               required: Y object: Y IO module object to fetch status from

======================================
<class 'caspper.functions.AssemblyFunction'>

======================================
<class 'caspper.functions.IoPulse'>
nh                               required: N object: N Normally high or closed setting of output
count                            required: N object: N Number of outputs from "port" to use for multi-port functions
port                             required: Y object: N Output port number on IO module starting from 0
io                               required: Y object: Y IO module object
time                             required: N object: N Pulse length in seconds.  Defaults to 1.0

======================================
<class 'caspper.controller.unitronics.Unitronics'>
result_code_address              required: N object: N Address for result code
old_balance_address              required: N object: N Address for old balance
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
controller_programs              required: N object: N List of programs the actual controller will accept
default_program                  required: N object: N Default program number the controller will wash when no program input is available
little_endian                    required: N object: N Endianess of bytes in integers
unit_id_0                        required: N object: N Description of unit
port                             required: N object: N Port units listen on
identification_provider          required: N object: Y Object providing identification and transaction handling
counters_address                 required: N object: N Start address of program counters
first_option_program             required: N object: N First program number that is an option program
id                               required: Y object: N 
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
new_balance_address              required: N object: N Address for new balance
unit_0                           required: Y object: N IP address of unit
main_programs                    required: N object: N List of main programs on controller
tokens_address                   required: N object: N Address of total tokens
required_tokens                  required: N object: N Address of required tokens
program_translations             required: N object: N List of n->m translations for program numbers
count                            required: Y object: N Number of units
sync_time                        required: N object: N Whether to synchronize time of controller
card_address                     required: N object: N Start address of card data
card_bit                         required: N object: N Address of card ready bit
machine_start_bit                required: N object: N Address of machine start bit

======================================
<class 'caspper.controller.monitor.BaseMonitor'>

======================================
<class 'caspper.controller.monitor.Monitor'>
max_counter_catch_up             required: N object: N Maximum counter difference with controller to consider for writing transactions
controller                       required: Y object: Y Controller to monitor
transactions                     required: Y object: Y Transaction store object to push counted programs to
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caspper.controller.monitor.MonitorList'>
count                            required: Y object: N Number of monitors to add to list
monitor_0                        required: Y object: Y Monitor object to add to list
offset                           required: N object: N Offset in program numbers for each consecutive controller in list

======================================
<class 'caspper.controller.monitor.MonitorMerger'>
count                            required: Y object: N Number of monitors to add to list
monitor_0                        required: Y object: Y Monitor object to add to list
offset                           required: N object: N Offset in program numbers for each consecutive controller in list

======================================
<class 'caslib.ports.BasePort'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caspper.controller.hostlink.BockHostlink'>
read_time_dm                     required: N object: N DM address of time
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
write_time_dm                    required: N object: N DM write address of time
happy_hour_flag_dm               required: N object: N DM address of happy hour flag
default_program                  required: N object: N Default program number the controller will wash when no program input is available
port                             required: Y object: Y Serial client port object with default settings of 9600,7,E,2
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
set_program_hr                   required: N object: N HR write address of program
decimal_dm                       required: N object: N Whether to interpret DMs as decimal instead of hex
happy_hour_counters_dm           required: N object: N DM address of happy hour counters
counters_dm                      required: N object: N DM address of regular counters
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
unit                             required: N object: N Hostlink unit id
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caslib.ports.BufferPort'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caslib.ports.ClientPort'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caspper.controller.diocontroller.DioController'>
accept_after_pulses              required: N object: N Accept car after this amount of pulses. Defaults to 1000
program_input_event              required: N object: Y Event that should trigger on external program input
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
program_status                   required: N object: Y Status object indicating the currently active program on the controller
main_programs                    required: N object: N List of main programs on controller
long_car_pulses                  required: N object: N Number of pulses with gate closed that will trigger a "long car" warning
gate_status                      required: N object: Y Status object of gate signal
default_program                  required: N object: N Default program number the controller will wash when no program input is available
serialize_program_output         required: N object: N Separately fire program output functions when more than one program should be activated on the controller
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
always_accept_after              required: N object: N Automatically accept a program when it is still on the controller after this amount of seconds. Defaults to 300
first_option_program             required: N object: N First program number that is an option program
min_accept_pulses                required: N object: N Minimun amount of pulses required before accepting a car. Defaults to 1000
accept_event                     required: N object: Y Event object that should trigger when the controller accepts a vehicle
pulse_event                      required: N object: Y Event object that should trigger on converyor pulse
controller_programs              required: N object: N List of programs the actual controller will accept
program_output_function          required: N object: Y Function object to fire when a program should be set on the controller
id                               required: Y object: N 
happy_hour_provider              required: N object: Y Time blocks object that indicates happy hour status
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caspper.inputs.DioInput'>
input_trigger                    required: N object: Y Event that triggers the input status to be read and sent out as program input
input_timeout                    required: N object: N Period for which inputs will be collected before being sent out, in msecs. Defaults to 0
input_events                     required: N object: Y Input events that trigger program input
input_status                     required: N object: Y Input status array to monitor

======================================
<class 'caspper.controller.dummycontroller.DummyController'>
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
default_program                  required: N object: N Default program number the controller will wash when no program input is available
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
happy_hour_provider              required: N object: Y Time blocks object that indicates happy hour status
accept_after                     required: N object: N 
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caslib.ports.EchoPort'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caspper.proxies.ElliRpcProxy'>
port                             required: Y object: N TCP port number of proxy server
server                           required: Y object: Y Server object to proxy

======================================
<class 'caspper.apiserver.Identification'>
identification_provider          required: N object: Y Backend that provides the identification
resource_name                    required: Y object: N Name of resource in server

======================================
<class 'caspper.controller.kesseltronics.KesseltronicsRbc'>
identification_provider          required: N object: Y Object providing identification and transaction handling
report_key_total                 required: N object: N Key word for total amount in rBC report. Defaults to "Total"
listen_port                      required: N object: N TCP port to listen on for bay controller requests. Defaults to 5880
report_key_code                  required: N object: N Key word for code amount in rBC report. Defaults to "Code/Card"
unit_price                       required: N object: N Price of single unit in bay in cents. Defaults to 0
report_key_cash                  required: N object: N Key word for cash amount in rBC report. Defaults to "Cash"
address                          required: Y object: N TCP address of bay controller
command_timeout                  required: N object: N Timeout for request commands to rBC. Defaults to 30
port                             required: N object: N TCP port the bay controller listens on. Defaults to 20280
use_identification_messages      required: N object: N Use messages passed by identification rather than built-in messages

======================================
<class 'caspper.controller.kesseltronics.KesseltronicsRtc'>
use_queue                        required: N object: N Use queue on controller. Defaults to false
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
default_program                  required: N object: N Default program number the controller will wash when no program input is available
port                             required: N object: N TCP port the controller listens on. Defaults to 20250
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
address                          required: Y object: N TCP address of controller
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caslib.ports.Port'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caslib.dio.rtcio.RtcIo'>
input_count                      required: N object: N 
output_count                     required: N object: N 
equipment_name                   required: Y object: N 
port                             required: N object: N 
address                          required: Y object: N 

======================================
<class 'caslib.ports.SerialClientPort'>
parity                           required: N object: N Port parity: N,E,O,M,S. Defaults to N
baudrate                         required: N object: N Port baud rate. Defaults to 9600
databits                         required: N object: N Number of databits. Defaults to 8
persistent                       required: N object: N Whether the port should remain connected between requests
port_number                      required: Y object: N Name of number of communications port. Numbers start from 0. i.e. COM1 is port 0
stopbits                         required: N object: N Number of stopbits: 1, 1.5, 2. Defaults to 1
read_interval_timeout            required: N object: N Time after last received character in milliseconds after which a transmission is considered complete. Defaults to 100

======================================
<class 'caslib.ports.SingleEndPort'>
persistent                       required: N object: N Whether the port should remain connected between requests

======================================
<class 'caspper.events.TimerEvent'>
trigger                          required: N object: Y Start timer by this event instead of initialization
interval                         required: N object: N Interval between event triggers in seconds. Defaults to -1 (inactive)
interval_count                   required: N object: N Number of intervals.  Defaults to (infinite)
time                             required: N object: N Initial time of event trigger in seconds from start. Defaults to Interval

======================================
<class 'caspper.interfaces.totalwash.TotalWash'>
unit_id                          required: N object: N Unit ID to pass to TotalWash
allow_credit_customers           required: N object: N Allow customers with credit accounts to do transactions. Defaults to True
port                             required: Y object: N Port of TotalWash XMLRPC service
address                          required: Y object: N IP address of TotalWash XMLRPC service

======================================
<class 'caspper.apiserver.Transaction'>
transaction_provider             required: N object: Y Backend for processing the transactions
operator_id                      required: N object: N Integer ID of carwash company
resource_name                    required: Y object: N Name of resource in server
carwash_id                       required: N object: N Integer ID of carwash location

======================================
<class 'caspper.transactions.TransactionDatabase'>
user                             required: Y object: N Username of user with sufficient privileges to database
host                             required: N object: N Hostname of database server
password                         required: Y object: N Password for database user
port                             required: N object: N TCP port number of database server
database                         required: N object: N Database name

======================================
<class 'caspper.transactions.TransactionStore'>

======================================
<class 'caspper.apiserver.TwistedApiServer'>
resource_0                       required: N object: Y Resource number 0
port                             required: Y object: N TCP port number to listen on
resources                        required: Y object: N Number of resources in this server

======================================
<class 'caspper.rpcserver.TwistedRpcServer'>
queue                            required: N object: Y Queue to pass incoming programs to
controller                       required: N object: Y Controller to fetch counters from
port                             required: Y object: N TCP port number to listen on
monitors                         required: N object: Y Monitor list to fetch counters from

======================================
<class 'caslib.ports.UsbClientPort'>
vendor_id                        required: Y object: N First part of USB id in XXXX:YYYY
persistent                       required: N object: N Whether the port should remain connected between requests
product_id                       required: Y object: N Second part of USB id in XXXX:YYYY

======================================
<class 'caspper.transactions.WashTransactionProvider'>
controller_id                    required: Y object: N Controller id of controller to provide transactions from
transactions                     required: Y object: Y Transaction backend to provide transactions from

======================================
<class 'cassis.identification.IdentificationProvider'>

======================================
<class 'caslib.ports._SerialPort'>
parity                           required: N object: N Port parity: N,E,O,M,S. Defaults to N
baudrate                         required: N object: N Port baud rate. Defaults to 9600
databits                         required: N object: N Number of databits. Defaults to 8
persistent                       required: N object: N Whether the port should remain connected between requests
port_number                      required: Y object: N Name of number of communications port. Numbers start from 0. i.e. COM1 is port 0
stopbits                         required: N object: N Number of stopbits: 1, 1.5, 2. Defaults to 1
read_interval_timeout            required: N object: N Time after last received character in milliseconds after which a transmission is considered complete. Defaults to 100

======================================
<class 'caslib.ports._UsbPort'>
vendor_id                        required: Y object: N First part of USB id in XXXX:YYYY
persistent                       required: N object: N Whether the port should remain connected between requests
product_id                       required: Y object: N Second part of USB id in XXXX:YYYY

======================================
<class 'cassa.transactions.TransactionProvider'>

======================================
<class 'cassa.transactions.TransactionStore'>

======================================
<class 'caspper.controller.basecontroller.BaseController'>
first_option_program             required: N object: N First program number that is an option program
sync_time                        required: N object: N Whether to synchronize time of controller
allow_multiple_main_programs     required: N object: N Allow input of more than one main program. Defaults to false
main_programs                    required: N object: N List of main programs on controller
default_program                  required: N object: N Default program number the controller will wash when no program input is available
accepted_programs                required: N object: N List of programs accepted from queue before optional translation
controller_programs              required: N object: N List of programs the actual controller will accept
id                               required: Y object: N 
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caspper.controller.basecontroller.ControllerMixin'>

======================================
<class 'caspper.controller.basecontroller.DeleteActiveMixin'>

======================================
<class 'caspper.controller.basecontroller.ExtraOptionsMixin'>
extra_option_programs            required: N object: N Translation table for options that are not programs, but program modifiers: option->modifier

======================================
<class 'caspper.controller.basecontroller.ProgramTranslationMixin'>
program_translations             required: N object: N List of n->m translations for program numbers

======================================
<class 'caspper.controller.basecontroller.PulseGateHandlingMixin'>
long_car_pulses                  required: N object: N Number of pulses with gate closed that will trigger a "long car" warning
accept_after_pulses              required: N object: N Accept car after this amount of pulses. Defaults to 1000
min_accept_pulses                required: N object: N Minimun amount of pulses required before accepting a car. Defaults to 1000

======================================
<class 'caslib.database.Connection'>
user                             required: Y object: N Username of user with sufficient privileges to database
host                             required: N object: N Hostname of database server
password                         required: Y object: N Password for database user
port                             required: N object: N TCP port number of database server
database                         required: N object: N Database name

This document was generated by Jaap Versteegh on April 7, 2015 using patched texi2html 1.82.