From cd092bafb1edaf7d45f3680129890baf5d3f7097 Mon Sep 17 00:00:00 2001
From: rudolfkoenig <>
Date: Sun, 4 Nov 2012 13:29:55 +0000
Subject: [PATCH] Preparing THE SPLIT
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@2075 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
CHANGED | 1 +
FHEM/10_ZWave.pm | 10 -
FHEM/70_SML.pm | 2 +
FHEM/70_STV.pm | 1 +
FHEM/76_MSGFile.pm | 308 +++---
FHEM/76_MSGMail.pm | 292 +++---
contrib/commandref_join.pl | 74 ++
contrib/commandref_split.pl | 63 ++
docs/commandref.html | 1844 +++++++++++++++++------------------
docs/fhem.html | 2 +-
10 files changed, 1327 insertions(+), 1270 deletions(-)
create mode 100644 contrib/commandref_join.pl
create mode 100644 contrib/commandref_split.pl
diff --git a/CHANGED b/CHANGED
index 2390f0b70..c6e4693d9 100644
--- a/CHANGED
+++ b/CHANGED
@@ -7,6 +7,7 @@
- feature: optional second parameter to fhem() to make it silent
- feature: autoloading commands, XmlList/etc renamed from 99 to 98.
- feature: FHEMWEB returns external files in chunks to save memory
+ - feature: commandref.html splitted: documentation is now appended to the modules.
- 2012-10-28 (5.3)
- feature: added functions trim, ltrim, rtrim, UntoggleDirect, UntoggleIndirect
diff --git a/FHEM/10_ZWave.pm b/FHEM/10_ZWave.pm
index 6a035e704..46bacc51c 100755
--- a/FHEM/10_ZWave.pm
+++ b/FHEM/10_ZWave.pm
@@ -475,13 +475,3 @@ ZWave_Undef($$)
}
1;
-
-=begin html
-
-
-
CUL
-
-
-=end html
diff --git a/FHEM/70_SML.pm b/FHEM/70_SML.pm
index d890919ee..a0161c7e7 100644
--- a/FHEM/70_SML.pm
+++ b/FHEM/70_SML.pm
@@ -333,3 +333,5 @@ energy_Undef($$)
return undef;
}
+
+1;
diff --git a/FHEM/70_STV.pm b/FHEM/70_STV.pm
index 8d6c267b8..ea86fac1e 100644
--- a/FHEM/70_STV.pm
+++ b/FHEM/70_STV.pm
@@ -345,3 +345,4 @@ if ( $kind ne 0 ){
}
}
+1;
diff --git a/FHEM/76_MSGFile.pm b/FHEM/76_MSGFile.pm
index 22d02dfdc..1b3037e1c 100644
--- a/FHEM/76_MSGFile.pm
+++ b/FHEM/76_MSGFile.pm
@@ -1,154 +1,154 @@
-##############################################
-# $Id: 76_MSGFile.pm 2012-06-20 18:29:00 rbente
-##############################################
-package main;
-
-use strict;
-use warnings;
-use Switch;
-my %sets = (
- "add" => "MSGFile",
- "clear" => "MSGFile",
- "list" => "MSGFile"
-);
-##############################################
-# Initialize Function
-# Attributes are:
-# filename the name of the file
-# filemode new = file will be created from scratch
-# append = add the new lines to the end of the existing data
-# CR 0 = no CR added to the end of the line
-# 1 = CR added to the end of the line
-##############################################
-sub
-MSGFile_Initialize($)
-{
- my ($hash) = @_;
-
- $hash->{SetFn} = "MSGFile_Set";
- $hash->{DefFn} = "MSGFile_Define";
- $hash->{UndefFn} = "MSGFile_Undef";
- $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 filename filemode:new,append CR:0,1";
-}
-
-##############################################
-# Set Function
-# all the data are stored in the global array @data
-# as counter we use a READING named msgcount
-##############################################
-sub
-MSGFile_Set($@)
-{
- my ($hash, @a) = @_;
- return "Unknown argument $a[1], choose one of -> " . join(" ", sort keys %sets)
- if(!defined($sets{$a[1]}));
-
-
- my $name = shift @a;
-
- return "no set value specified" if(int(@a) < 1);
- return "Unknown argument ?" if($a[0] eq "?");
- my $v = join(" ", @a);
-
-##### we like to add another line of data
- if($a[0] eq "add")
- {
-##### split the line in command and data
- my $mx = shift @a;
- my $my = join(" ",@a);
-##### check if we like to have and CR at the end of the line
- if(AttrVal($name, "CR", "0") eq "1")
- {
- $my = $my . "\n";
- }
-##### get the highest number of lines, store the line in @data and increase
-##### the counter, at the end set the status
- my $count = $hash->{READINGS}{msgcount}{VAL};
- $data{$name}{$count} = $my;
- $hash->{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = $count + 1;
- $hash->{STATE} = "addmsg";
-
- }
-
-##### we like to clear our buffer, first clear all lines of @data
-##### and then set the counter to 0 and the status to clear
- if($a[0] eq "clear")
- {
- my $i;
- for($i=0;$i{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = 0;
- $hash->{STATE} = "clear";
-
- }
-
-##### we like to see the buffer
-
- if($a[0] eq "list")
- {
- my $i;
- my $mess = "---- Lines of data for $name ----\n";
- for($i=0;$i{CHANGED}[0] = $v;
- $hash->{READINGS}{state}{TIME} = TimeNow();
- $hash->{READINGS}{state}{VAL} = $v;
- return undef;
-}
-
-##############################################
-# Define Function
-# set the counter to 0
-# and filemode to "new"
-##############################################
-sub
-MSGFile_Define($$)
-{
- my ($hash, $def) = @_;
- my @a = split("[ \t][ \t]*", $def);
- my $errmsg = "wrong syntax: define MSGFile filename";
- my $name = $hash->{NAME};
-
- return $errmsg if(@a != 3);
- $attr{$name}{filename} = $a[2];
- $attr{$name}{filemode} = "new";
- $attr{$name}{CR} = "1";
-
-
- $hash->{STATE} = "ready";
- $hash->{TYPE} = "MSGFile";
- $hash->{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = 0;
- return undef;
-}
-##############################################
-# Undefine Function
-# flush all lines of data
-##############################################
-sub
-MSGFile_Undef($$)
-{
- my ($hash, $name) = @_;
- my $i;
-############ flush the data
- for($i=0;$i{CODE}}) if($hash && $hash->{CODE});
- return undef;
-}
-1;
+##############################################
+# $Id: 76_MSGFile.pm 2012-06-20 18:29:00 rbente
+##############################################
+package main;
+
+use strict;
+use warnings;
+use Switch;
+my %sets = (
+ "add" => "MSGFile",
+ "clear" => "MSGFile",
+ "list" => "MSGFile"
+);
+##############################################
+# Initialize Function
+# Attributes are:
+# filename the name of the file
+# filemode new = file will be created from scratch
+# append = add the new lines to the end of the existing data
+# CR 0 = no CR added to the end of the line
+# 1 = CR added to the end of the line
+##############################################
+sub
+MSGFile_Initialize($)
+{
+ my ($hash) = @_;
+
+ $hash->{SetFn} = "MSGFile_Set";
+ $hash->{DefFn} = "MSGFile_Define";
+ $hash->{UndefFn} = "MSGFile_Undef";
+ $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 filename filemode:new,append CR:0,1";
+}
+
+##############################################
+# Set Function
+# all the data are stored in the global array @data
+# as counter we use a READING named msgcount
+##############################################
+sub
+MSGFile_Set($@)
+{
+ my ($hash, @a) = @_;
+ return "Unknown argument $a[1], choose one of -> " . join(" ", sort keys %sets)
+ if(!defined($sets{$a[1]}));
+
+
+ my $name = shift @a;
+
+ return "no set value specified" if(int(@a) < 1);
+ return "Unknown argument ?" if($a[0] eq "?");
+ my $v = join(" ", @a);
+
+##### we like to add another line of data
+ if($a[0] eq "add")
+ {
+##### split the line in command and data
+ my $mx = shift @a;
+ my $my = join(" ",@a);
+##### check if we like to have and CR at the end of the line
+ if(AttrVal($name, "CR", "0") eq "1")
+ {
+ $my = $my . "\n";
+ }
+##### get the highest number of lines, store the line in @data and increase
+##### the counter, at the end set the status
+ my $count = $hash->{READINGS}{msgcount}{VAL};
+ $data{$name}{$count} = $my;
+ $hash->{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = $count + 1;
+ $hash->{STATE} = "addmsg";
+
+ }
+
+##### we like to clear our buffer, first clear all lines of @data
+##### and then set the counter to 0 and the status to clear
+ if($a[0] eq "clear")
+ {
+ my $i;
+ for($i=0;$i{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = 0;
+ $hash->{STATE} = "clear";
+
+ }
+
+##### we like to see the buffer
+
+ if($a[0] eq "list")
+ {
+ my $i;
+ my $mess = "---- Lines of data for $name ----\n";
+ for($i=0;$i{CHANGED}[0] = $v;
+ $hash->{READINGS}{state}{TIME} = TimeNow();
+ $hash->{READINGS}{state}{VAL} = $v;
+ return undef;
+}
+
+##############################################
+# Define Function
+# set the counter to 0
+# and filemode to "new"
+##############################################
+sub
+MSGFile_Define($$)
+{
+ my ($hash, $def) = @_;
+ my @a = split("[ \t][ \t]*", $def);
+ my $errmsg = "wrong syntax: define MSGFile filename";
+ my $name = $hash->{NAME};
+
+ return $errmsg if(@a != 3);
+ $attr{$name}{filename} = $a[2];
+ $attr{$name}{filemode} = "new";
+ $attr{$name}{CR} = "1";
+
+
+ $hash->{STATE} = "ready";
+ $hash->{TYPE} = "MSGFile";
+ $hash->{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = 0;
+ return undef;
+}
+##############################################
+# Undefine Function
+# flush all lines of data
+##############################################
+sub
+MSGFile_Undef($$)
+{
+ my ($hash, $name) = @_;
+ my $i;
+############ flush the data
+ for($i=0;$i{CODE}}) if($hash && $hash->{CODE});
+ return undef;
+}
+1;
diff --git a/FHEM/76_MSGMail.pm b/FHEM/76_MSGMail.pm
index 6b7af5c3e..32c9d2c20 100644
--- a/FHEM/76_MSGMail.pm
+++ b/FHEM/76_MSGMail.pm
@@ -1,158 +1,158 @@
-##############################################
-# $Id: 76_MSGFile.pm 2012-06-20 18:29:00 rbente
-##############################################
-package main;
+##############################################
+# $Id: 76_MSGFile.pm 2012-06-20 18:29:00 rbente
+##############################################
+package main;
-use strict;
-use warnings;
-use Switch;
-my %sets = (
- "add" => "MSGMail",
- "clear" => "MSGMail",
- "list" => "MSGMail"
-);
-##############################################
-# Initialize Function
-# Attributes are:
-# authfile the name of the file which contains userid and password
-# smtphost the smtp server hostname
-# smtpport the port of the smtp host
-# subject subject of the email
-# from from mailaddress (sender)
-# to to mailaddress (receipent)
-# cc carbon copy address(es) (delimiter is comma)
-# CR 0 = no CR added to the end of the line
-# 1 = CR added to the end of the line
-##############################################
-sub
-MSGMail_Initialize($)
-{
- my ($hash) = @_;
+use strict;
+use warnings;
+use Switch;
+my %sets = (
+ "add" => "MSGMail",
+ "clear" => "MSGMail",
+ "list" => "MSGMail"
+);
+##############################################
+# Initialize Function
+# Attributes are:
+# authfile the name of the file which contains userid and password
+# smtphost the smtp server hostname
+# smtpport the port of the smtp host
+# subject subject of the email
+# from from mailaddress (sender)
+# to to mailaddress (receipent)
+# cc carbon copy address(es) (delimiter is comma)
+# CR 0 = no CR added to the end of the line
+# 1 = CR added to the end of the line
+##############################################
+sub
+MSGMail_Initialize($)
+{
+ my ($hash) = @_;
- $hash->{SetFn} = "MSGMail_Set";
- $hash->{DefFn} = "MSGMail_Define";
- $hash->{UndefFn} = "MSGMail_Undef";
- $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 authfile smtphost smtpport subject from to cc CR:0,1";
-}
+ $hash->{SetFn} = "MSGMail_Set";
+ $hash->{DefFn} = "MSGMail_Define";
+ $hash->{UndefFn} = "MSGMail_Undef";
+ $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 authfile smtphost smtpport subject from to cc CR:0,1";
+}
-##############################################
-# Set Function
-# all the data are stored in the global array @data
-# as counter we use a READING named msgcount
-##############################################
-sub
-MSGMail_Set($@)
-{
- my ($hash, @a) = @_;
- return "Unknown argument $a[1], choose one of -> " . join(" ", sort keys %sets)
- if(!defined($sets{$a[1]}));
- my $name = shift @a;
+##############################################
+# Set Function
+# all the data are stored in the global array @data
+# as counter we use a READING named msgcount
+##############################################
+sub
+MSGMail_Set($@)
+{
+ my ($hash, @a) = @_;
+ return "Unknown argument $a[1], choose one of -> " . join(" ", sort keys %sets)
+ if(!defined($sets{$a[1]}));
+ my $name = shift @a;
- return "no set value specified" if(int(@a) < 1);
-# return "Unknown argument ?" if($a[0] eq "?");
- my $v = join(" ", @a);
-##### we like to add another line of data
- if($a[0] eq "add")
- {
-##### split the line in command and data
- my $mx = shift @a;
- my $my = join(" ",@a);
-##### check if we like to have and CR at the end of the line
- if(AttrVal($name, "CR", "0") eq "1")
- {
- $my = $my . "\n";
- }
-##### get the highest number of lines, stored the line in @data and increase
-##### the counter, at the end set the status
- my $count = $hash->{READINGS}{msgcount}{VAL};
- $data{$name}{$count} = $my;
- $hash->{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = $count + 1;
- $hash->{STATE} = "addmsg";
+ return "no set value specified" if(int(@a) < 1);
+# return "Unknown argument ?" if($a[0] eq "?");
+ my $v = join(" ", @a);
+##### we like to add another line of data
+ if($a[0] eq "add")
+ {
+##### split the line in command and data
+ my $mx = shift @a;
+ my $my = join(" ",@a);
+##### check if we like to have and CR at the end of the line
+ if(AttrVal($name, "CR", "0") eq "1")
+ {
+ $my = $my . "\n";
+ }
+##### get the highest number of lines, stored the line in @data and increase
+##### the counter, at the end set the status
+ my $count = $hash->{READINGS}{msgcount}{VAL};
+ $data{$name}{$count} = $my;
+ $hash->{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = $count + 1;
+ $hash->{STATE} = "addmsg";
- }
-##### we like to clear our buffer, first clear all lines of @data
-##### and then set the counter to 0 and the status to clear
-
- if($a[0] eq "clear")
- {
- my $i;
- for($i=0;$i{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = 0;
- $hash->{STATE} = "clear";
+ }
+##### we like to clear our buffer, first clear all lines of @data
+##### and then set the counter to 0 and the status to clear
+
+ if($a[0] eq "clear")
+ {
+ my $i;
+ for($i=0;$i{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = 0;
+ $hash->{STATE} = "clear";
- }
-
-##### we like to see the buffer
-
- if($a[0] eq "list")
- {
- my $i;
- my $mess = "---- Lines of data for $name ----\n";
- for($i=0;$i{CHANGED}[0] = $v;
- $hash->{READINGS}{state}{TIME} = TimeNow();
- $hash->{READINGS}{state}{VAL} = $v;
- return undef;
-}
+ if($a[0] eq "list")
+ {
+ my $i;
+ my $mess = "---- Lines of data for $name ----\n";
+ for($i=0;$i MSGMail from to smtphost authfile";
- my $name = $hash->{NAME};
+ # set stats
+ # $hash->{CHANGED}[0] = $v;
+ $hash->{READINGS}{state}{TIME} = TimeNow();
+ $hash->{READINGS}{state}{VAL} = $v;
+ return undef;
+}
- return $errmsg if(@a != 6);
-##### set all the Attributes
- $attr{$name}{from} = $a[2];
- $attr{$name}{to} = $a[3];
- $attr{$name}{smtphost} = $a[4];
- $attr{$name}{authfile} = $a[5];
- $attr{$name}{subject} = "FHEM ";
- $attr{$name}{CR} = "1";
-
+##############################################
+# Define Function
+# set the counter to 0
+##############################################
+sub
+MSGMail_Define($$)
+{
+ my ($hash, $def) = @_;
+ my @a = split("[ \t][ \t]*", $def);
+ my $errmsg = "wrong syntax: define MSGMail from to smtphost authfile";
+ my $name = $hash->{NAME};
- $hash->{STATE} = "ready";
- $hash->{TYPE} = "MSGMail";
- $hash->{READINGS}{msgcount}{TIME} = TimeNow();
- $hash->{READINGS}{msgcount}{VAL} = 0;
- return undef;
-}
-##############################################
-# Undefine Function
-# flush all lines of data
-##############################################
-sub
-MSGMail_Undef($$)
-{
- my ($hash, $name) = @_;
- my $i;
-############ flush the data
- for($i=0;$i{CODE}}) if($hash && $hash->{CODE});
- return undef;
-}
-1;
+ $hash->{STATE} = "ready";
+ $hash->{TYPE} = "MSGMail";
+ $hash->{READINGS}{msgcount}{TIME} = TimeNow();
+ $hash->{READINGS}{msgcount}{VAL} = 0;
+ return undef;
+}
+##############################################
+# Undefine Function
+# flush all lines of data
+##############################################
+sub
+MSGMail_Undef($$)
+{
+ my ($hash, $name) = @_;
+ my $i;
+############ flush the data
+ for($i=0;$i{CODE}}) if($hash && $hash->{CODE});
+ return undef;
+}
+
+1;
diff --git a/contrib/commandref_join.pl b/contrib/commandref_join.pl
new file mode 100644
index 000000000..952be6ee3
--- /dev/null
+++ b/contrib/commandref_join.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $docIn = "docs/commandref_frame.html";
+my $docOut = "docs/commandref.html";
+my @modDir = ("FHEM");
+
+open(IN, "$docIn") || die "Cant open $docIn: $!\n";
+open(OUT, ">$docOut") || die "Cant open $docOut: $!\n";
+
+my %mods;
+foreach my $modDir (@modDir) {
+ opendir(DH, $modDir) || die "Cant open $modDir: $!\n";
+ while(my $l = readdir DH) {
+ next if($l !~ m/^\d\d_.*\.pm$/);
+ my $of = $l;
+ $l =~ s/.pm$//;
+ $l =~ s/^[0-9][0-9]_//;
+ $mods{$l} = "$modDir/$of";
+ }
+}
+
+# First run: check what is a command and what is a helper module
+my $status;
+my %noindex;
+while(my $l = ) {
+ last if($l =~ m/Introduction/);
+ $noindex{$1} = 1 if($l =~ m/href="#(.*)"/);
+}
+seek(IN,0,0);
+
+# Second run: create the file
+# Header
+while(my $l = ) {
+ print OUT $l;
+ last if($l =~ m/#global/);
+}
+
+# index for devices.
+foreach my $mod (sort keys %mods) {
+ next if($noindex{$mod});
+ print OUT " $mod \n";
+}
+
+# Copy the middle part
+while(my $l = ) {
+ last if($l =~ m/name="perl"/);
+ print OUT $l;
+}
+
+# Copy the doc part from the module
+foreach my $mod (sort keys %mods) {
+ open(MOD, $mods{$mod}) || die("Cant open $mods{$mod}:$!\n");
+ my $skip = 1;
+ while(my $l = ) {
+ if($l =~ m/^=begin html/) {
+ $skip = 0;
+ } elsif($l =~ m/^=end html/) {
+ $skip = 1;
+ } elsif(!$skip) {
+ print OUT $l;
+ }
+ }
+ close(MOD);
+}
+
+# Copy the tail
+print OUT '',"\n";
+while(my $l = ) {
+ print OUT $l;
+}
+close(OUT);
diff --git a/contrib/commandref_split.pl b/contrib/commandref_split.pl
new file mode 100644
index 000000000..4cf3d0396
--- /dev/null
+++ b/contrib/commandref_split.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $docIn = "docs/commandref.html";
+my $docOut = "docs/commandref_frame.html";
+my @modDir = ("FHEM", "contrib", "webfrontend/pgm5");
+
+open(IN, "$docIn") || die "Cant open $docIn: $!\n";
+open(OUT, ">$docOut") || die "Cant open $docOut: $!\n";
+
+my %mods;
+foreach my $modDir (@modDir) {
+ opendir(DH, $modDir) || die "Cant open $modDir: $!\n";
+ while(my $l = readdir DH) {
+ next if($l !~ m/^\d\d_.*\.pm$/);
+ my $of = $l;
+ $l =~ s/.pm$//;
+ $l =~ s/^[0-9][0-9]_//;
+ $mods{lc($l)} = "$modDir/$of" if(!$mods{lc($l)});
+ }
+}
+
+my %fnd;
+my $modFileName;
+while(my $l = ) {
+ $l =~ s/[\r\n]//g;
+ if($l =~ m,^$,) {
+ if($modFileName) {
+ print MODOUT "=end html\n=cut\n";
+ close(MODOUT);
+ rename "$modFileName.NEW", $modFileName;
+ }
+ my $mod = lc($1);
+ if($mods{$mod}) {
+ print "Double-Fnd: $mod\n" if($fnd{$mod});
+ $fnd{$mod} = 1;
+ $modFileName = $mods{$mod};
+ open(MODIN, "$modFileName") || die("Cant open $modFileName: $!\n");
+ open(MODOUT, ">$modFileName.NEW") || die("Cant open $modFileName.NEW: $!\n");
+ my $seen1;
+ while(my $l = ) {
+ $seen1 = 1 if($l =~ m/^1;[\r\n]*/);
+ last if($l =~ m/=pod/ && $seen1);
+ print MODOUT $l;
+ }
+ print MODOUT "\n\=pod\n=begin html\n\n";
+ } else {
+ print "Not a module: $mod\n";
+ $modFileName = "";
+ }
+ }
+ if($modFileName){
+ print MODOUT "$l\n";
+ } else {
+ print OUT "$l\n";
+ }
+}
+
+foreach my $mod (sort {$mods{$a} cmp $mods{$b}} keys %mods) {
+ print "Missing doc for $mods{$mod}\n" if(!$fnd{$mod});
+}
diff --git a/docs/commandref.html b/docs/commandref.html
index d17984d04..253276f1b 100644
--- a/docs/commandref.html
+++ b/docs/commandref.html
@@ -56,7 +56,6 @@
sleep
trigger
update
- updatefhem
usb
xmllist
@@ -813,10 +812,6 @@ A line ending with \ will be concatenated with the next one, so long lines
version after the update has finished.
- Notice: The former used command "updatefhem" will be replaced by the new
- command "update" in the 5.3 distribution.
-
-
The new update function will process more advanced distribution information
as well as control commands for updating, removing or renaming existing files.
New file structures can also be set up by the new control command files.
@@ -844,77 +839,6 @@ A line ending with \ will be concatenated with the next one, so long lines
-
-updatefhem
-
- updatefhem [<changed>|<filename>|<housekeeping> [<clean>] [<yes>]|<preserve> [<filename>]]
-
- This command is deprecated as of Fhem 5.3
-
-
- Update the fhem modules and documentation from a nightly SVN checkout. For
- this purpose Fhem contacts http://fhem.de/fhemupdate, compares the stored
- timestamps of the local files with the filelist on the server, and
- downloads the files changed on the server. For all downloaded modules a
- reload will be scheduled if the corresponding module is loaded.
-
-
- Note: Since Version 5.3 a new directory structure is used by Fhem. The
- WebInterface pgm2 is separated from modpath/FHEM
- directory. The directory modpath/www/pgm2 is the new home of pgm2 and
- of its files. It is recommended to update to the new structure via the
- <housekeeping> arguments.
-
-
- The complete installation of Fhem will be saved via the backup
- command on every update. You can skip this backups by setting
- the global attribute backup_before_update to 0.
-
-
- Have you change or replace original files of the Fhem Distribution,
- these files will normally be overwritten during an update. To protect
- your locally modified or replaced files during an update, you can exclude
- these files with the global attribute exclude_from_update.
-
-
- If <changed> is specified, updatefhem returns a list of new or
- modified files since the last update. Furthermore it returns the last
- changes from the CHANGED file (if the file exists on the update server).
-
-
- If an explicit <filename> is given, then only this file will be
- downloaded.
-
-
- If <housekeeping> is specified, then updatefhem switch your Fhem
- installation to the new directory structure for the pgm2 WebInterface.
- The old files are archived like the <backup> argument and the new
- files are stored to modpath/www/pgm2. None of the existing files of pgm2
- in modpath/FHEM will be deleted, but are no longer in use.
- If you like to delete the no more needed files for pgm2 in modpath/FHEM,
- you should call <housekeeping> with the argument <clean> <yes>.
- All files of pgm2 are removed from modpath/FHEM and files like
- .*example.*, .gplot, .html .css, .js, and .(gif|jpg|png|svg) are moved
- to modpath/www/pgm2.
-
-
- If <preserve> is specified, you could preserve the old directory
- structure. All files of pgm2 are updated and stored in modpath/FHEM like
- the former (before Fhem 5.3) updatefhem funktion. To update an explicit
- file to the old structure append the file as <filename>.
- Note: After running the housekeeping process, the argument <preserve>
- is no longer necessary and no more supported.
-
-
- Notes:
-
- - If the main program (fhem.pl) is changed, a manual restart of fhem
- will be necessary to apply the changes.
- - After running <housekeeping> it is recommended to restart Fhem.
-
-
-
-
CULflash
@@ -1230,8 +1154,6 @@ A line ending with \ will be concatenated with the next one, so long lines
-Devices
-
global
@@ -2517,7 +2439,7 @@ A line ending with \ will be concatenated with the next one, so long lines
-
+
Define
define <name> PID sensor[:reading:regexp] actor[:cmd:min:max] [p i d]
@@ -2566,14 +2488,14 @@ A line ending with \ will be concatenated with the next one, so long lines
-
+
Get
-
+
Attributes
- disable
@@ -5118,7 +5040,6 @@ A line ending with \ will be concatenated with the next one, so long lines
-
Define
define <name> KS300 <housecode> [ml/raincounter [wind-factor]]
@@ -5175,79 +5096,82 @@ A line ending with \ will be concatenated with the next one, so long lines
MSG
-The MSG device is the backend device for all the message handling (I/O-engine).
-Under normal conditions only one MSG device is needed to serve multiple frontend
-message devices like file or email.
-
-
-Define
-
-define <name> MSG
-Specifies the MSG device. A single MSG device could serve multiple MSG frontends.
-But, for special conditions there could be defined more than one MSG device.
-
-
-
-Set
-
-set <name> send|write <devicename>
-
-Notes:
-
-To send the data, both send or write could be used.
- The devicename is the name of a frontenddevice previously
- defined. Based on the type of the frontend device, the MSG device
- will send out the lines of data.
-
- Frontend devices are available for:
-
- For details about this devices, please review the device-definitions.
- After sending/writing the data, the data stills exists with the
- frontend device, MSG do not delete/purge any data, this must be done
- by the frontend device.
-
- Examples:
-
-
-
-Attributes
-
- - IODev
- - dummy
- - ignore
- - loglevel
- - eventMap
+ The MSG device is the backend device for all the message handling (I/O-engine).
+ Under normal conditions only one MSG device is needed to serve multiple frontend
+ message devices like file or email.
+
+
+ Define
+
+ define <name> MSG
+ Specifies the MSG device. A single MSG device could serve multiple MSG frontends.
+ But, for special conditions there could be defined more than one MSG device.
+
+
+
+ Set
+
+ set <name> send|write <devicename>
+
+ Notes:
+
+ To send the data, both send or write could be used.
+ The devicename is the name of a frontenddevice previously
+ defined. Based on the type of the frontend device, the MSG device
+ will send out the lines of data.
+
+ Frontend devices are available for:
+
+ For details about this devices, please review the device-definitions.
+ After sending/writing the data, the data stills exists with the
+ frontend device, MSG do not delete/purge any data, this must be done
+ by the frontend device.
+
+ Examples:
+
+
+
+ Attributes
+
-
+
MSGFile
- The MSGFile device is a frontend device for message handling.
- With a MSGFile device data is written to disk (or other media).
- Multiple MSGFile devices could be defined.
- To write the data to disk, a MSG device is necessary.
- A MSGFile device needs the operating systems rights to write to the filesystem.
- To set the rights for a directory, please use OS related commands.
-
-
- Define
-
- define <name> MSGFile <filename>
- Specifies the MSGFile device. At definition the message counter is set to 0.
- A filename must be specified at definition.
-
-
- Examples:
-
- define myFile MSGFile
-
-
-Set
-set <name> add|clear|list [text]
+ The MSGFile device is a frontend device for message handling.
+ With a MSGFile device data is written to disk (or other media).
+ Multiple MSGFile devices could be defined.
+ To write the data to disk, a MSG device is necessary.
+ A MSGFile device needs the operating systems rights to write to the filesystem.
+ To set the rights for a directory, please use OS related commands.
+
+
+
+ Define
+
+ define <name> MSGFile <filename>
+ Specifies the MSGFile device. At definition the message counter is set to 0.
+ A filename must be specified at definition.
+
+
+ Examples:
+
+ define myFile MSGFile
+
+
+
+ Set
+ set <name> add|clear|list [text]
Set is used to manipulate the message buffer of the device. The message
buffer is an array of lines of data, stored serial based on the incoming
time into the buffer. Lines of data inside the buffer could not be deleted
@@ -5274,9 +5198,10 @@ To send the data, both send or write could be used.
set myMsg write myFile
set myFile clear
-
-Attributes
-
+
+
+ Attributes
+
- filename
sets the filename, must be a fully qualified filename.
FHEM must have the rights to write this file to the directory
@@ -5296,30 +5221,32 @@ To send the data, both send or write could be used.
MSGMail
- The MSGMail device is a frontend device for mail message handling.
- With a MSGMaildevice data is fowarded to a mail provider and send to a recipent.
- Multiple MSGMail devices could be defined.
- MSGMail supports by the moment only mail provider, which uses SSL secured connection
- like Googlemail, GMX, Yahoo or 1und1 for example.
- To send an email, a MSG device is necessary.
- MAIL::Lite and Net::SMTP::SSL from CPAN is needed to use MSGMail!!
-
-
- Define
-
- define <name> MSGMail <from> <to> <smtphost> <authfile>
- Specifies the MSGMail device. At definition the message counter is set to 0.
- From, To, SMTPHost and the authfile (see attributes below) need to be defined
- at definition time.
-
-
- Examples:
-
- define myMail MSGMail from@address.com to@address.com smtp.provider.host /etc/msgauthfile
-
-
-Set
-set <name> add|clear|list [text]
+ The MSGMail device is a frontend device for mail message handling.
+ With a MSGMaildevice data is fowarded to a mail provider and send to a recipent.
+ Multiple MSGMail devices could be defined.
+ MSGMail supports by the moment only mail provider, which uses SSL secured connection
+ like Googlemail, GMX, Yahoo or 1und1 for example.
+ To send an email, a MSG device is necessary.
+ MAIL::Lite and Net::SMTP::SSL from CPAN is needed to use MSGMail!!
+
+
+
+ Define
+
+ define <name> MSGMail <from> <to> <smtphost> <authfile>
+ Specifies the MSGMail device. At definition the message counter is set to 0.
+ From, To, SMTPHost and the authfile (see attributes below) need to be defined
+ at definition time.
+
+
+ Examples:
+
+ define myMail MSGMail from@address.com to@address.com smtp.provider.host /etc/msgauthfile
+
+
+
+ Set
+ set <name> add|clear|list [text]
Set is used to manipulate the message buffer of the device. The message
buffer is an array of lines of data, stored serial based on the incoming
time into the buffer. Lines of data inside the buffer could not be deleted
@@ -5348,12 +5275,12 @@ To send the data, both send or write could be used.
set myMsg send myMail
set myMail clear
-
+
-
-Attributes
-
- Almost all of these attributes are not optional, most of them could set at definition.
+
+ Attributes
+
+ Almost all of these attributes are not optional, most of them could set at definition.
- from
sets the mail address of the sender
- to
@@ -6167,7 +6094,7 @@ To send the data, both send or write could be used.
-
+
Define
define <name> POKEYS <ip-address> <pin> <io-state> [<time in ms>]
@@ -6189,7 +6116,7 @@ To send the data, both send or write could be used.
-
+
Set
set <name> <state> [<time in ms>]
@@ -6204,7 +6131,7 @@ To send the data, both send or write could be used.
-
+
Get
get <name> <type>
@@ -6219,7 +6146,7 @@ To send the data, both send or write could be used.
-
+
Attributes
todo
@@ -7834,782 +7761,782 @@ The one byte hex string is generated by the Oregon sensor when is it powered on.
-
- OWX
- FHEM module to commmunicate with 1-Wire bus devices
- - via an active DS2480/DS2482/DS2490/DS9097U bus master interface attached to an
- USB port or
- - via a passive DS9097 interface attached to an USB port or
- - via a network-attached CUNO or through a COC on the RaspBerry Pi
-
Internally these interfaces are vastly different, read the corresponding Wiki pages
-
-
- Example
-
- define OWio1 OWX /dev/ttyUSB1
-
- define OWio2 OWX COC
-
-
-
-
- Define
-
- define <name> OWX <serial-device>
or
- define <name> OWX <cuno/coc-device>
-
Define a 1-Wire interface to communicate with a 1-Wire bus.
-
- -
-
<serial-device>
The serial device (e.g. USB port) to which
- the 1-Wire bus is attached.
- -
-
<cuno-device>
The previously defined CUNO to which the 1-Wire
- bus is attached.
-
-
-
- Set
-
- -
-
set <name> interval <value>
-
-
sets the time period in seconds for "kicking" the 1-Wire bus
- (default is 300 seconds). This means:
- - With 1-Wire bus interfaces that do not supply power to the 1-Wire bus
- (attr buspower parasitic), the 1-Wire bus is reset at these intervals.
- - With 1-Wire bus interfaces that supply power to the 1-Wire bus (attr
- buspower = real), all temperature measurement devices on the bus receive
- the command to start a temperature conversion (saves a lot of time when
- reading)
- - With 1-Wire bus interfaces that contain a busmaster chip, the response
- to a reset pulse contains information about alarms.
-
-
- -
-
set <name> followAlarms on|off
-
-
instructs the module to start an alarm search in case a reset pulse
- discovers any 1-Wire device which has the alarm flag set.
-
-
-
- Get
-
- -
-
get <name> alarms
-
performs an "alarm search" for devices on the 1-Wire bus and, if
- found, generates an event in the log (not with CUNO).
-
- -
-
get <name> devices
-
redicovers all devices on the 1-Wire bus. If a device found has a
- previous definition, this is automatically used. If a device is found but has no
- definition, it is autocreated. If a defined device is not on the 1-Wire bus, it
- is autodeleted.
-
-
-
-
- Attributes
-
-
-
-
- OWAD
- FHEM module to commmunicate with 1-Wire A/D converters
Note:
This
- 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
-
Example
-
- define OWX_AD OWAD 724610000000 45
-
- attr OWX_AD DAlarm high
-
- attr OWX_AD DFactor 31.907097
-
- attr OWX_AD DHigh 50.0
-
- attr OWX_AD DName relHumidity|humidity
-
- attr OWX_AD DOffset -0.8088
-
- attr OWX_AD DUnit percent|%
-
+
+OWX
+ FHEM module to commmunicate with 1-Wire bus devices
+ - via an active DS2480/DS2482/DS2490/DS9097U bus master interface attached to an
+ USB port or
+ - via a passive DS9097 interface attached to an USB port or
+ - via a network-attached CUNO or through a COC on the RaspBerry Pi
+
Internally these interfaces are vastly different, read the corresponding Wiki pages
+
+
+ Example
+
+ define OWio1 OWX /dev/ttyUSB1
+
+ define OWio2 OWX COC
+
+
+
+
+ Define
+
+ define <name> OWX <serial-device>
or
+ define <name> OWX <cuno/coc-device>
+
Define a 1-Wire interface to communicate with a 1-Wire bus.
+
+ -
+
<serial-device>
The serial device (e.g. USB port) to which
+ the 1-Wire bus is attached.
+ -
+
<cuno-device>
The previously defined CUNO to which the 1-Wire
+ bus is attached.
+
+
+
+ Set
+
+ -
+
set <name> interval <value>
+
+
sets the time period in seconds for "kicking" the 1-Wire bus
+ (default is 300 seconds). This means:
+ - With 1-Wire bus interfaces that do not supply power to the 1-Wire bus
+ (attr buspower parasitic), the 1-Wire bus is reset at these intervals.
+ - With 1-Wire bus interfaces that supply power to the 1-Wire bus (attr
+ buspower = real), all temperature measurement devices on the bus receive
+ the command to start a temperature conversion (saves a lot of time when
+ reading)
+ - With 1-Wire bus interfaces that contain a busmaster chip, the response
+ to a reset pulse contains information about alarms.
-
- Define
-
- define <name> OWAD [<model>] <id> [<interval>]
-
Define a 1-Wire A/D converter.
- -
-
[<model>]
Defines the A/D converter model (and thus
- 1-Wire family id), currently the following values are permitted:
- - model DS2450 with family id 20 (default if the model parameter is
- omitted)
-
-
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
- -
-
<interval>
-
Measurement interval in seconds. The default is 300 seconds.
-
+
+ -
+
set <name> followAlarms on|off
+
+
instructs the module to start an alarm search in case a reset pulse
+ discovers any 1-Wire device which has the alarm flag set.
+
+
+
+ Get
+
+ -
+
get <name> alarms
+
performs an "alarm search" for devices on the 1-Wire bus and, if
+ found, generates an event in the log (not with CUNO).
+
+ -
+
get <name> devices
+
redicovers all devices on the 1-Wire bus. If a device found has a
+ previous definition, this is automatically used. If a device is found but has no
+ definition, it is autocreated. If a defined device is not on the 1-Wire bus, it
+ is autodeleted.
+
+
+
+
+ Attributes
+
+
+
+
+OWAD
+FHEM module to commmunicate with 1-Wire A/D converters
Note:
This
+ 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
+
Example
+
+ define OWX_AD OWAD 724610000000 45
+
+ attr OWX_AD DAlarm high
+
+ attr OWX_AD DFactor 31.907097
+
+ attr OWX_AD DHigh 50.0
+
+ attr OWX_AD DName relHumidity|humidity
+
+ attr OWX_AD DOffset -0.8088
+
+ attr OWX_AD DUnit percent|%
+
+
+
+ Define
+
+ define <name> OWAD [<model>] <id> [<interval>]
+
Define a 1-Wire A/D converter.
+ -
+
[<model>]
Defines the A/D converter model (and thus
+ 1-Wire family id), currently the following values are permitted:
+ - model DS2450 with family id 20 (default if the model parameter is
+ omitted)
-
-
- Set
-
-
-
- Get
-
-
-
- Attributes
-
- attr <name> stateAL0
- <string>
-
character string for denoting low normal condition, default is green down
- triangle, e.g. the code <span
- style="color:green">▾</span> leading to the sign ▾
-
- attr <name> stateAH0
- <string>
-
character string for denoting high alarm condition, default is green
- upward triangle, e.g. the code <span
- style="color:green">▴</span> leading to the sign ▴
-
- attr <name> stateAL1
- <string>
-
character string for denoting low alarm condition, default is red down
- triangle, e.g. the code <span style="color:red">▾</span>
- leading to the sign ▾
- attr <name> stateAH1
- <string>
-
character string for denoting high alarm condition, default is red upward
- triangle, e.g. the code <span style="color:red">▴</span>
- leading to the sign ▴
-
-
For each of the following attributes, the channel identification A,B,C,D may be
- used.
-
-
-
- OWCOUNT
- FHEM module to commmunicate with 1-Wire Counter/RAM DS2423 #
Note:
- This 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
-
Example
-
- define OWX_C OWCOUNT DS2423 CE780F000000 300
-
- attr OWX_C AName Water|volume
-
- attr OWX_C AUnit liters|l
-
- attr OWX_CAMode daily
-
-
-
- Define
-
- define <name> OWCOUNT [<model>] <id>
- [<interval>]
-
Define a 1-Wire counter.
- -
-
[<model>]
Defines the counter model (and thus 1-Wire
- family id), currently the following values are permitted:
- - model DS2423 with family id 1D (default if the model parameter is
- omitted)
-
-
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
- -
-
<interval>
-
Measurement interval in seconds. The default is 300 seconds.
-
-
-
- Set
-
-
-
- Get
-
-
-
- Attributes
-
-
-
-
- OWID
- FHEM module for 1-Wire devices that know only their unique ROM ID
-
Note:
This 1-Wire module so far works only with the OWX interface module.
- Please define an OWX device first.
-
Example
-
- define ROM1 OWX_ID OWCOUNT CE780F000000
-
-
-
- Define
-
- define <name> OWID <id>
-
Define a 1-Wire device.
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
-
-
-
- Get
-
-
-
-
-
- OWLCD
- FHEM module to commmunicate with the 1-Wire LCD controller
- from Louis Swart (1-Wire family id FF). See also the corresponding Wiki page.
- Note:
This 1-Wire module so far works only with the OWX interface module. Please
- define an OWX device first.
-
Example
-
- define OWX_LCD OWLCD 9F0700000100
-
-
-
-
- Define
-
- define <name> OWLCD <id>
-
Define a 1-Wire LCD device.
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
-
-
-
- Set
-
-
-
- Get
-
-
-
- Attributes
-
-
-
-
- OWMULTI
- FHEM module to commmunicate with 1-Wire multi-sensors, currently the DS2438 smart battery monitor
Note:
This
- 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
-
Example
-
- define OWX_M OWMULTI 7C5034010000 45
-
- attr OWX_M VName relHumidity|humidity
-
- attr OWX_M VUnit percent|%
-
- attr OWX_M VFunction (161.29 * V / VDD - 25.8065)/(1.0546 - 0.00216 * T)
-
-
-
- Define
-
- define <name> OWMULTI [<model>] <id> [<interval>]
-
Define a 1-Wire multi-sensor
- -
-
[<model>]
Defines the sensor model (and thus
- 1-Wire family id), currently the following values are permitted:
- - model DS2438 with family id 26 (default if the model parameter is
- omitted). Measured is a temperature value, an external voltage and the current supply voltage
-
-
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
- -
-
<interval>
-
Measurement interval in seconds. The default is 300 seconds.
-
-
-
-
- Set
-
-
-
- Get
-
-
-
- Attributes
-
- attr <name> VName
+
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+ -
+
<interval>
+
Measurement interval in seconds. The default is 300 seconds.
+
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ attr <name> stateAL0
+ <string>
+
character string for denoting low normal condition, default is green down
+ triangle, e.g. the code <span
+ style="color:green">▾</span> leading to the sign ▾
+
+ attr <name> stateAH0
+ <string>
+
character string for denoting high alarm condition, default is green
+ upward triangle, e.g. the code <span
+ style="color:green">▴</span> leading to the sign ▴
+
+ attr <name> stateAL1
+ <string>
+
character string for denoting low alarm condition, default is red down
+ triangle, e.g. the code <span style="color:red">▾</span>
+ leading to the sign ▾
+ attr <name> stateAH1
+ <string>
+
character string for denoting high alarm condition, default is red upward
+ triangle, e.g. the code <span style="color:red">▴</span>
+ leading to the sign ▴
+
+
For each of the following attributes, the channel identification A,B,C,D may be
+ used.
+ attr <name> <channel>Name
<string>|<string>
-
name for the channel | a type description for the measured value.
- attr <name> VUnit
+
name for the channel | a type description for the measured value.
+ attr <name> <channel>Unit
<string>|<string>
-
unit of measurement for this channel | its abbreviation.
- attr <name> VFunction
+
unit of measurement for this channel | its abbreviation.
+ attr <name> <channel>Offset
+ <float>
+
offset added to the reading in this channel.
+ attr <name> <channel>Factor
+ <float>
+
factor multiplied to (reading+offset) in this channel.
+ attr <name> <channel>Alarm
<string>
-
arbitrary functional expression involving the values VDD, V, T. Example see above.
-
- - VDD is replaced by the measured supply voltage in Volt,
- - V by the measured external voltage,
- - T by the measured and corrected temperature in its unit
-
- attr <name> tempOffset
+
alarm setting in this channel, either both, low, high or none (default).
+ attr <name> <channel>Low
+ <float>
+
measurement value (on the scale determined by offset and factor) for low
+ alarm.
+ attr <name> <channel>High
+ <float>
+
measurement value (on the scale determined by offset and factor) for high
+ alarm.
+ attr <name> event on-change|on-update
+
This attribte work similarly, but not identically to the standard event-on-update-change/event-on-update-reading attribute.
+ event on-update
(default) will write a notify/FileLog event any time a measurement is received.
+ event on-change
will write a notify/FileLog event only when a measurement is different from the previous one.
+
+
+ - Standard attributes alias, comment, eventMap, loglevel, webCmd
+
+
+
+
+OWCOUNT
+FHEM module to commmunicate with 1-Wire Counter/RAM DS2423 #
Note:
+ This 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
+
Example
+
+ define OWX_C OWCOUNT DS2423 CE780F000000 300
+
+ attr OWX_C AName Water|volume
+
+ attr OWX_C AUnit liters|l
+
+ attr OWX_CAMode daily
+
+
+
+ Define
+
+ define <name> OWCOUNT [<model>] <id>
+ [<interval>]
+
Define a 1-Wire counter.
+ -
+
[<model>]
Defines the counter model (and thus 1-Wire
+ family id), currently the following values are permitted:
+ - model DS2423 with family id 1D (default if the model parameter is
+ omitted)
+
+
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+ -
+
<interval>
+
Measurement interval in seconds. The default is 300 seconds.
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+
+OWID
+FHEM module for 1-Wire devices that know only their unique ROM ID
+
Note:
This 1-Wire module so far works only with the OWX interface module.
+ Please define an OWX device first.
+
Example
+
+ define ROM1 OWX_ID OWCOUNT CE780F000000
+
+
+
+ Define
+
+ define <name> OWID <id>
+
Define a 1-Wire device.
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+
+
+
+ Get
+
+
+
+
+
+OWLCD
+FHEM module to commmunicate with the 1-Wire LCD controller
+ from Louis Swart (1-Wire family id FF). See also the corresponding Wiki page.
+ Note:
This 1-Wire module so far works only with the OWX interface module. Please
+ define an OWX device first.
+
Example
+
+ define OWX_LCD OWLCD 9F0700000100
+
+
+
+
+ Define
+
+ define <name> OWLCD <id>
+
Define a 1-Wire LCD device.
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+
+
+
+OWMULTI
+FHEM module to commmunicate with 1-Wire multi-sensors, currently the DS2438 smart battery monitor
Note:
This
+ 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
+
Example
+
+ define OWX_M OWMULTI 7C5034010000 45
+
+ attr OWX_M VName relHumidity|humidity
+
+ attr OWX_M VUnit percent|%
+
+ attr OWX_M VFunction (161.29 * V / VDD - 25.8065)/(1.0546 - 0.00216 * T)
+
+
+
+ Define
+
+ define <name> OWMULTI [<model>] <id> [<interval>]
+
Define a 1-Wire multi-sensor
+ -
+
[<model>]
Defines the sensor model (and thus
+ 1-Wire family id), currently the following values are permitted:
+ - model DS2438 with family id 26 (default if the model parameter is
+ omitted). Measured is a temperature value, an external voltage and the current supply voltage
+
+
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+ -
+
<interval>
+
Measurement interval in seconds. The default is 300 seconds.
+
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ attr <name> VName
+ <string>|<string>
+
name for the channel | a type description for the measured value.
+ attr <name> VUnit
+ <string>|<string>
+
unit of measurement for this channel | its abbreviation.
+ attr <name> VFunction
+ <string>
+
arbitrary functional expression involving the values VDD, V, T. Example see above.
+
+ - VDD is replaced by the measured supply voltage in Volt,
+ - V by the measured external voltage,
+ - T by the measured and corrected temperature in its unit
+
+ attr <name> tempOffset
+ <float>
+
+
temperature offset in °C added to the raw temperature reading.
+ attr <name> tempUnit
+ Celsius|Kelvin|Fahrenheit|C|K|F
+
+
unit of measurement (temperature scale), default is Celsius = °C
+ attr <name> event on-change|on-update
+
This attribte work similarly, but not identically to the standard event-on-update-change/event-on-update-reading attribute.
+ event on-update
(default) will write a notify/FileLog event any time a measurement is received.
+ event on-change
will write a notify/FileLog event only when a measurement is different from the previous one.
+
+
+ - Standard attributes alias, comment, eventMap, loglevel, webCmd
+
+
+
+
+OWSWITCH
+FHEM module to commmunicate with 1-Wire Programmable Switches
Note:
+ This 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
+
Example
+
+ define OWX_S OWSWITCH DS2413 B5D502000000 60
+
+ attr OWX_S AName Lampe|light
+
+ attr OWX_S AUnit AN|AUS
+
+
+
+
+ Define
+
+ define <name> OWSWITCH [<model>] <id>
+ [<interval>]
+
Define a 1-Wire switch.
+ -
+
[<model>]
Defines the switch model (and thus 1-Wire
+ family id), currently the following values are permitted:
+ - model DS2413 with family id 3A (default if the model parameter is
+ omitted). 2 Channel switch with onboard memory
+ - model DS2406 with family id 12. 2 Channel switch
+ - model DS2406 with family id 29. 8 Channel switch
+
+
+ -
+
<id>
+
12-character unique ROM id of the converter device without family id and
+ CRC code
+ -
+
<interval>
+
Measurement interval in seconds. The default is 300 seconds.
+
+
+
+ Set
+
+
+
+ Get
+
+ -
+
get <name> id
+
Returns the full 1-Wire device id OW_FAMILY.ROM_ID.CRC
+ -
+
get <name> present
+
+
Returns 1 if this 1-Wire device is present, otherwise 0.
+ -
+
get <name> interval
Returns measurement interval
+ in seconds.
+ -
+
get <name> input <channel-name>
+ state for channel (A,B, ... or defined channel name)
+ This value reflects the measured value, not necessarily the one set as
+ output state, because the output transistors are open collector switches. A measured
+ state of 1 = OFF therefore corresponds to an output state of 1 = OFF, but a measured
+ state of 0 = ON can also be due to an external shortening of the output.
+ -
+
get <name> gpio
Obtain state of all
+ channels
+
+
+
+ Attributes For each of the following attributes, the channel
+ identification A,B,... may be used.
+
+
+
+OWTHERM
+FHEM module to commmunicate with 1-Wire bus digital thermometer devices
+ Note:
This is the only 1-Wire module which so far works with both the OWFS and the
+ OWX interface module. Please define an OWFS device or an OWX device first.
+
Example
+
+ define OWX_T OWTHERM DS18B20 E8D09B030000 300
+
+ attr OWX_T tempUnit Kelvin
+
+
+
+ Define
+
+ define <name> OWTHERM [<model>] <id>
+ [<interval>]
+
Define a 1-Wire digital thermometer device.
+ -
+
[<model>]
Defines the thermometer model (and thus
+ 1-Wire family id) currently the following values are permitted:
+ - model DS1820 with family id 10 (default if the model parameter is
+ omitted)
+ - model DS1822 with family id 22
+ - model DS18B20 with family id 28
+
+
+ -
+
<id>
+
12-character unique ROM id of the thermometer device without family id and
+ CRC code
+ -
+
<interval>
+
Temperature measurement interval in seconds. The default is 300 seconds.
+
Example:
+ define Temp1 OWTHERM 14B598010800 300
+
+
+
+ Set
+
+
+
+ Get
+
+
+
+ Attributes
+
+ attr <name> stateAL <string>
+
+
character string for denoting low alarm condition, default is red down
+ triangle, e.g. the code <span style="color:red">▾</span>
+ leading to the sign ▾
+
+ attr <name> stateAH <string>
+
+
character string for denoting high alarm condition, default is red upward
+ triangle, e.g. the code <span style="color:red">▴</span>
+ leading to the sign ▴
+
+ attr <name> tempOffset
<float>
-
-
temperature offset in °C added to the raw temperature reading.
- attr <name> tempUnit
+
+
temperature offset in °C added to the raw temperature reading.
+ attr <name> tempUnit
Celsius|Kelvin|Fahrenheit|C|K|F
-
-
unit of measurement (temperature scale), default is Celsius = °C
- attr <name> event on-change|on-update
-
This attribte work similarly, but not identically to the standard event-on-update-change/event-on-update-reading attribute.
- event on-update
(default) will write a notify/FileLog event any time a measurement is received.
- event on-change
will write a notify/FileLog event only when a measurement is different from the previous one.
-
-
- - Standard attributes alias, comment, eventMap, loglevel, webCmd
-
-
-
-
- OWSWITCH
- FHEM module to commmunicate with 1-Wire Programmable Switches
Note:
- This 1-Wire module so far works only with the OWX interface module. Please define an OWX device first.
-
Example
-
- define OWX_S OWSWITCH DS2413 B5D502000000 60
-
- attr OWX_S AName Lampe|light
-
- attr OWX_S AUnit AN|AUS
-
+
+
unit of measurement (temperature scale), default is Celsius = °C
+ -
+
attr <name> tempHigh <float>
+
+
high alarm temperature (on the temperature scale chosen by the attribute
+ value).
+ -
+
attr <name> tempLow <float>
+
+
low alarm temperature (on the temperature scale chosen by the attribute
+ value).
+ attr <name> event on-change|on-update
+
This attribte work similarly, but not identically to the standard event-on-update-change/event-on-update-reading attribute.
+ event on-update
(default) will write a notify/FileLog event any time a measurement is received.
+ event on-change
will write a notify/FileLog event only when a measurement is different from the previous one.
-
-
- Define
-
- define <name> OWSWITCH [<model>] <id>
- [<interval>]
-
Define a 1-Wire switch.
- -
-
[<model>]
Defines the switch model (and thus 1-Wire
- family id), currently the following values are permitted:
- - model DS2413 with family id 3A (default if the model parameter is
- omitted). 2 Channel switch with onboard memory
- - model DS2406 with family id 12. 2 Channel switch
- - model DS2406 with family id 29. 8 Channel switch
-
-
- -
-
<id>
-
12-character unique ROM id of the converter device without family id and
- CRC code
- -
-
<interval>
-
Measurement interval in seconds. The default is 300 seconds.
-
-
-
- Set
-
-
-
- Get
-
- -
-
get <name> id
-
Returns the full 1-Wire device id OW_FAMILY.ROM_ID.CRC
- -
-
get <name> present
-
-
Returns 1 if this 1-Wire device is present, otherwise 0.
- -
-
get <name> interval
Returns measurement interval
- in seconds.
- -
-
get <name> input <channel-name>
- state for channel (A,B, ... or defined channel name)
- This value reflects the measured value, not necessarily the one set as
- output state, because the output transistors are open collector switches. A measured
- state of 1 = OFF therefore corresponds to an output state of 1 = OFF, but a measured
- state of 0 = ON can also be due to an external shortening of the output.
- -
-
get <name> gpio
Obtain state of all
- channels
-
-
-
- Attributes For each of the following attributes, the channel
- identification A,B,... may be used.
-
-
-
- OWTHERM
- FHEM module to commmunicate with 1-Wire bus digital thermometer devices
- Note:
This is the only 1-Wire module which so far works with both the OWFS and the
- OWX interface module. Please define an OWFS device or an OWX device first.
-
Example
-
- define OWX_T OWTHERM DS18B20 E8D09B030000 300
-
- attr OWX_T tempUnit Kelvin
-
-
-
- Define
-
- define <name> OWTHERM [<model>] <id>
- [<interval>]
-
Define a 1-Wire digital thermometer device.
- -
-
[<model>]
Defines the thermometer model (and thus
- 1-Wire family id) currently the following values are permitted:
- - model DS1820 with family id 10 (default if the model parameter is
- omitted)
- - model DS1822 with family id 22
- - model DS18B20 with family id 28
-
-
- -
-
<id>
-
12-character unique ROM id of the thermometer device without family id and
- CRC code
- -
-
<interval>
-
Temperature measurement interval in seconds. The default is 300 seconds.
-
Example:
- define Temp1 OWTHERM 14B598010800 300
-
-
-
- Set
-
-
-
- Get
-
-
-
- Attributes
-
- attr <name> stateAL <string>
-
-
character string for denoting low alarm condition, default is red down
- triangle, e.g. the code <span style="color:red">▾</span>
- leading to the sign ▾
-
- attr <name> stateAH <string>
-
-
character string for denoting high alarm condition, default is red upward
- triangle, e.g. the code <span style="color:red">▴</span>
- leading to the sign ▴
-
- attr <name> tempOffset
- <float>
-
-
temperature offset in °C added to the raw temperature reading.
- attr <name> tempUnit
- Celsius|Kelvin|Fahrenheit|C|K|F
-
-
unit of measurement (temperature scale), default is Celsius = °C
- -
-
attr <name> tempHigh <float>
-
-
high alarm temperature (on the temperature scale chosen by the attribute
- value).
- -
-
attr <name> tempLow <float>
-
-
low alarm temperature (on the temperature scale chosen by the attribute
- value).
- attr <name> event on-change|on-update
-
This attribte work similarly, but not identically to the standard event-on-update-change/event-on-update-reading attribute.
- event on-update
(default) will write a notify/FileLog event any time a measurement is received.
- event on-change
will write a notify/FileLog event only when a measurement is different from the previous one.
-
-
- - Standard attributes alias, comment, eventMap, loglevel, webCmd
-
-
+
+ - Standard attributes alias, comment, eventMap, loglevel, webCmd
+
+
RFXCOM
@@ -9807,7 +9734,6 @@ href="http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=29870">U
-
TCM
@@ -10388,6 +10314,7 @@ volume
+
ZWDongle
@@ -11504,13 +11431,13 @@ volume
"Put" the newly created device in this room. The name can contain the
wildcards %TYPE and %NAME, see the example above.
-
+
- filelog
Create a filelog associated with the device. The filename can contain
the wildcards %TYPE and %NAME, see the example above. The filelog will
be "put" in the same room as the device.
-
+
- weblink
Create a weblink associated with the device/filelog.
@@ -12126,6 +12053,7 @@ volume
+
watchdog
@@ -12183,7 +12111,6 @@ volume
- a generic watchdog (one watchdog responsible for more devices) is
currently not possible.
-
@@ -12204,7 +12131,6 @@ volume
-
diff --git a/docs/fhem.html b/docs/fhem.html
index 86a21a715..60f09b862 100644
--- a/docs/fhem.html
+++ b/docs/fhem.html
@@ -75,7 +75,7 @@
Nightly SVN version: a
tarball, or from the fhem commandline via updatefhem.
+ href="commandref.html#update">update.
Please fill out our survey,