mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-07 23:09:26 +00:00
Some fixes
git-svn-id: https://svn.fhem.de/fhem/trunk@1322 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
24837aac87
commit
c79682e4f9
@ -6,20 +6,21 @@
|
|||||||
# via an active DS2480/DS2490/DS9097U bus master interface or
|
# via an active DS2480/DS2490/DS9097U bus master interface or
|
||||||
# via a passive DS9097 interface
|
# via a passive DS9097 interface
|
||||||
#
|
#
|
||||||
# Version 1.04 - March, 2012
|
# Version 1.05 - March, 2012
|
||||||
#
|
#
|
||||||
# Prof. Dr. Peter A. Henning, 2012
|
# Prof. Dr. Peter A. Henning, 2012
|
||||||
#
|
#
|
||||||
# Setup interface as:
|
# Setup interface as:
|
||||||
|
#
|
||||||
# define <name> OWX <device>
|
# define <name> OWX <device>
|
||||||
#
|
#
|
||||||
# where <name> may be replaced by any name string
|
# where <name> may be replaced by any name string
|
||||||
# <device> is a serial (USB) device
|
# <device> is a serial (USB) device
|
||||||
#
|
#
|
||||||
# get alarms => find alarmed 1-Wire devices
|
# get <name> alarms => find alarmed 1-Wire devices
|
||||||
# get devices => find all 1-Wire devices
|
# get <name> devices => find all 1-Wire devices
|
||||||
#
|
#
|
||||||
# set interval => set period for temperature conversion and alarm testing
|
# set <name> interval => set period for temperature conversion and alarm testing
|
||||||
#
|
#
|
||||||
# attr <name> buspower real/parasitic - whether the 1-Wire bus is really powered or
|
# attr <name> buspower real/parasitic - whether the 1-Wire bus is really powered or
|
||||||
# the 1-Wire devices take their power from the data wire (parasitic is default !)
|
# the 1-Wire devices take their power from the data wire (parasitic is default !)
|
||||||
@ -496,7 +497,10 @@ sub OWX_Discover ($) {
|
|||||||
CommandDefine(undef,"$name OWTEMP DS1820 $owx_rnf");
|
CommandDefine(undef,"$name OWTEMP DS1820 $owx_rnf");
|
||||||
#-- Family 20 = A/D converter, assume DS2450 as default
|
#-- Family 20 = A/D converter, assume DS2450 as default
|
||||||
} elsif( $owx_f eq "20" ){
|
} elsif( $owx_f eq "20" ){
|
||||||
CommandDefine(undef,"$name OWAD DS2450 $owx_rnf");
|
CommandDefine(undef,"$name OWAD DS2450 $owx_rnf");
|
||||||
|
#-- Family 10 = Temperature sensor, assume DS1820 as default
|
||||||
|
}elsif( $owx_f eq "22" ){
|
||||||
|
CommandDefine(undef,"$name OWTEMP DS1822 $owx_rnf");
|
||||||
#-- All unknown families are ID only
|
#-- All unknown families are ID only
|
||||||
} else {
|
} else {
|
||||||
CommandDefine(undef,"$name OWID $owx_f $owx_rnf");
|
CommandDefine(undef,"$name OWID $owx_f $owx_rnf");
|
||||||
|
@ -14,9 +14,10 @@
|
|||||||
#
|
#
|
||||||
# Prof. Dr. Peter A. Henning, 2012
|
# Prof. Dr. Peter A. Henning, 2012
|
||||||
#
|
#
|
||||||
# Version 1.04 - March, 2012
|
# Version 1.05 - March, 2012
|
||||||
#
|
#
|
||||||
# Setup bus device in fhem.cfg as
|
# Setup bus device in fhem.cfg as
|
||||||
|
#
|
||||||
# define <name> OWAD [<model>] <ROM_ID> [interval]
|
# define <name> OWAD [<model>] <ROM_ID> [interval]
|
||||||
#
|
#
|
||||||
# where <name> may be replaced by any name string
|
# where <name> may be replaced by any name string
|
||||||
@ -27,6 +28,15 @@
|
|||||||
# without Family ID, e.g. A2D90D000800
|
# without Family ID, e.g. A2D90D000800
|
||||||
# [interval] is an optional query interval in seconds
|
# [interval] is an optional query interval in seconds
|
||||||
#
|
#
|
||||||
|
# get <name> id => FAM_ID.ROM_ID.CRC
|
||||||
|
# get <name> present => 1 if device present, 0 if not
|
||||||
|
# get <name> interval => query interval
|
||||||
|
# get <name> reading => measurement for all channels
|
||||||
|
# get <name> alarm => alarm measurement settings for all channels
|
||||||
|
# get <name> status => alarm and i/o status for all channels
|
||||||
|
#
|
||||||
|
# set <name> interval => set period for measurement
|
||||||
|
#
|
||||||
# Additional attributes are defined in fhem.cfg per channel, where <channel>=A,B,C,D
|
# Additional attributes are defined in fhem.cfg per channel, where <channel>=A,B,C,D
|
||||||
#
|
#
|
||||||
# attr <name> <channel>Name <string> = a name for the channel
|
# attr <name> <channel>Name <string> = a name for the channel
|
||||||
@ -152,7 +162,7 @@ sub OWAD_Define ($$) {
|
|||||||
# e.g.: define flow OWAD 525715020000 300
|
# e.g.: define flow OWAD 525715020000 300
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
|
||||||
my ($name,$model,$id,$interval,$scale,$ret);
|
my ($name,$model,$fam,$id,$crc,$interval,$scale,$ret);
|
||||||
|
|
||||||
#-- default
|
#-- default
|
||||||
$name = $a[0];
|
$name = $a[0];
|
||||||
@ -182,7 +192,7 @@ sub OWAD_Define ($$) {
|
|||||||
|
|
||||||
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
||||||
# YY must be determined from id
|
# YY must be determined from id
|
||||||
my $crc = sprintf("%02x",OWX_CRC("20.".$id."00"));
|
$crc = sprintf("%02x",OWX_CRC("20.".$id."00"));
|
||||||
|
|
||||||
#-- Define device internals
|
#-- Define device internals
|
||||||
$hash->{INTERVAL} = $interval;
|
$hash->{INTERVAL} = $interval;
|
||||||
@ -589,8 +599,8 @@ sub OWAD_Set($@) {
|
|||||||
#-- set new timer interval
|
#-- set new timer interval
|
||||||
if($key eq "interval") {
|
if($key eq "interval") {
|
||||||
# check value
|
# check value
|
||||||
return "OWAD: Set with short interval, must be > 10"
|
return "OWAD: Set with short interval, must be > 1"
|
||||||
if(int($value) < 10);
|
if(int($value) < 1);
|
||||||
# update timer
|
# update timer
|
||||||
$hash->{INTERVAL} = $value;
|
$hash->{INTERVAL} = $value;
|
||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
|
@ -12,9 +12,10 @@
|
|||||||
#
|
#
|
||||||
# Prof. Dr. Peter A. Henning, 2012
|
# Prof. Dr. Peter A. Henning, 2012
|
||||||
#
|
#
|
||||||
# Version 1.04 - March, 2012
|
# Version 1.05 - March, 2012
|
||||||
#
|
#
|
||||||
# Setup bus device in fhem.cfg as
|
# Setup bus device in fhem.cfg as
|
||||||
|
#
|
||||||
# define <name> OWID <FAM_ID> <ROM_ID>
|
# define <name> OWID <FAM_ID> <ROM_ID>
|
||||||
#
|
#
|
||||||
# where <name> may be replaced by any name string
|
# where <name> may be replaced by any name string
|
||||||
@ -24,7 +25,9 @@
|
|||||||
# <ROM_ID> is a 12 character (6 byte) 1-Wire ROM ID
|
# <ROM_ID> is a 12 character (6 byte) 1-Wire ROM ID
|
||||||
# without Family ID, e.g. A2D90D000800
|
# without Family ID, e.g. A2D90D000800
|
||||||
#
|
#
|
||||||
# Additional attributes are defined in fhem.cfg as
|
# get <name> id => FAM_ID.ROM_ID.CRC
|
||||||
|
# get <name> present => 1 if device present, 0 if not
|
||||||
|
#
|
||||||
#
|
#
|
||||||
########################################################################################
|
########################################################################################
|
||||||
#
|
#
|
||||||
@ -55,7 +58,7 @@ sub Log($$);
|
|||||||
#-- declare variables
|
#-- declare variables
|
||||||
my %gets = (
|
my %gets = (
|
||||||
"present" => "",
|
"present" => "",
|
||||||
"id" => ""
|
"id" => ""
|
||||||
);
|
);
|
||||||
my %sets = ();
|
my %sets = ();
|
||||||
my %updates = ();
|
my %updates = ();
|
||||||
@ -99,7 +102,7 @@ sub OWID_Define ($$) {
|
|||||||
#-- define <name> OWID <id>
|
#-- define <name> OWID <id>
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
|
||||||
my ($name,$fam,$id,$ret);
|
my ($name,$fam,$id,$crc,$ret);
|
||||||
|
|
||||||
#-- default
|
#-- default
|
||||||
$name = $a[0];
|
$name = $a[0];
|
||||||
@ -123,7 +126,7 @@ sub OWID_Define ($$) {
|
|||||||
|
|
||||||
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
||||||
# YY must be determined from id
|
# YY must be determined from id
|
||||||
my $crc = sprintf("%02x",OWX_CRC($fam.".".$id."00"));
|
$crc = sprintf("%02x",OWX_CRC($fam.".".$id."00"));
|
||||||
|
|
||||||
#-- Define device internals
|
#-- Define device internals
|
||||||
$hash->{ROM_ID} = $fam.".".$id.$crc;
|
$hash->{ROM_ID} = $fam.".".$id.$crc;
|
||||||
|
@ -16,19 +16,31 @@
|
|||||||
# Martin Fischer, 2011
|
# Martin Fischer, 2011
|
||||||
# Prof. Dr. Peter A. Henning, 2012
|
# Prof. Dr. Peter A. Henning, 2012
|
||||||
#
|
#
|
||||||
# Version 1.04 - March, 2012
|
# Version 1.05 - March, 2012
|
||||||
#
|
#
|
||||||
# Setup bus device in fhem.cfg as
|
# Setup bus device in fhem.cfg as
|
||||||
|
#
|
||||||
# define <name> OWTEMP [<model>] <ROM_ID> [interval]
|
# define <name> OWTEMP [<model>] <ROM_ID> [interval]
|
||||||
#
|
#
|
||||||
# where <name> may be replaced by any name string
|
# where <name> may be replaced by any name string
|
||||||
#
|
#
|
||||||
# <model> is a 1-Wire device type. If omitted, we assume this to be an
|
# <model> is a 1-Wire device type. If omitted, we assume this to be an
|
||||||
# DS1820 temperature sensor
|
# DS1820 temperature sensor
|
||||||
|
# Currently allowed values are DS1820, DS1822
|
||||||
# <ROM_ID> is a 12 character (6 byte) 1-Wire ROM ID
|
# <ROM_ID> is a 12 character (6 byte) 1-Wire ROM ID
|
||||||
# without Family ID, e.g. A2D90D000800
|
# without Family ID, e.g. A2D90D000800
|
||||||
# [interval] is an optional query interval in seconds
|
# [interval] is an optional query interval in seconds
|
||||||
#
|
#
|
||||||
|
# get <name> id => FAM_ID.ROM_ID.CRC
|
||||||
|
# get <name> present => 1 if device present, 0 if not
|
||||||
|
# get <name> interval => query interval
|
||||||
|
# get <name> temperature => temperature measurement
|
||||||
|
# get <name> alarm => alarm temperature settings
|
||||||
|
#
|
||||||
|
# set <name> interval => set period for measurement
|
||||||
|
# set <name> tempLow => lower alarm temperature setting
|
||||||
|
# set <name> tempHigh => higher alarm temperature setting
|
||||||
|
#
|
||||||
# Additional attributes are defined in fhem.cfg as
|
# Additional attributes are defined in fhem.cfg as
|
||||||
#
|
#
|
||||||
# attr <name> tempOffset <float> = a temperature offset added to the temperature reading
|
# attr <name> tempOffset <float> = a temperature offset added to the temperature reading
|
||||||
@ -130,7 +142,7 @@ sub OWTEMP_Define ($$) {
|
|||||||
# e.g.: define flow OWTEMP 525715020000 300
|
# e.g.: define flow OWTEMP 525715020000 300
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
|
||||||
my ($name,$model,$id,$interval,$ret);
|
my ($name,$model,$fam,$id,$crc,$interval,$ret);
|
||||||
my $tn = TimeNow();
|
my $tn = TimeNow();
|
||||||
|
|
||||||
#-- default
|
#-- default
|
||||||
@ -155,8 +167,6 @@ sub OWTEMP_Define ($$) {
|
|||||||
if(int(@a) == 5);
|
if(int(@a) == 5);
|
||||||
} elsif( $a3 =~ m/^[0-9|a-f]{12}$/ ) {
|
} elsif( $a3 =~ m/^[0-9|a-f]{12}$/ ) {
|
||||||
$model = $a[2];
|
$model = $a[2];
|
||||||
return "OWTEMP: Wrong 1-Wire device model $model"
|
|
||||||
if( $model ne "DS1820");
|
|
||||||
$id = $a[3];
|
$id = $a[3];
|
||||||
if(int(@a)>=5) { $interval = $a[4]; }
|
if(int(@a)>=5) { $interval = $a[4]; }
|
||||||
Log 1, "OWTEMP: Parameter [alarminterval] is obsolete now - must be set with I/O-Device"
|
Log 1, "OWTEMP: Parameter [alarminterval] is obsolete now - must be set with I/O-Device"
|
||||||
@ -166,15 +176,23 @@ sub OWTEMP_Define ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
||||||
|
# FF = family id follows from the model
|
||||||
# YY must be determined from id
|
# YY must be determined from id
|
||||||
my $crc = sprintf("%02x",OWX_CRC("10.".$id."00"));
|
if( $model eq "DS1820" ){
|
||||||
|
$fam = 20;
|
||||||
|
}elsif( $model eq "DS1822" ){
|
||||||
|
$fam = 22;
|
||||||
|
}else{
|
||||||
|
return "OWTEMP: Wrong 1-Wire device model $model";
|
||||||
|
}
|
||||||
|
$crc = sprintf("%02x",OWX_CRC($fam.".".$id."00"));
|
||||||
|
|
||||||
#-- define device internals
|
#-- define device internals
|
||||||
$hash->{ALARM} = 0;
|
$hash->{ALARM} = 0;
|
||||||
$hash->{INTERVAL} = $interval;
|
$hash->{INTERVAL} = $interval;
|
||||||
$hash->{ROM_ID} = "10.".$id.$crc;
|
$hash->{ROM_ID} = $fam.".".$id.$crc;
|
||||||
$hash->{OW_ID} = $id;
|
$hash->{OW_ID} = $id;
|
||||||
$hash->{OW_FAMILY} = 10;
|
$hash->{OW_FAMILY} = $fam;
|
||||||
$hash->{PRESENT} = 0;
|
$hash->{PRESENT} = 0;
|
||||||
|
|
||||||
#-- Couple to I/O device
|
#-- Couple to I/O device
|
||||||
@ -407,7 +425,6 @@ sub OWTEMP_Set($@) {
|
|||||||
my $ret = undef;
|
my $ret = undef;
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
my $model = $hash->{OW_MODEL};
|
my $model = $hash->{OW_MODEL};
|
||||||
my $path = "10.".$hash->{OW_ID};
|
|
||||||
|
|
||||||
#-- set warnings
|
#-- set warnings
|
||||||
if($key eq "tempLow" || $key eq "tempHigh") {
|
if($key eq "tempLow" || $key eq "tempHigh") {
|
||||||
@ -419,8 +436,8 @@ sub OWTEMP_Set($@) {
|
|||||||
#-- set new timer interval
|
#-- set new timer interval
|
||||||
if($key eq "interval") {
|
if($key eq "interval") {
|
||||||
# check value
|
# check value
|
||||||
return "OWTEMP: Set with short interval, must be > 10"
|
return "OWTEMP: Set with short interval, must be > 1"
|
||||||
if(int($value) < 10);
|
if(int($value) < 1);
|
||||||
# update timer
|
# update timer
|
||||||
$hash->{INTERVAL} = $value;
|
$hash->{INTERVAL} = $value;
|
||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
@ -516,12 +533,12 @@ sub OWFSTEMP_GetValues($)
|
|||||||
{
|
{
|
||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
my $ret = OW::get("/uncached/10.".$hash->{OW_ID}."/temperature");
|
my $ret = OW::get("/uncached/".$hash->{OW_ID}.".".$hash->{OW_ID}."/temperature");
|
||||||
if( defined($ret) ) {
|
if( defined($ret) ) {
|
||||||
$hash->{PRESENT} = 1;
|
$hash->{PRESENT} = 1;
|
||||||
$owg_temp = $ret;
|
$owg_temp = $ret;
|
||||||
$owg_th = OW::get("/uncached/10.".$hash->{OW_ID}."/temphigh");
|
$owg_th = OW::get("/uncached/".$hash->{OW_ID}.".".$hash->{OW_ID}."/temphigh");
|
||||||
$owg_tl = OW::get("/uncached/10.".$hash->{OW_ID}."/templow");
|
$owg_tl = OW::get("/uncached/".$hash->{OW_ID}.".".$hash->{OW_ID}."/templow");
|
||||||
} else {
|
} else {
|
||||||
$hash->{PRESENT} = 0;
|
$hash->{PRESENT} = 0;
|
||||||
$owg_temp = 0.0;
|
$owg_temp = 0.0;
|
||||||
@ -548,7 +565,7 @@ sub OWFSTEMP_SetValues($@) {
|
|||||||
my $key = $a[1];
|
my $key = $a[1];
|
||||||
my $value = $a[2];
|
my $value = $a[2];
|
||||||
|
|
||||||
return OW::put("10.".$hash->{OW_ID}."/$key",$value);
|
return OW::put($hash->{OW_ID}.".".$hash->{OW_ID}."/$key",$value);
|
||||||
}
|
}
|
||||||
|
|
||||||
########################################################################################
|
########################################################################################
|
||||||
|
Loading…
x
Reference in New Issue
Block a user