mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-07 16:59:18 +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 a passive DS9097 interface
|
||||
#
|
||||
# Version 1.04 - March, 2012
|
||||
# Version 1.05 - March, 2012
|
||||
#
|
||||
# Prof. Dr. Peter A. Henning, 2012
|
||||
#
|
||||
# Setup interface as:
|
||||
#
|
||||
# define <name> OWX <device>
|
||||
#
|
||||
# where <name> may be replaced by any name string
|
||||
# <device> is a serial (USB) device
|
||||
#
|
||||
# get alarms => find alarmed 1-Wire devices
|
||||
# get devices => find all 1-Wire devices
|
||||
# get <name> alarms => find alarmed 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
|
||||
# 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");
|
||||
#-- Family 20 = A/D converter, assume DS2450 as default
|
||||
} 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
|
||||
} else {
|
||||
CommandDefine(undef,"$name OWID $owx_f $owx_rnf");
|
||||
|
@ -14,9 +14,10 @@
|
||||
#
|
||||
# Prof. Dr. Peter A. Henning, 2012
|
||||
#
|
||||
# Version 1.04 - March, 2012
|
||||
# Version 1.05 - March, 2012
|
||||
#
|
||||
# Setup bus device in fhem.cfg as
|
||||
#
|
||||
# define <name> OWAD [<model>] <ROM_ID> [interval]
|
||||
#
|
||||
# where <name> may be replaced by any name string
|
||||
@ -27,6 +28,15 @@
|
||||
# without Family ID, e.g. A2D90D000800
|
||||
# [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
|
||||
#
|
||||
# attr <name> <channel>Name <string> = a name for the channel
|
||||
@ -152,7 +162,7 @@ sub OWAD_Define ($$) {
|
||||
# e.g.: define flow OWAD 525715020000 300
|
||||
my @a = split("[ \t][ \t]*", $def);
|
||||
|
||||
my ($name,$model,$id,$interval,$scale,$ret);
|
||||
my ($name,$model,$fam,$id,$crc,$interval,$scale,$ret);
|
||||
|
||||
#-- default
|
||||
$name = $a[0];
|
||||
@ -182,7 +192,7 @@ sub OWAD_Define ($$) {
|
||||
|
||||
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
||||
# 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
|
||||
$hash->{INTERVAL} = $interval;
|
||||
@ -589,8 +599,8 @@ sub OWAD_Set($@) {
|
||||
#-- set new timer interval
|
||||
if($key eq "interval") {
|
||||
# check value
|
||||
return "OWAD: Set with short interval, must be > 10"
|
||||
if(int($value) < 10);
|
||||
return "OWAD: Set with short interval, must be > 1"
|
||||
if(int($value) < 1);
|
||||
# update timer
|
||||
$hash->{INTERVAL} = $value;
|
||||
RemoveInternalTimer($hash);
|
||||
|
@ -12,9 +12,10 @@
|
||||
#
|
||||
# Prof. Dr. Peter A. Henning, 2012
|
||||
#
|
||||
# Version 1.04 - March, 2012
|
||||
# Version 1.05 - March, 2012
|
||||
#
|
||||
# Setup bus device in fhem.cfg as
|
||||
#
|
||||
# define <name> OWID <FAM_ID> <ROM_ID>
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
my %gets = (
|
||||
"present" => "",
|
||||
"id" => ""
|
||||
"id" => ""
|
||||
);
|
||||
my %sets = ();
|
||||
my %updates = ();
|
||||
@ -99,7 +102,7 @@ sub OWID_Define ($$) {
|
||||
#-- define <name> OWID <id>
|
||||
my @a = split("[ \t][ \t]*", $def);
|
||||
|
||||
my ($name,$fam,$id,$ret);
|
||||
my ($name,$fam,$id,$crc,$ret);
|
||||
|
||||
#-- default
|
||||
$name = $a[0];
|
||||
@ -123,7 +126,7 @@ sub OWID_Define ($$) {
|
||||
|
||||
#-- 1-Wire ROM identifier in the form "FF.XXXXXXXXXXXX.YY"
|
||||
# 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
|
||||
$hash->{ROM_ID} = $fam.".".$id.$crc;
|
||||
|
@ -16,19 +16,31 @@
|
||||
# Martin Fischer, 2011
|
||||
# Prof. Dr. Peter A. Henning, 2012
|
||||
#
|
||||
# Version 1.04 - March, 2012
|
||||
# Version 1.05 - March, 2012
|
||||
#
|
||||
# Setup bus device in fhem.cfg as
|
||||
#
|
||||
# define <name> OWTEMP [<model>] <ROM_ID> [interval]
|
||||
#
|
||||
# where <name> may be replaced by any name string
|
||||
#
|
||||
# <model> is a 1-Wire device type. If omitted, we assume this to be an
|
||||
# DS1820 temperature sensor
|
||||
# Currently allowed values are DS1820, DS1822
|
||||
# <ROM_ID> is a 12 character (6 byte) 1-Wire ROM ID
|
||||
# without Family ID, e.g. A2D90D000800
|
||||
# [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
|
||||
#
|
||||
# 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
|
||||
my @a = split("[ \t][ \t]*", $def);
|
||||
|
||||
my ($name,$model,$id,$interval,$ret);
|
||||
my ($name,$model,$fam,$id,$crc,$interval,$ret);
|
||||
my $tn = TimeNow();
|
||||
|
||||
#-- default
|
||||
@ -155,8 +167,6 @@ sub OWTEMP_Define ($$) {
|
||||
if(int(@a) == 5);
|
||||
} elsif( $a3 =~ m/^[0-9|a-f]{12}$/ ) {
|
||||
$model = $a[2];
|
||||
return "OWTEMP: Wrong 1-Wire device model $model"
|
||||
if( $model ne "DS1820");
|
||||
$id = $a[3];
|
||||
if(int(@a)>=5) { $interval = $a[4]; }
|
||||
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"
|
||||
# FF = family id follows from the model
|
||||
# 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
|
||||
$hash->{ALARM} = 0;
|
||||
$hash->{INTERVAL} = $interval;
|
||||
$hash->{ROM_ID} = "10.".$id.$crc;
|
||||
$hash->{ROM_ID} = $fam.".".$id.$crc;
|
||||
$hash->{OW_ID} = $id;
|
||||
$hash->{OW_FAMILY} = 10;
|
||||
$hash->{OW_FAMILY} = $fam;
|
||||
$hash->{PRESENT} = 0;
|
||||
|
||||
#-- Couple to I/O device
|
||||
@ -407,7 +425,6 @@ sub OWTEMP_Set($@) {
|
||||
my $ret = undef;
|
||||
my $name = $hash->{NAME};
|
||||
my $model = $hash->{OW_MODEL};
|
||||
my $path = "10.".$hash->{OW_ID};
|
||||
|
||||
#-- set warnings
|
||||
if($key eq "tempLow" || $key eq "tempHigh") {
|
||||
@ -419,8 +436,8 @@ sub OWTEMP_Set($@) {
|
||||
#-- set new timer interval
|
||||
if($key eq "interval") {
|
||||
# check value
|
||||
return "OWTEMP: Set with short interval, must be > 10"
|
||||
if(int($value) < 10);
|
||||
return "OWTEMP: Set with short interval, must be > 1"
|
||||
if(int($value) < 1);
|
||||
# update timer
|
||||
$hash->{INTERVAL} = $value;
|
||||
RemoveInternalTimer($hash);
|
||||
@ -516,12 +533,12 @@ sub OWFSTEMP_GetValues($)
|
||||
{
|
||||
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) ) {
|
||||
$hash->{PRESENT} = 1;
|
||||
$owg_temp = $ret;
|
||||
$owg_th = OW::get("/uncached/10.".$hash->{OW_ID}."/temphigh");
|
||||
$owg_tl = OW::get("/uncached/10.".$hash->{OW_ID}."/templow");
|
||||
$owg_th = OW::get("/uncached/".$hash->{OW_ID}.".".$hash->{OW_ID}."/temphigh");
|
||||
$owg_tl = OW::get("/uncached/".$hash->{OW_ID}.".".$hash->{OW_ID}."/templow");
|
||||
} else {
|
||||
$hash->{PRESENT} = 0;
|
||||
$owg_temp = 0.0;
|
||||
@ -548,7 +565,7 @@ sub OWFSTEMP_SetValues($@) {
|
||||
my $key = $a[1];
|
||||
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