mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-30 05:57:08 +00:00
21_OWAD.pm: Update, nur minimale Änderungen
21_OWID.pm: Update, nur minimale Änderungen 21_OWMULTI.pm: Große Überarbeitung für asynchrones OWX-NG 21_OWSWITCH.pm: Große Überarbeitung für asynchrones OWX-NG 21_OWTHERM.pm: Große Überarbeitung für asynchrones OWX-NG 21_OWVAR.pm: Große Überarbeitung für asynchrones OWX-NG git-svn-id: https://svn.fhem.de/fhem/trunk@13642 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
1354308564
commit
05d2103271
@ -86,7 +86,7 @@ use ProtoThreads;
|
|||||||
no warnings 'deprecated';
|
no warnings 'deprecated';
|
||||||
sub Log3($$$);
|
sub Log3($$$);
|
||||||
|
|
||||||
my $owx_version="6.0";
|
my $owx_version="6.1";
|
||||||
#-- fixed raw channel name, flexible channel name
|
#-- fixed raw channel name, flexible channel name
|
||||||
my @owg_fixed = ("A","B","C","D");
|
my @owg_fixed = ("A","B","C","D");
|
||||||
my @owg_channel = ("A","B","C","D");
|
my @owg_channel = ("A","B","C","D");
|
||||||
@ -944,7 +944,7 @@ sub OWAD_Set($@) {
|
|||||||
|
|
||||||
#-- re-intialize
|
#-- re-intialize
|
||||||
if($key eq "initialize") {
|
if($key eq "initialize") {
|
||||||
OWADInitializeDevice($hash);
|
OWAD_Initialize($hash);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1737,6 +1737,8 @@ sub OWXAD_PT_SetPage($$) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire A/D converters DS2450
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWAD"></a>
|
<a name="OWAD"></a>
|
||||||
|
@ -68,7 +68,7 @@ use ProtoThreads;
|
|||||||
no warnings 'deprecated';
|
no warnings 'deprecated';
|
||||||
sub Log3($$$);
|
sub Log3($$$);
|
||||||
|
|
||||||
my $owx_version="6.01";
|
my $owx_version="6.1";
|
||||||
#-- declare variables
|
#-- declare variables
|
||||||
my %gets = (
|
my %gets = (
|
||||||
"present" => "",
|
"present" => "",
|
||||||
@ -477,6 +477,8 @@ sub OWID_Undef ($) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire devices having only a serial number
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWID"></a>
|
<a name="OWID"></a>
|
||||||
|
@ -87,7 +87,7 @@ no warnings 'deprecated';
|
|||||||
|
|
||||||
sub Log($$);
|
sub Log($$);
|
||||||
|
|
||||||
my $owx_version="6.01";
|
my $owx_version="6.1";
|
||||||
#-- flexible channel name
|
#-- flexible channel name
|
||||||
my ($owg_channel,$owg_schannel);
|
my ($owg_channel,$owg_schannel);
|
||||||
|
|
||||||
@ -888,9 +888,10 @@ sub OWXMULTI_BinValues($$$$$$$) {
|
|||||||
|
|
||||||
#-- process results
|
#-- process results
|
||||||
@data=split(//,$res);
|
@data=split(//,$res);
|
||||||
if (@data != 9) {
|
#-- not useful here, because data may be filled up with ff
|
||||||
$msg="$name returns invalid data length, ".int(@data)." instead of 9 bytes";
|
#if (@data != 9) {
|
||||||
}elsif ((ord($data[0]) & 112)!=0) {
|
# $msg="$name returns invalid data length, ".int(@data)." instead of 9 bytes";
|
||||||
|
if ((ord($data[0]) & 112)!=0) {
|
||||||
$msg="$name: conversion not complete or data invalid";
|
$msg="$name: conversion not complete or data invalid";
|
||||||
}elsif (OWX_CRC8(substr($res,0,8),$data[8])==0) {
|
}elsif (OWX_CRC8(substr($res,0,8),$data[8])==0) {
|
||||||
$msg="$name returns invalid CRC";
|
$msg="$name returns invalid CRC";
|
||||||
@ -904,6 +905,7 @@ sub OWXMULTI_BinValues($$$$$$$) {
|
|||||||
# family = 26 => DS2438
|
# family = 26 => DS2438
|
||||||
#-- transform binary rep of VDD
|
#-- transform binary rep of VDD
|
||||||
if( $context eq "ds2438.getvdd") {
|
if( $context eq "ds2438.getvdd") {
|
||||||
|
#-- possible addtional check: $data[0] must be 08
|
||||||
#-- temperature
|
#-- temperature
|
||||||
$lsb = ord($data[1]);
|
$lsb = ord($data[1]);
|
||||||
$msb = ord($data[2]) & 127;
|
$msb = ord($data[2]) & 127;
|
||||||
@ -933,6 +935,7 @@ sub OWXMULTI_BinValues($$$$$$$) {
|
|||||||
|
|
||||||
#-- transform binary rep of VAD
|
#-- transform binary rep of VAD
|
||||||
}elsif( $context eq "ds2438.getvad") {
|
}elsif( $context eq "ds2438.getvad") {
|
||||||
|
#-- possible addtional check: $data[0] must be 08
|
||||||
#-- voltage
|
#-- voltage
|
||||||
$lsb = ord($data[3]);
|
$lsb = ord($data[3]);
|
||||||
$msb = ord($data[4]) & 3;
|
$msb = ord($data[4]) & 3;
|
||||||
@ -1089,37 +1092,37 @@ sub OWXMULTI_GetValues($) {
|
|||||||
#-- switch the device to current measurement on, VDD only
|
#-- switch the device to current measurement on, VDD only
|
||||||
#-- issue the match ROM command \x55 and the write scratchpad command
|
#-- issue the match ROM command \x55 and the write scratchpad command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "write SP", 0, $owx_dev, "\x4E\x00\x09", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "write SP", 0, $owx_dev, "\x4E\x00\x09", 0, 2, 0, undef, 0.01);
|
||||||
|
|
||||||
#-- copy scratchpad to register
|
#-- copy scratchpad to register
|
||||||
#-- issue the match ROM command \x55 and the copy scratchpad command
|
#-- issue the match ROM command \x55 and the copy scratchpad command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "copy SP", 0, $owx_dev, "\x48\x00", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "copy SP", 0, $owx_dev, "\x48\x00", 0, 1, 0, undef, 0.01);
|
||||||
|
|
||||||
#-- initiate temperature conversion
|
#-- initiate temperature conversion
|
||||||
#-- conversion needs some 12 ms !
|
#-- conversion needs some 12 ms !
|
||||||
#-- issue the match ROM command \x55 and the start conversion command
|
#-- issue the match ROM command \x55 and the start conversion command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "T conversion", 0, $owx_dev, "\x44", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "T conversion", 0, $owx_dev, "\x44", 0, 0, 0, undef, 0.02);
|
||||||
|
|
||||||
#-- initiate voltage conversion
|
#-- initiate voltage conversion
|
||||||
#-- conversion needs some 6 ms !
|
#-- conversion needs some 6 ms !
|
||||||
#-- issue the match ROM command \x55 and the start conversion command
|
#-- issue the match ROM command \x55 and the start conversion command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "V conversion", 0, $owx_dev, "\xB4", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "V conversion", 0, $owx_dev, "\xB4", 0, 0, 0, undef, 0.01);
|
||||||
|
|
||||||
#-- from memory to scratchpad
|
#-- from memory to scratchpad
|
||||||
#-- copy needs some 12 ms !
|
#-- copy needs some 12 ms !
|
||||||
#-- issue the match ROM command \x55 and the recall memory command
|
#-- issue the match ROM command \x55 and the recall memory command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "recall", 0, $owx_dev, "\xB8\x00", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "recall", 0, $owx_dev, "\xB8\x00", 0, 2, 0, undef, 0.02);
|
||||||
|
|
||||||
#-- NOW ask the specific device
|
#-- NOW ask the specific device
|
||||||
#-- issue the match ROM command \x55 and the read scratchpad command \xBE
|
#-- issue the match ROM command \x55 and the read scratchpad command \xBE
|
||||||
#-- reading 9 + 2 + 9 data bytes = 20 bytes
|
#-- reading 9 + 2 + 9 data bytes = 20 bytes
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
# 1 provides additional reset after last operattion
|
# 1 provides additional reset after last operation
|
||||||
OWX_Qomplex($master, $hash, "ds2438.getvdd", 1, $owx_dev, "\xBE\x00\x08", 0, 9, 11, \&OWXMULTI_BinValues, 0);
|
OWX_Qomplex($master, $hash, "ds2438.getvdd", 1, $owx_dev, "\xBE\x00\x08", 0, 9, 11, \&OWXMULTI_BinValues, 0.01);
|
||||||
|
|
||||||
#-- switch the device to current measurement off, V external only
|
#-- switch the device to current measurement off, V external only
|
||||||
#-- issue the match ROM command \x55 and the write scratchpad command
|
#-- issue the match ROM command \x55 and the write scratchpad command
|
||||||
@ -1128,32 +1131,32 @@ sub OWXMULTI_GetValues($) {
|
|||||||
#-- switch the device to current measurement on, V external only
|
#-- switch the device to current measurement on, V external only
|
||||||
#-- issue the match ROM command \x55 and the write scratchpad command
|
#-- issue the match ROM command \x55 and the write scratchpad command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "write SP", 0, $owx_dev, "\x4E\x00\x01", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "write SP", 0, $owx_dev, "\x4E\x00\x01", 0, 1, 0, undef, 0.01);
|
||||||
|
|
||||||
|
|
||||||
#-- copy scratchpad to register
|
#-- copy scratchpad to register
|
||||||
#-- issue the match ROM command \x55 and the copy scratchpad command
|
#-- issue the match ROM command \x55 and the copy scratchpad command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "copy SP", 0, $owx_dev, "\x48\x00", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "copy SP", 0, $owx_dev, "\x48\x00", 0, 1, 0, undef, 0.01);
|
||||||
|
|
||||||
#-- initiate voltage conversion
|
#-- initiate voltage conversion
|
||||||
#-- conversion needs some 6 ms !
|
#-- conversion needs some 6 ms !
|
||||||
#-- issue the match ROM command \x55 and the start conversion command
|
#-- issue the match ROM command \x55 and the start conversion command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "V conversion", 0, $owx_dev, "\xB4", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "V conversion", 0, $owx_dev, "\xB4", 0, 0, 0, undef, 0.01);
|
||||||
|
|
||||||
#-- from memory to scratchpad
|
#-- from memory to scratchpad
|
||||||
#-- copy needs some 12 ms !
|
#-- copy needs some 12 ms !
|
||||||
#-- issue the match ROM command \x55 and the recall memory command
|
#-- issue the match ROM command \x55 and the recall memory command
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "recall", 0, $owx_dev, "\xB8\x00", 0, 0, 0, undef, 0);
|
OWX_Qomplex($master, $hash, "recall", 0, $owx_dev, "\xB8\x00", 0, 1, 0, undef, 0.02);
|
||||||
|
|
||||||
#-- NOW ask the specific device
|
#-- NOW ask the specific device
|
||||||
#-- issue the match ROM command \x55 and the read scratchpad command \xBE
|
#-- issue the match ROM command \x55 and the read scratchpad command \xBE
|
||||||
#-- reading 9 + 2 + 9 data bytes = 20 bytes
|
#-- reading 9 + 2 + 9 data bytes = 20 bytes
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
# 1 provides additional reset after last operattion
|
# 1 provides additional reset after last operation
|
||||||
OWX_Qomplex($master, $hash, "ds2438.getvad", 1, $owx_dev, "\xBE\x00", 0, 20, 11, \&OWXMULTI_BinValues, 0);
|
OWX_Qomplex($master, $hash, "ds2438.getvad", 1, $owx_dev, "\xBE\x00", 0, 9, 11, \&OWXMULTI_BinValues, 0.01);
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -1396,6 +1399,8 @@ sub OWXMULTI_PT_SetValues($@) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire chip DS2438Z - Smart Battery Monitor
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWMULTI"></a>
|
<a name="OWMULTI"></a>
|
||||||
|
@ -87,7 +87,7 @@ no warnings 'deprecated';
|
|||||||
|
|
||||||
sub Log($$);
|
sub Log($$);
|
||||||
|
|
||||||
my $owx_version="6.02";
|
my $owx_version="6.1";
|
||||||
#-- fixed raw channel name, flexible channel name
|
#-- fixed raw channel name, flexible channel name
|
||||||
my @owg_fixed = ("A","B","C","D","E","F","G","H");
|
my @owg_fixed = ("A","B","C","D","E","F","G","H");
|
||||||
my @owg_channel = ("A","B","C","D","E","F","G","H");
|
my @owg_channel = ("A","B","C","D","E","F","G","H");
|
||||||
@ -209,6 +209,10 @@ sub OWSWITCH_Define ($$) {
|
|||||||
if( $fam eq "3A" ){
|
if( $fam eq "3A" ){
|
||||||
$model = "DS2413";
|
$model = "DS2413";
|
||||||
CommandAttr (undef,"$name model DS2413");
|
CommandAttr (undef,"$name model DS2413");
|
||||||
|
}elsif( $fam eq "85" ){
|
||||||
|
$fam ="3A";
|
||||||
|
$model = "DS2413";
|
||||||
|
CommandAttr (undef,"$name model DS2413");
|
||||||
}elsif( $fam eq "12" ){
|
}elsif( $fam eq "12" ){
|
||||||
$model = "DS2406";
|
$model = "DS2406";
|
||||||
CommandAttr (undef,"$name model DS2406");
|
CommandAttr (undef,"$name model DS2406");
|
||||||
@ -411,6 +415,7 @@ sub OWSWITCH_FormatValues($) {
|
|||||||
OWSWITCH_ChannelNames($hash);
|
OWSWITCH_ChannelNames($hash);
|
||||||
|
|
||||||
#-- put into READINGS
|
#-- put into READINGS
|
||||||
|
my $gpio = 0;
|
||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
|
|
||||||
#-- formats for output
|
#-- formats for output
|
||||||
@ -418,6 +423,8 @@ sub OWSWITCH_FormatValues($) {
|
|||||||
|
|
||||||
#-- input state is 0 = ON or 1 = OFF
|
#-- input state is 0 = ON or 1 = OFF
|
||||||
$vval = $hash->{owg_val}->[$i];
|
$vval = $hash->{owg_val}->[$i];
|
||||||
|
$gpio += $hash->{owg_val}->[$i]<<$i;
|
||||||
|
|
||||||
#-- output state is 0 = ON or 1 = OFF
|
#-- output state is 0 = ON or 1 = OFF
|
||||||
$vvax = $hash->{owg_vax}->[$i];
|
$vvax = $hash->{owg_vax}->[$i];
|
||||||
|
|
||||||
@ -442,6 +449,7 @@ sub OWSWITCH_FormatValues($) {
|
|||||||
|
|
||||||
#-- STATE
|
#-- STATE
|
||||||
readingsBulkUpdate($hash,"state",$svalue);
|
readingsBulkUpdate($hash,"state",$svalue);
|
||||||
|
readingsBulkUpdate($hash,"gpio",$gpio);
|
||||||
readingsEndUpdate($hash,1);
|
readingsEndUpdate($hash,1);
|
||||||
|
|
||||||
return $svalue;
|
return $svalue;
|
||||||
@ -532,7 +540,7 @@ sub OWSWITCH_Get($@) {
|
|||||||
|
|
||||||
#-- OWX interface
|
#-- OWX interface
|
||||||
if( $interface eq "OWX" ){
|
if( $interface eq "OWX" ){
|
||||||
OWXSWITCH_GetModState($hash,undef,undef);
|
OWXSWITCH_GetModState($hash,"final",undef);
|
||||||
}elsif( $interface eq "OWX_ASYNC") {
|
}elsif( $interface eq "OWX_ASYNC") {
|
||||||
eval {
|
eval {
|
||||||
$ret = OWX_ASYNC_RunToCompletion($hash,OWXSWITCH_PT_GetState($hash));
|
$ret = OWX_ASYNC_RunToCompletion($hash,OWXSWITCH_PT_GetState($hash));
|
||||||
@ -608,11 +616,8 @@ sub OWSWITCH_GetValues($) {
|
|||||||
#-- Get readings according to interface type
|
#-- Get readings according to interface type
|
||||||
my $interface= $hash->{IODev}->{TYPE};
|
my $interface= $hash->{IODev}->{TYPE};
|
||||||
if( $interface eq "OWX" ){
|
if( $interface eq "OWX" ){
|
||||||
#-- max 3 tries
|
$ret = OWXSWITCH_GetModState($hash,"final",undef);
|
||||||
for(my $try=0; $try<3; $try++){
|
|
||||||
$ret = OWXSWITCH_GetModState($hash,undef,undef);
|
|
||||||
return if( !defined($ret) );
|
return if( !defined($ret) );
|
||||||
}
|
|
||||||
}elsif( $interface eq "OWX_ASYNC" ){
|
}elsif( $interface eq "OWX_ASYNC" ){
|
||||||
eval {
|
eval {
|
||||||
OWX_ASYNC_Schedule( $hash, OWXSWITCH_PT_GetState($hash) );
|
OWX_ASYNC_Schedule( $hash, OWXSWITCH_PT_GetState($hash) );
|
||||||
@ -685,7 +690,7 @@ sub OWSWITCH_Set($@) {
|
|||||||
|
|
||||||
my ($cname,@cnama,@channel);
|
my ($cname,@cnama,@channel);
|
||||||
my $ret="";
|
my $ret="";
|
||||||
my ($ret1,$ret2);
|
my ($ret1,$ret2,$ret3);
|
||||||
|
|
||||||
#-- for the selector: which values are possible
|
#-- for the selector: which values are possible
|
||||||
if (@a == 2){
|
if (@a == 2){
|
||||||
@ -724,7 +729,7 @@ sub OWSWITCH_Set($@) {
|
|||||||
#-- Set readings according to interface type
|
#-- Set readings according to interface type
|
||||||
my $interface= $hash->{IODev}->{TYPE};
|
my $interface= $hash->{IODev}->{TYPE};
|
||||||
|
|
||||||
#-- set single state
|
#-- set single output state: get-set-get needed because external shorting can be discovered only after set
|
||||||
if( $key eq "output" ){
|
if( $key eq "output" ){
|
||||||
return "OWSWITCH: Set needs parameter when writing output: <channel>"
|
return "OWSWITCH: Set needs parameter when writing output: <channel>"
|
||||||
if( int(@a)<2 );
|
if( int(@a)<2 );
|
||||||
@ -765,15 +770,17 @@ sub OWSWITCH_Set($@) {
|
|||||||
$nstr = "$a[0] $a[1] $a[2] on";
|
$nstr = "$a[0] $a[1] $a[2] on";
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
return "OWSWITCH: Wrong data value $a[3], must be on, off, on-for-timer or off-for-timer";
|
return "OWSWITCH: Set has wrong data value $a[3], must be on, off, on-for-timer or off-for-timer";
|
||||||
}
|
}
|
||||||
|
#-- timer for timed on/off
|
||||||
if ($nstr ne ""){
|
if ($nstr ne ""){
|
||||||
fhem("define ".$a[0].".".$owg_fixed[$outfnd]."Timer at +".$ntim." set ".$nstr);
|
fhem("define ".$a[0].".".$owg_fixed[$outfnd]."Timer at +".$ntim." set ".$nstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-- combined get-set-get operation
|
||||||
#-- OWX interface
|
#-- OWX interface
|
||||||
if( $interface eq "OWX" ){
|
if( $interface eq "OWX" ){
|
||||||
|
#-- all-in one needed, because return not sure
|
||||||
$ret1 = OWXSWITCH_GetModState($hash,$outfnd,$outval);
|
$ret1 = OWXSWITCH_GetModState($hash,$outfnd,$outval);
|
||||||
}elsif( $interface eq "OWX_ASYNC"){
|
}elsif( $interface eq "OWX_ASYNC"){
|
||||||
eval {
|
eval {
|
||||||
@ -793,9 +800,10 @@ sub OWSWITCH_Set($@) {
|
|||||||
$gpio |= (1<<$outfnd);
|
$gpio |= (1<<$outfnd);
|
||||||
}
|
}
|
||||||
$ret2 = OWFSSWITCH_SetState($hash,$gpio);
|
$ret2 = OWFSSWITCH_SetState($hash,$gpio);
|
||||||
|
$ret3 = OWFSSWITCH_GetState($hash);
|
||||||
#-- Unknown interface
|
#-- Unknown interface
|
||||||
}else{
|
}else{
|
||||||
return "OWSWITCH: Get with wrong IODev type $interface";
|
return "OWSWITCH: Set with wrong IODev type $interface";
|
||||||
}
|
}
|
||||||
#-- process results
|
#-- process results
|
||||||
$ret .= $ret1
|
$ret .= $ret1
|
||||||
@ -806,7 +814,7 @@ sub OWSWITCH_Set($@) {
|
|||||||
return "OWSWITCH: Could not set device $name, reason: ".$ret;
|
return "OWSWITCH: Could not set device $name, reason: ".$ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#-- set state
|
#-- set complete gpio output state: set-get needed because external shorting can be discovered only after set
|
||||||
}elsif( $key eq "gpio" ){
|
}elsif( $key eq "gpio" ){
|
||||||
#-- check value and write to device
|
#-- check value and write to device
|
||||||
return "OWSWITCH: Set with wrong value for gpio port, must be 0 <= gpio <= ".((1 << $cnumber{$attr{$name}{"model"}})-1)
|
return "OWSWITCH: Set with wrong value for gpio port, must be 0 <= gpio <= ".((1 << $cnumber{$attr{$name}{"model"}})-1)
|
||||||
@ -820,9 +828,10 @@ sub OWSWITCH_Set($@) {
|
|||||||
};
|
};
|
||||||
$ret = GP_Catch($@) if $@;
|
$ret = GP_Catch($@) if $@;
|
||||||
}elsif( $interface eq "OWServer" ){
|
}elsif( $interface eq "OWServer" ){
|
||||||
$ret = OWFSSWITCH_SetState($hash,int($value));
|
$ret2 = OWFSSWITCH_SetState($hash,int($value));
|
||||||
|
$ret3 = OWFSSWITCH_GetState($hash);
|
||||||
}else{
|
}else{
|
||||||
return "OWSWITCH: GetValues with wrong IODev type $interface";
|
return "OWSWITCH: Set with wrong IODev type $interface";
|
||||||
}
|
}
|
||||||
#-- process results
|
#-- process results
|
||||||
if($ret){
|
if($ret){
|
||||||
@ -830,8 +839,6 @@ sub OWSWITCH_Set($@) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#-- process results - we have to reread the device
|
|
||||||
#OWSWITCH_GetValues($hash);
|
|
||||||
Log 4, "OWSWITCH: Set $hash->{NAME} $key $value";
|
Log 4, "OWSWITCH: Set $hash->{NAME} $key $value";
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -1031,12 +1038,14 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
|
|
||||||
#-- note: value 1 corresponds to OFF, 0 to ON normally
|
#-- note: value 1 corresponds to OFF, 0 to ON normally
|
||||||
# val = input value, vax = output value
|
# val = input value, vax = output value
|
||||||
|
# setstate -> only set, getstate -> only get, mod -> get-set
|
||||||
#-- Outer if - check get or set
|
#-- Outer if - check get or set
|
||||||
if ( $context =~ /^(......)\.(get|mod)state\.?(\d)?\.?(\d)?/){
|
if ( $context =~ /^(......)\.(get|mod)state\.?(final|(\d))?\.?(\d)?/){
|
||||||
$cmd = $2;
|
$cmd = $2;
|
||||||
$chip = $1;
|
$chip = $1;
|
||||||
$outfnd = $3;
|
$outfnd = $3;
|
||||||
$outval = $4;
|
$outval = $5;
|
||||||
|
#-- initial get operation
|
||||||
#-- family = 12 => DS2406 -------------------------------------------------------
|
#-- family = 12 => DS2406 -------------------------------------------------------
|
||||||
if( $chip eq "ds2406" ) {
|
if( $chip eq "ds2406" ) {
|
||||||
@data=split(//,$res);
|
@data=split(//,$res);
|
||||||
@ -1053,9 +1062,6 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
$hash->{owg_vax}->[1] = ($value>>1) & 1;
|
$hash->{owg_vax}->[1] = ($value>>1) & 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
|
|
||||||
#-- family = 29 => DS2408 -------------------------------------------------------
|
#-- family = 29 => DS2408 -------------------------------------------------------
|
||||||
}elsif( $chip eq "ds2408" ) {
|
}elsif( $chip eq "ds2408" ) {
|
||||||
@data=split(//,$res);
|
@data=split(//,$res);
|
||||||
@ -1072,9 +1078,6 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
$hash->{owg_vax}->[$i] = (ord($data[1])>>$i) & 1;
|
$hash->{owg_vax}->[$i] = (ord($data[1])>>$i) & 1;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
|
|
||||||
#-- family = 3A => DS2413 -------------------------------------------------------
|
#-- family = 3A => DS2413 -------------------------------------------------------
|
||||||
}elsif( $chip eq "ds2413" ){
|
}elsif( $chip eq "ds2413" ){
|
||||||
@data=split(//,$res);
|
@data=split(//,$res);
|
||||||
@ -1089,13 +1092,21 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
$hash->{owg_val}->[1] = (ord($data[0])>>2) & 1;
|
$hash->{owg_val}->[1] = (ord($data[0])>>2) & 1;
|
||||||
$hash->{owg_vax}->[1] = (ord($data[0])>>3) & 1;
|
$hash->{owg_vax}->[1] = (ord($data[0])>>3) & 1;
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
|
|
||||||
#--
|
#--
|
||||||
}else{
|
}else{
|
||||||
die "OWSWITCH: $name has unknown device family $hash->{OW_FAMILY} in OWXSWITCH_BinValues getstate\n";
|
die "OWSWITCH: $name has unknown device family $hash->{OW_FAMILY} in OWXSWITCH_BinValues getstate\n";
|
||||||
};
|
};
|
||||||
|
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
||||||
|
if( $main::owx_debug>2 );
|
||||||
|
|
||||||
|
#-- Formatting only after final get
|
||||||
|
if( $outfnd eq "final"){
|
||||||
|
$hash->{PRESENT} = 1;
|
||||||
|
$value = OWSWITCH_FormatValues($hash);
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
#-- modstate -> get-set, here set operation
|
||||||
#-- now only if data has to be overwritten
|
#-- now only if data has to be overwritten
|
||||||
if( $cmd eq "mod" ){
|
if( $cmd eq "mod" ){
|
||||||
my $gpio = 0;
|
my $gpio = 0;
|
||||||
@ -1107,11 +1118,12 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
}else{
|
}else{
|
||||||
$gpio |= (1<<$outfnd);
|
$gpio |= (1<<$outfnd);
|
||||||
}
|
}
|
||||||
#Log 1,"DEBUGGING OWXNG : After reading old gpio as $old, with outval=$outval and outfnd=$outfnd we are setting a new gpio as $gpio";
|
Log 1,"DEBUGGING OWXNG : After reading old gpio with outval=$outval and outfnd=$outfnd we are setting a new gpio as $gpio";
|
||||||
#-- re-set the state
|
#-- re-set the state
|
||||||
OWXSWITCH_SetState($hash,$gpio);
|
OWXSWITCH_SetState($hash,$gpio);
|
||||||
}
|
}
|
||||||
#-- Now for context setstate
|
|
||||||
|
#-- Now for context setstate. Either being called after modstate, or directly from Set
|
||||||
}elsif ( $context =~ /^(......)\.setstate\.?(\d+)?\.?(\d+)?/){
|
}elsif ( $context =~ /^(......)\.setstate\.?(\d+)?\.?(\d+)?/){
|
||||||
$chip = $1;
|
$chip = $1;
|
||||||
$value = $2;
|
$value = $2;
|
||||||
@ -1124,18 +1136,11 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
$msg="Error - state could not be set for device $name, invalid CRC, ";
|
$msg="Error - state could not be set for device $name, invalid CRC, ";
|
||||||
}else{
|
}else{
|
||||||
$msg="No error, ";
|
$msg="No error, ";
|
||||||
$outval = $value % 2;
|
$hash->{owg_val}->[0] = ($value>>2) & 1;
|
||||||
$hash->{owg_vax}->[0] = $outval;
|
$hash->{owg_vax}->[0] = $value & 1;
|
||||||
$hash->{owg_val}->[0] = 0
|
$hash->{owg_val}->[1] = ($value>>3) & 1;
|
||||||
if( $outval ==0);
|
$hash->{owg_vax}->[1] = ($value>>1) & 1;
|
||||||
$outval = int($value / 2);
|
|
||||||
$hash->{owg_vax}->[1] = $outval;
|
|
||||||
$hash->{owg_val}->[1] = 0
|
|
||||||
if( $outval ==0);
|
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
|
|
||||||
#-- family = 29 => DS2408 -------------------------------------------------------
|
#-- family = 29 => DS2408 -------------------------------------------------------
|
||||||
}elsif( $chip eq "ds2408" ) {
|
}elsif( $chip eq "ds2408" ) {
|
||||||
if (length($res)!=1){
|
if (length($res)!=1){
|
||||||
@ -1151,9 +1156,6 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
if( $outval ==0);
|
if( $outval ==0);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
|
|
||||||
#-- family = 3A => DS2413 -------------------------------------------------------
|
#-- family = 3A => DS2413 -------------------------------------------------------
|
||||||
}elsif( $chip eq "ds2413" ){
|
}elsif( $chip eq "ds2413" ){
|
||||||
@data=split(//,$res);
|
@data=split(//,$res);
|
||||||
@ -1172,20 +1174,17 @@ sub OWXSWITCH_BinValues($$$$$$$) {
|
|||||||
$hash->{owg_val}->[1] = 0
|
$hash->{owg_val}->[1] = 0
|
||||||
if( $outval ==0);
|
if( $outval ==0);
|
||||||
}
|
}
|
||||||
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
|
||||||
if( $main::owx_debug>2 );
|
|
||||||
#--
|
#--
|
||||||
}else{
|
}else{
|
||||||
die "OWSWITCH: $name has unknown device family $hash->{OW_FAMILY} in OWXSWITCH_BinValues setstate\n";
|
die "OWSWITCH: $name has unknown device family $hash->{OW_FAMILY} in OWXSWITCH_BinValues setstate\n";
|
||||||
};
|
};
|
||||||
OWXSWITCH_GetModState($hash,undef,undef);
|
OWX_WDBG($name,"OWXSWITCH_BinValues: ".$msg,$res)
|
||||||
|
if( $main::owx_debug>2 );
|
||||||
|
#-- and finally after setstate follows another getstate
|
||||||
|
OWXSWITCH_GetModState($hash,"final",undef);
|
||||||
}else{
|
}else{
|
||||||
die "OWSWITCH: unknown context $context in OWXSWITCH_BinValues";
|
die "OWSWITCH: unknown context $context in OWXSWITCH_BinValues";
|
||||||
}
|
}
|
||||||
|
|
||||||
#-- and now from raw to formatted values
|
|
||||||
$hash->{PRESENT} = 1;
|
|
||||||
$value = OWSWITCH_FormatValues($hash);
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1222,6 +1221,10 @@ sub OWXSWITCH_GetModState($$$) {
|
|||||||
$context = "getstate";
|
$context = "getstate";
|
||||||
#-- take your time
|
#-- take your time
|
||||||
$proc = 0;
|
$proc = 0;
|
||||||
|
}elsif( $outfnd eq "final"){
|
||||||
|
$context = "getstate.final";
|
||||||
|
#-- faster !
|
||||||
|
$proc = 16;
|
||||||
}else{
|
}else{
|
||||||
$context = "modstate.$outfnd.$outval";
|
$context = "modstate.$outfnd.$outval";
|
||||||
#-- faster !
|
#-- faster !
|
||||||
@ -1312,7 +1315,7 @@ sub OWXSWITCH_GetModState($$$) {
|
|||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
#
|
#
|
||||||
# OWXSWITCH_SetState - Set gpio ports of device
|
# OWXSWITCH_SetState - Set and reread gpio ports of device, and rereads gpio ports
|
||||||
#
|
#
|
||||||
# Parameter hash = hash of device addressed
|
# Parameter hash = hash of device addressed
|
||||||
# value = integer value for device gpio output
|
# value = integer value for device gpio output
|
||||||
@ -1336,25 +1339,10 @@ sub OWXSWITCH_SetState($$) {
|
|||||||
#-- family = 12 => DS2406
|
#-- family = 12 => DS2406
|
||||||
if( $hash->{OW_FAMILY} eq "12" ) {
|
if( $hash->{OW_FAMILY} eq "12" ) {
|
||||||
#=============== set gpio values ===============================
|
#=============== set gpio values ===============================
|
||||||
# Writing the output state via the access channel command does
|
|
||||||
# not work contrary to documentation. Using the write status command
|
|
||||||
#-- issue the match ROM command \x55 and the read status command
|
|
||||||
# \xAA at address TA1 = \x07 TA2 = \x00
|
|
||||||
#-- reading 9 + 3 + 1 data bytes + 2 CRC bytes = 15 bytes
|
|
||||||
OWX_Reset($master);
|
|
||||||
$res = OWX_Complex($master,$owx_dev,"\xAA\x07\x00",3);
|
|
||||||
if( $res eq 0 ){
|
|
||||||
return "device $owx_dev not accessible in writing";
|
|
||||||
}
|
|
||||||
OWX_Reset($master);
|
|
||||||
|
|
||||||
my $stat = ord(substr($res,12,1));
|
|
||||||
my $statneu = ( $stat & 159 ) | (($value<<5) & 96) ;
|
|
||||||
#-- call the second step
|
|
||||||
#-- issue the match ROM command \x55 and the write status command
|
#-- issue the match ROM command \x55 and the write status command
|
||||||
# \x55 at address TA1 = \x07 TA2 = \x00
|
# \x55 at address TA1 = \x07 TA2 = \x00
|
||||||
#-- reading 9 + 4 + 2 data bytes = 15 bytes
|
#-- reading 9 + 4 + 2 data bytes = 15 bytes
|
||||||
$select=sprintf("\x55\x07\x00%c",$statneu);
|
$select=sprintf("\x55\x07\x00%c",(($value<<5) & 96));
|
||||||
#-- OLD OWX interface
|
#-- OLD OWX interface
|
||||||
if( !$master->{ASYNCHRONOUS} ){
|
if( !$master->{ASYNCHRONOUS} ){
|
||||||
OWX_Reset($master);
|
OWX_Reset($master);
|
||||||
@ -1368,7 +1356,8 @@ sub OWXSWITCH_SetState($$) {
|
|||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
# 16 pushes this to the top of the queue
|
# 16 pushes this to the top of the queue
|
||||||
OWX_Qomplex($master, $hash, "ds2406.setstate.$value", 16, $owx_dev, $select, $select, 2, 13, \&OWXSWITCH_BinValues, 0);
|
#OWX_Qomplex($master, $hash, "ds2406.setstate.$value", 0, $owx_dev, $select, 0, 2, 13, \&OWXSWITCH_BinValues, 0.01);
|
||||||
|
OWX_Qomplex($master, $hash, "ds2406.setstate.$value", 0, $owx_dev, $select, 0, 2, 2, \&OWXSWITCH_BinValues, 0.01);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
#-- family = 29 => DS2408
|
#-- family = 29 => DS2408
|
||||||
@ -1389,7 +1378,7 @@ sub OWXSWITCH_SetState($$) {
|
|||||||
#-- NEW OWX interface
|
#-- NEW OWX interface
|
||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
# 16 pushes this to the top of the queue
|
# 16 pushes this to the top of the queue
|
||||||
OWX_Qomplex($master, $hash, "ds2408.setstate.$value", 16, $owx_dev, $select, 0, 1, 12, \&OWXSWITCH_BinValues, 0);
|
OWX_Qomplex($master, $hash, "ds2408.setstate.$value", 16, $owx_dev, $select, 0, 1, 12, \&OWXSWITCH_BinValues, 0);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -1415,7 +1404,7 @@ sub OWXSWITCH_SetState($$) {
|
|||||||
OWX_Qomplex($master, $hash, "ds2413.setstate", 16, $owx_dev, $select, 0, 2, 12, \&OWXSWITCH_BinValues, 0);
|
OWX_Qomplex($master, $hash, "ds2413.setstate", 16, $owx_dev, $select, 0, 2, 12, \&OWXSWITCH_BinValues, 0);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
return "unknown device family $hash->{OW_FAMILY}\n";
|
return "unknown device family $hash->{OW_FAMILY}\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1661,6 +1650,8 @@ sub OWXSWITCH_PT_SetOutput($$$) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire adressable switches DS2413, DS206, DS2408
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWSWITCH"></a>
|
<a name="OWSWITCH"></a>
|
||||||
|
@ -86,7 +86,7 @@ no warnings 'deprecated';
|
|||||||
sub Log3($$$);
|
sub Log3($$$);
|
||||||
sub AttrVal($$$);
|
sub AttrVal($$$);
|
||||||
|
|
||||||
my $owx_version="6.0";
|
my $owx_version="6.1";
|
||||||
|
|
||||||
my %gets = (
|
my %gets = (
|
||||||
"id" => "",
|
"id" => "",
|
||||||
@ -1091,7 +1091,7 @@ sub OWXTHERM_GetValues($) {
|
|||||||
#-- NEW OWX interface
|
#-- NEW OWX interface
|
||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, undef, 0, $owx_dev, "\xBE", 0, 9, 10, \&OWXTHERM_BinValues, 0);
|
OWX_Qomplex($master, $hash, undef, 1, $owx_dev, "\xBE", 0, 9, 10, \&OWXTHERM_BinValues, 0.01);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1150,7 +1150,7 @@ sub OWXTHERM_SetValues($$) {
|
|||||||
#-- NEW OWX interface
|
#-- NEW OWX interface
|
||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, undef, 0, $owx_dev, $select, 0, 3, 10, undef, 0);
|
OWX_Qomplex($master, $hash, undef, 0, $owx_dev, $select, 0, 3, 10, undef, 0.05);
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
@ -1279,6 +1279,8 @@ sub OWXTHERM_PT_SetValues($$) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire temperature sensors DS1820, DS18S20, DS18B20, DS1822
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWTHERM"></a>
|
<a name="OWTHERM"></a>
|
||||||
|
@ -75,7 +75,7 @@ no warnings 'deprecated';
|
|||||||
sub Log3($$$);
|
sub Log3($$$);
|
||||||
sub AttrVal($$$);
|
sub AttrVal($$$);
|
||||||
|
|
||||||
my $owx_version="6.0";
|
my $owx_version="6.1";
|
||||||
my $owg_channel = "";
|
my $owg_channel = "";
|
||||||
|
|
||||||
my %gets = (
|
my %gets = (
|
||||||
@ -781,6 +781,7 @@ sub OWXVAR_BinValues($$$$$$$) {
|
|||||||
if( $main::owx_debug>2 );
|
if( $main::owx_debug>2 );
|
||||||
return undef;
|
return undef;
|
||||||
|
|
||||||
|
#--- obsolete code - we have put all operations into the SetValues part. Leave in for now
|
||||||
}elsif( $context eq "setstate" ) {
|
}elsif( $context eq "setstate" ) {
|
||||||
my $val = ord($res);
|
my $val = ord($res);
|
||||||
#$hash->{owg_val}=sprintf("%5.2f",(1-$val/255.0)*100);
|
#$hash->{owg_val}=sprintf("%5.2f",(1-$val/255.0)*100);
|
||||||
@ -796,8 +797,7 @@ sub OWXVAR_BinValues($$$$$$$) {
|
|||||||
if( $main::owx_debug>2 );
|
if( $main::owx_debug>2 );
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
# 2 suppresses the initial bus reset, 16 inserts at top of queue
|
# 2 suppresses the initial bus reset, 16 inserts at top of queue
|
||||||
OWX_Qomplex($master, $hash, "confirm", 18, $owx_dev, "\x96", 0, 0, 11, undef, 0);
|
#OWX_Qomplex($master, $hash, "confirm", 18, $owx_dev, "\x96", 0, 2, 11, undef, 0.01);
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -839,7 +839,7 @@ sub OWXVAR_GetValues($) {
|
|||||||
#-- NEW OWX interface
|
#-- NEW OWX interface
|
||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "getstate", 0, $owx_dev, "\xF0", 0, 2, 10, \&OWXVAR_BinValues, 0);
|
OWX_Qomplex($master, $hash, "getstate", 0, $owx_dev, "\xF0", 0, 2, 10, \&OWXVAR_BinValues, 0.01);
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -890,7 +890,8 @@ sub OWXVAR_SetValues($$$) {
|
|||||||
#-- NEW OWX interface
|
#-- NEW OWX interface
|
||||||
}else{
|
}else{
|
||||||
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
#### master slave context proc owx_dev data crcpart numread startread callback delay
|
||||||
OWX_Qomplex($master, $hash, "setstate", 0, $owx_dev, $select, $pos, 1, 11, \&OWXVAR_BinValues, 0);
|
OWX_Qomplex($master, $hash, "setstate", 0, $owx_dev, $select, 0, 1, 0, undef, 0);
|
||||||
|
OWX_Qomplex($master, $hash, "confirm", 3, $owx_dev, "\x96", 0, 1, 0, undef, 0);
|
||||||
$hash->{owg_val}=sprintf("%5.2f",(1-$pos/255.0)*100);
|
$hash->{owg_val}=sprintf("%5.2f",(1-$pos/255.0)*100);
|
||||||
}
|
}
|
||||||
return undef;
|
return undef;
|
||||||
@ -901,6 +902,8 @@ sub OWXVAR_SetValues($$$) {
|
|||||||
1;
|
1;
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary to control 1-Wire variable resistor DS2890
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="OWVAR"></a>
|
<a name="OWVAR"></a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user