2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-25 09:55:38 +00:00

70_ESCVP21net.pm: enable 2-value commands

git-svn-id: https://svn.fhem.de/fhem/trunk@26570 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
hapege 2022-10-22 22:07:16 +00:00
parent 3247838eb7
commit 1bb5ee0527

View File

@ -37,7 +37,8 @@
# 1.01.16 add cyclicConnect to mitigate lost TCP connection issue
# 1.01.17 add TW9400
# 1.01.18 added undocumented settings (IMGPROC, IRIS, LIRIS)
# 1.01.19 added LS12000 (added POPLP, LENS, HLENS)
# 1.01.19 added LS12000 (added POPLP, LENS, HLENS)
# 1.01.20 added more LS12000 options, enable 2-value commands
#
################################################################################
#
@ -71,7 +72,7 @@ use POSIX;
#use JSON::XS qw (encode_json decode_json);
my $version = "1.01.19";
my $version = "1.01.20";
my $missingModul = "";
eval "use JSON::XS qw (encode_json decode_json);1" or $missingModul .= "JSON::XS ";
@ -102,6 +103,27 @@ my %ESCVP21net_defaultsets = (
"PWR" => ":get,on,off,toggle"
);
my %ESCVP21net_Entrysets = (
"BRIGHT" => ":get",
"BRIGHTset" => ":slider,0,1,255",
"CONTRAST" => ":get",
"CONTRASTset" => ":slider,0,1,255",
"DENSITY" => ":get",
"DENSITYset" => ":slider,0,1,255",
"TINT" => ":get",
"TINTset" => ":slider,0,1,255",
"SHARP" => ":get",
"SHARPset" => ":slider,0,1,255"
);
my %ESCVP21net_HomeBasicsets = (
"GAMMA" => ":get,-2,-1,0,1,2,custom"
);
my %ESCVP21net_HomeEntertainmentsets = (
#
);
my %ESCVP21net_Miscsets = (
"KEY" => ":03,05,3C,3D"
);
@ -113,6 +135,7 @@ my %ESCVP21net_TW5650sets = (
"AUTOKEYSTONE" => ":get,on,off",
"BTAUDIO" => ":get,on,off,toggle",
"CMODE" => ":get,Dynamic,Natural,Living,Cinema,3D_Cinema,3D_Dynamic",
"ERASEMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"HREVERSE" => ":get,Flip,Normal",
"ILLUM" => ":get,on,off,toggle",
"IMGPROC" => ":get,fine,fast",
@ -121,6 +144,8 @@ my %ESCVP21net_TW5650sets = (
"MCFI" => ":get,off,low,normal,high",
"MSEL" => ":get,black,blue,user",
"OVSCAN" => ":get,off,4%,8%,auto",
"POPMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PUSHMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"SIGNAL" => ":get,none,2D,3D",
"SNO" => ":get",
"SOURCE" => ":get,HDMI1,HDMI2,ScreenMirror,Input1,USB,LAN",
@ -253,44 +278,47 @@ my %ESCVP21net_TW9400result = (
# LS12000 sets
my %ESCVP21net_LS12000sets = (
"4KENHANCE" => ":get,off,FullHD",
"ASPECT" => ":get,Auto,Normal,Full,Zoom",
"AUTOHOME" => ":get,off,on",
"CMODE" => ":get,Dynamic,Natural,BrightCinema,Cinema,3D_Cinema,3D_Dynamic,BW_Cinema,DigialCinema",
"ASPECT" => ":get,Auto,Full,Zoom,Anamorphic,HorizSqueeze",
"CMODE" => ":get,Dynamic,Natural,BrightCinema,Cinema,BW_Cinema,Vivid",
"DYNRANGE" => ":get,Auto,SDR,HDR10,HLG",
"ERASEMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"HLENS" => ":get",
"HREVERSE" => ":get,Flip,Normal",
"ILLUM" => ":get,on,off,toggle",
"IMGPRESET" => ":get,Setting1,Setting2,Setting3,Setting4,Setting5",
"IMGPROC" => ":get,fine,fast",
"IRIS" => ":get,00,01,02",
"LENS" => ":get",
"LIRIS" => ":get,0,128,255",
"LUMINANCE" => ":get,normal,eco,medium",
"LUMINANCE" => ":get,min,middle,max",
"MCFI" => ":get,off,low,normal,high",
"MSEL" => ":get,black,blus,user",
"OVSCAN" => ":get,off,4%,8%,auto",
"POPLP" => ":01,01,03,04,05,06,07,08,09,0A",
"PRODUCT" => ":get,ModelName_on,ModelName_off",
"SIGNAL" => ":get,none,2D,3D",
"POPLA" => ":Memory01,Memory02,Memory03",
"POPLP" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"POPMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PUSHLA" => ":Memory01,Memory02,Memory03",
"PUSHLP" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PUSHMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"SIGNAL" => ":get",
"SNO" => ":get",
"SOURCE" => ":get,HDMI1,HDMI2,Input1,Input2,ScreenMirror,PC1,PC2,USB,LAN,Video,Video(RCA),WirelessHD",
"VREVERSE" => ":get,Flip,Normal",
"WLPWR" => ":get,WLAN_on,WLAN_off"
"SOURCE" => ":get,HDMI1,HDMI2",
"VREVERSE" => ":get,Flip,Normal"
);
my %ESCVP21net_LS12000result = (
"CMODE:06" => "Dynamic",
"CMODE:07" => "Natural",
"CMODE:0C" => "BrightCinema",
"CMODE:15" => "Cinema",
"CMODE:17" => "3D_Cinema",
"CMODE:18" => "3D_Dynamic",
"CMODE:20" => "BW_Cinema",
"CMODE:22" => "DigitalCinema",
"LUMINANCE:00" => "normal",
"LUMINANCE:01" => "eco",
"LUMINANCE:02" => "medium"
"ASPECT:30" => "Auto",
"ASPECT:40" => "Full",
"ASPECT:50" => "Zoom",
"ASPECT:80" => "Anamorphic",
"ASPECT:90" => "HorizSqueeze",
"CMODE:06" => "Dynamic",
"CMODE:07" => "Natural",
"CMODE:0C" => "BrightCinema",
"CMODE:15" => "Cinema",
"CMODE:20" => "BW_Cinema",
"CMODE:23" => "Vivid",
"LUMINANCE:00" => "min",
"LUMINANCE:127" => "middle",
"LUMINANCE:255" => "max",
"SIGNAL:00" => "no_signal",
"SIGNAL:01" => "signal_detected"
);
# scotty sets - sort of godmode, gives you enhanced set possibilities
@ -302,8 +330,9 @@ my %ESCVP21net_Scottysets = (
"AUDIO" => ":get,Audio1,Audio2,USB",
"AVOUT" => ":get,projection,constantly",
"BTAUDIO" => ":get,on,off,toggle",
"CMODE" => ":get,sRGB,Normal,Meeting,Presentation,Theatre,Game/LivingRoom,Natural,Dynamic/Sports,09,Custom,Living,BlackBoard,WhiteBoard,14,Photo,Cinema,3D_Cinema,3D_Dynamic,BW_Cinema,DigitalCinema",
"CMODE" => ":get,sRGB,Normal,Meeting,Presentation,Theatre,Game/LivingRoom,Natural,Dynamic/Sports,09,Custom,Living,BlackBoard,WhiteBoard,14,Photo,Cinema,3D_Cinema,3D_Dynamic,BW_Cinema,DigitalCinema,Vivid",
"DYNRANGE" => ":get,Auto,SDR,HDR10,HLG",
"ERASEMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"FREEZE" => ":get,on,off,toggle",
"HLENS" => ":get",
"HREVERSE" => ":get,Flip,Normal",
@ -317,7 +346,12 @@ my %ESCVP21net_Scottysets = (
"MCFI" => ":get,off,low,normal,high",
"MSEL" => ":get,black,blus,user",
"OVSCAN" => ":get,off,4%,8%,auto",
"POPLP" => ":01,01,03,04,05,06,07,08,09,0A",
"POPLA" => ":Memory01,Memory02,Memory03",
"POPLP" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"POPMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PUSHLA" => ":Memory01,Memory02,Memory03",
"PUSHLP" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PUSHMEM" => ":Memory01,Memory02,Memory03,Memory04,Memory05,Memory06,Memory07,Memory08,Memory09,Memory10",
"PRODUCT" => ":get,ModelName_on,ModelName_off",
"PWSTATUS" => ":get",
"SIGNAL" => ":get,none,2D,3D",
@ -349,7 +383,8 @@ my %ESCVP21net_Scottyresult = (
"CMODE:17" => "3D_Cinema",
"CMODE:18" => "3D_Dynamic",
"CMODE:20" => "BW_Cinema",
"CMODE:22" => "DigitalCinema",
"CMODE:22" => "DigitalCinema",
"CMODE:Vivid" => "23",
"LUMINANCE:00" => "normal",
"LUMINANCE:01" => "eco",
"LUMINANCE:02" => "medium"
@ -364,6 +399,8 @@ my %ESCVP21net_data = (
"ASPECT:Auto" => "30",
"ASPECT:Full" => "40",
"ASPECT:Zoom" => "50",
"ASPECT:Anamorphic" => "80",
"ASPECT:HorizSqueeze" => "90",
"AUDIO:Audio1" => "01",
"AUDIO:Audio2" => "02",
"AUDIO:USB" => "03",
@ -396,12 +433,29 @@ my %ESCVP21net_data = (
"CMODE:3D_Cinema" => "17",
"CMODE:3D_Dynamic" => "18",
"CMODE:DigitalCinema" => "22",
"CMODE:Vivid" => "23",
"DYNRANGE:Auto" => "00",
"DYNRANGE:SDR" => "01",
"DYNRANGE:HDR10" => "20",
"DYNRANGE:HLG" => "30",
"ERASEMEM:Memory01" => "02 01",
"ERASEMEM:Memory02" => "02 02",
"ERASEMEM:Memory03" => "02 03",
"ERASEMEM:Memory04" => "02 04",
"ERASEMEM:Memory05" => "02 05",
"ERASEMEM:Memory06" => "02 06",
"ERASEMEM:Memory07" => "02 07",
"ERASEMEM:Memory08" => "02 08",
"ERASEMEM:Memory09" => "02 09",
"ERASEMEM:Memory10" => "02 0A",
"FREEZE:on" => "ON",
"FREEZE:off" => "OFF",
"GAMMA:-2" => "24",
"GAMMA:-1" => "23",
"GAMMA:0" => "22",
"GAMMA:1" => "21",
"GAMMA:2" => "20",
"GAMMA:custom" => "F0",
"HREVERSE:Flip" => "ON",
"HREVERSE:Normal" => "OFF",
"ILLUM:on" => "01",
@ -418,6 +472,9 @@ my %ESCVP21net_data = (
"LUMINANCE:normal" => "00",
"LUMINANCE:eco" => "01",
"LUMINANCE:medium" => "02",
"LUMINANCE:min" => "00",
"LUMINANCE:middle" => "127",
"LUMINANCE:max" => "255",
"MCFI:off" => "00",
"MCFI:low" => "01",
"MCFI:normal" => "02",
@ -431,27 +488,73 @@ my %ESCVP21net_data = (
"OVSCAN:4%" => "02",
"OVSCAN:8%" => "04",
"OVSCAN:auto" => "A0",
"POPLA:Memory01" => "01",
"POPLA:Memory02" => "02",
"POPLA:Memory03" => "03",
"POPLP:Memory01" => "01",
"POPLP:Memory02" => "02",
"POPLP:Memory03" => "03",
"POPLP:Memory04" => "04",
"POPLP:Memory05" => "05",
"POPLP:Memory06" => "06",
"POPLP:Memory07" => "07",
"POPLP:Memory08" => "08",
"POPLP:Memory09" => "09",
"POPLP:Memory10" => "0A",
"PUSHLA:Memory01" => "01",
"PUSHLA:Memory02" => "02",
"PUSHLA:Memory03" => "03",
"PUSHLP:Memory01" => "01",
"PUSHLP:Memory02" => "02",
"PUSHLP:Memory03" => "03",
"PUSHLP:Memory04" => "04",
"PUSHLP:Memory05" => "05",
"PUSHLP:Memory06" => "06",
"PUSHLP:Memory07" => "07",
"PUSHLP:Memory08" => "08",
"PUSHLP:Memory09" => "09",
"PUSHLP:Memory10" => "0A",
"PRODUCT:ModelName_off" => "00",
"PRODUCT:ModelName_on" => "01",
"PUSHMEM:Memory01" => "02 01",
"PUSHMEM:Memory02" => "02 02",
"PUSHMEM:Memory03" => "02 03",
"PUSHMEM:Memory04" => "02 04",
"PUSHMEM:Memory05" => "02 05",
"PUSHMEM:Memory06" => "02 06",
"PUSHMEM:Memory07" => "02 07",
"PUSHMEM:Memory08" => "02 08",
"PUSHMEM:Memory09" => "02 09",
"PUSHMEM:Memory10" => "02 0A",
"POPMEM:Memory01" => "02 01",
"POPMEM:Memory02" => "02 02",
"POPMEM:Memory03" => "02 03",
"POPMEM:Memory04" => "02 04",
"POPMEM:Memory05" => "02 05",
"POPMEM:Memory06" => "02 06",
"POPMEM:Memory07" => "02 07",
"POPMEM:Memory08" => "02 08",
"POPMEM:Memory09" => "02 09",
"POPMEM:Memory10" => "02 0A",
"PWR:on" => "ON",
"PWR:off" => "OFF",
"SIGNAL:none" => "00",
"SIGNAL:2D" => "01",
"SIGNAL:3D" => "02",
"SIGNAL:not_supported" => "03",
"SOURCE:HDMI1" => "30",
"SOURCE:HDMI2" => "A0",
"SOURCE:ScreenMirror" => "56",
"SOURCE:PC" => "10",
"SOURCE:Input1" => "10",
"SOURCE:Input1" => "10",
"SOURCE:PC" => "10",
"SOURCE:PC1" => "1F",
"SOURCE:Input2" => "20",
"SOURCE:Dsub" => "20",
"SOURCE:PC2" => "2F",
"SOURCE:HDMI1" => "30",
"SOURCE:Video" => "40",
"SOURCE:Video(RCA)" => "41",
"SOURCE:PC1" => "1F",
"SOURCE:PC2" => "2F",
"SOURCE:USB" => "52",
"SOURCE:LAN" => "53",
"SOURCE:Dsub" => "20",
"SOURCE:ScreenMirror" => "56",
"SOURCE:HDMI2" => "A0",
"SOURCE:WirelessHD" => "D0",
"VREVERSE:Flip" => "ON",
"VREVERSE:Normal" => "OFF",
@ -488,6 +591,12 @@ my %ESCVP21net_defaultresults = (
"DYNRANGE:30" => "HLG",
"FREEZE:ON" => "on",
"FREEZE:OFF" => "off",
"GAMMA:24" => "-2",
"GAMMA:23" => "-1",
"GAMMA:22" => "0",
"GAMMA:21" => "1",
"GAMMA:20" => "2",
"GAMMA:F0" => "custom",
"HREVERSE:ON" => "Flip",
"HREVERSE:OFF" => "Normal",
"ILLUM:01" => "on",
@ -1053,13 +1162,15 @@ sub ESCVP21net_Set {
my $name = shift @param;
my $opt = shift @param;
if (int(@param) > 0){
$value = join("", @param);
# changed for multi parameter by adding joining params by space
#$value = join("", @param);
$value = join(" ", @param);
#my $value = shift @param;
}
else{
$value = "none";
}
# add LF to log for better overview...
# add LF to log for better overview in Logfile...
if ($opt ne "?"){
main::Log3 $name, 5, "\n";
main::Log3 $name, 5, "[$name]: Set: called with $name $opt $value";
@ -1175,7 +1286,7 @@ sub ESCVP21net_Set {
}
##### end of debug options
# everything fine so far, so contruct $arg to pass by blockingFn
# everything fine so far, so construct $arg to pass by blockingFn
my $arg = $name."|".$opt."|".$value;
# store latest command to helper
$hash->{helper}{lastCommand} = $opt;
@ -1200,7 +1311,7 @@ sub ESCVP21net_setValue($){
# subroutine should be called unblocking e.g. via ESCVP21net_Set
my ($string) = @_;
my ( $name, $cmd, $val ) = split( "\\|", $string );
my $result = "none";
my $result = "none"; # set as default for initialization
my $returnval = "$name|$cmd|error"; # just for initialization
my @resultarr;
my $data = "";
@ -1234,11 +1345,30 @@ sub ESCVP21net_setValue($){
if (exists($ESCVP21net_data{$datakey})){
$val = $ESCVP21net_data{$datakey};
}
# VOLset needs special treatment, since Epson does some funny by-12 calculation
if ($cmd eq "VOLset"){
$val = $val*$volfactor;
$cmd = "VOL";
# handle commands with integers to set, named XXXXset
# test if cmd ends with set, then strip set and set cmd to string without set
# e.g. VOLset becomes VOL
# BRIGHTset: not all values might be accepted, projector switches to next possible lower value
if ($cmd =~ /set$/){
my $cmdraw = $cmd;
# VOLset needs special treatment, since Epson does some funny by-12 calculation
if ($cmd eq "VOLset"){
$val = $val*$volfactor;
#$cmd = "VOL";
}
$cmd =~ s/set//;
main::Log3 $name, 5, "[$name]: setValue: $cmdraw contains set, cmd changed to $cmd";
}
# BRIGHTset
# not all values might be accepted, projector switches to nex possible lower value
#if ($cmd eq "BRIGHTset"){
# #$val = $val*$factor;
# $cmd = "BRIGHT";
#}
# set end encode data to be sent, Epson wants \r\n and utf8
$data = "$cmd $val\r\n";
$encdata = encode("utf8",$data);
@ -1481,9 +1611,12 @@ sub ESCVP21net_setValueDone {
}
else{
$rv = readingsBulkUpdate($hash, $cmd, $result, 1);
# if VOL, we also have to set VOLset!
$rv = readingsBulkUpdate($hash, "VOLset", "set to $result", 1)
if ($cmd eq "VOL");
# if cmd was originally XXXset, we also have to set XXXset
if ($hash->{helper}{lastCommand} =~ /set$/){
$rv = readingsBulkUpdate($hash, $hash->{helper}{lastCommand}, "set to $result", 1);
}
#if ($cmd eq "VOL") {$rv = readingsBulkUpdate($hash, "VOLset", "set to $result", 1);}
#if ($cmd eq "BRIGHT") {$rv = readingsBulkUpdate($hash, "BRIGHTset", "set to $result", 1);}
$getcmds .= $cmd.",";
}
main::Log3 $name, 5, "[$name]: setValueDone: resultarray loop end: $cmd set to $rv";
@ -1515,12 +1648,32 @@ sub ESCVP21net_setValueError {
sub ESCVP21net_calcResult {
my ($hash, $result, $cmd, $datakey, $volfactor) = @_;
my $name = $hash->{NAME};
my $setval;
if ($datakey =~ /:/){
$setval = (split ":", $datakey, 2)[1];
}
else {
$setval = $datakey;
}
# result is of the form "LAMP=1234 :"
# or something like IMEVENT=0001 03 00000002 00000000 T1 F1 : (happens sometimes at PWR off, 03 is the relevant value then)
main::Log3 $name, 5, "[$name]: calcResult got Result: $result, Command: $cmd, Datakey: $datakey, SetVal: $setval";
if (!$result){
$result = "none";
return $result;
}
elsif ($result =~ "ERR"){
# Projector rturned an error - happens when no "get" is implemented by Epson
# I decided to not output just "Error", but take the value which was originally set
# and write it to result
# Not 100% clean, since one might set an value outside fhem, and the module has no chance to read that
# but why, WTF, should someone use anything but fhem to set something ;-)
#$result = "projector does not provide return value";
#return $result;
$result = $setval;
}
elsif ($result =~ "IMEVENT"){
$result = (split / /, $result, 3)[1];
}
@ -1797,7 +1950,7 @@ sub ESCVP21net_setTypeCmds ($){
my %ESCVP21net_typeresults;
if ($hash->{model} eq "TW5650"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_TW5650sets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_TW5650sets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_TW5650result);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded TW5650 sets and result";
}
@ -1807,27 +1960,27 @@ sub ESCVP21net_setTypeCmds ($){
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded EB2250 sets and result";
}
elsif ($hash->{model} eq "TW6100"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_TW6100sets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_TW6100sets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_TW6100result);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded TW6100 sets and result";
}
elsif ($hash->{model} eq "TW7400"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_TW7400sets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_TW7400sets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_TW7400result);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded TW7400 sets and result";
}
elsif ($hash->{model} eq "TW9400"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_TW9400sets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_TW9400sets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_TW9400result);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded TW9400 sets and result";
}
elsif ($hash->{model} eq "LS12000"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_LS12000sets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_LS12000sets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_LS12000result);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded LS12000 sets and result";
}
elsif ($hash->{model} eq "Scotty"){
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Scottysets, %VP21addattrs);
%ESCVP21net_typesets = (%ESCVP21net_defaultsets,%ESCVP21net_Entrysets,%ESCVP21net_HomeBasicsets,%ESCVP21net_Scottysets, %VP21addattrs);
%ESCVP21net_typeresults = (%ESCVP21net_defaultresults,%ESCVP21net_Scottyresult);
main::Log3 $name, 5, "[$name]: setTypeCmds: loaded Scotty sets and result";
}