mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-28 02:44:53 +00:00
msg: remove old 75_MSG.pm and replace it by new msg command (forum #351266)
git-svn-id: https://svn.fhem.de/fhem/trunk@9760 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b43ad2a10f
commit
96951c11c7
12
fhem/CHANGED
12
fhem/CHANGED
@ -1,7 +1,11 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it.
|
||||
- bugfix 98_Text2Speech: Google fixed, svox-pico added
|
||||
- bugfix 00_SIGNALduino: Updated Firmware (3.8.1-HF1)
|
||||
- change: ATTENTION: Removed deprecated module 75_MSG.pm. Users will need to
|
||||
manually change their device definitions to MSGFile or MSGMail
|
||||
respectively.
|
||||
- feature: Introduce FHEM message routing by new command 'msg'
|
||||
- bugfix: 98_Text2Speech: Google fixed, svox-pico added
|
||||
- bugfix: 00_SIGNALduino: Updated Firmware (3.8.1-HF1)
|
||||
fixed send raw
|
||||
- updated: 74_AMAD: New Mijor Release 0.8.1
|
||||
- bugfix: 74_AMAD: fix call statusRequest then screen off is set
|
||||
@ -18,8 +22,8 @@
|
||||
toggle between to BT Devices, clear Notificationbar
|
||||
(Automagic,All), play Notify Soundfile (WallClock),
|
||||
check for a activ task on the tablet/phone
|
||||
- bugfix: 74_AMAD: improved error handling
|
||||
- bugfix: 70_PIONEERAVR: fixed the decoding for the reading "display".
|
||||
- bugfix: 74_AMAD: improved error handling
|
||||
- bugfix: 70_PIONEERAVR: fixed the decoding for the reading "display".
|
||||
- feature: 93_DbLog: Added support for longpoll SVG.
|
||||
- feature: contrib/98_openweathermap.pm - add support for stationByZip.
|
||||
e.g. 76133,de will find weather data for Karlsruhe,Germany
|
||||
|
@ -136,7 +136,11 @@ sub Pushover_Define($$) {
|
||||
|
||||
# start Validation Timer
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer( gettimeofday() + 5, "Pushover_ValidateUser", $hash, 0 );
|
||||
if (ReadingsVal($name,"tokenState","invalid") ne "valid" || ReadingsVal($name,"userState","invalid") ne "valid" || $init_done) {
|
||||
InternalTimer( gettimeofday() + 5, "Pushover_ValidateUser", $hash, 0 );
|
||||
} else {
|
||||
InternalTimer( gettimeofday() + 21600, "Pushover_ValidateUser", $hash, 0 );
|
||||
}
|
||||
|
||||
return undef;
|
||||
}
|
||||
@ -170,13 +174,17 @@ sub Pushover_Set($@) {
|
||||
. join( " ", sort keys %sets );
|
||||
}
|
||||
|
||||
if ( AttrVal( $name, "disable", 0 ) == 1 ) {
|
||||
return "Device is disabled";
|
||||
}
|
||||
return "Unable to send message: Device is disabled"
|
||||
if ( AttrVal( $name, "disable", 0 ) == 1 );
|
||||
|
||||
if ( $cmd eq 'msg' ) {
|
||||
return Pushover_SetMessage( $hash, @args );
|
||||
}
|
||||
return "Unable to send message: User key is invalid"
|
||||
if ( ReadingsVal( $name, "userState", "invalid" ) eq "invalid" );
|
||||
|
||||
return "Unable to send message: App token is invalid"
|
||||
if ( ReadingsVal( $name, "tokenState", "invalid" ) eq "invalid" );
|
||||
|
||||
return Pushover_SetMessage( $hash, @args )
|
||||
if ( $cmd eq 'msg' );
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -310,7 +318,7 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
my $values = $param->{type};
|
||||
my $return;
|
||||
|
||||
Log3 $name, 5, "Pushover $name: called function Pushover_ReceiveCommand()";
|
||||
Log3 $name, 5, "Pushover $name: Received HttpUtils callback:\n\nPARAM:\n".Dumper($param)."\n\nERROR:\n".Dumper($err)."\n\nDATA:\n".Dumper($data);
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
|
||||
@ -378,6 +386,81 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
#
|
||||
|
||||
$values{result} = "ok";
|
||||
|
||||
# extract API stats
|
||||
my $apiLimit = 7500;
|
||||
my $apiRemaining = 1;
|
||||
my $apiReset;
|
||||
if ( $param->{httpheader} =~ m/X-Limit-App-Limit:[\s\t]*(.*)[\s\t\n]*/ ) {
|
||||
$apiLimit = $1;
|
||||
readingsBulkUpdate( $hash, "apiLimit", $1 )
|
||||
if ( ReadingsVal($name,"apiLimit","") ne $1 );
|
||||
}
|
||||
if ( $param->{httpheader} =~ m/X-Limit-App-Remaining:[\s\t]*(.*)[\s\t\n]*/ ) {
|
||||
$apiRemaining = $1;
|
||||
readingsBulkUpdate( $hash, "apiRemaining", $1 )
|
||||
if ( ReadingsVal($name,"apiRemaining","") ne $1 );
|
||||
}
|
||||
if ( $param->{httpheader} =~ m/X-Limit-App-Reset:[\s\t]*(.*)[\s\t\n]*/ ) {
|
||||
$apiReset = $1;
|
||||
readingsBulkUpdate( $hash, "apiReset", $1 )
|
||||
if ( ReadingsVal($name,"apiReset","") ne $1 );
|
||||
}
|
||||
|
||||
# Server error
|
||||
if ($param->{code} >= 500) {
|
||||
$state = "error";
|
||||
$values{result} = "Server Error " . $param->{code};
|
||||
}
|
||||
|
||||
# error handling
|
||||
elsif ( ($param->{code} == 200 || $param->{code} >= 400) &&
|
||||
( (ref($return) eq "HASH" && $return->{status} ne "1") || (ref($return) ne "HASH" && $return !~ m/"status":1,/) ) ) {
|
||||
$values{result} = "Error " . $param->{code} . ": Unspecified error occured";
|
||||
if (ref($return) eq "HASH" && defined $return->{errors}) {
|
||||
$values{result} =
|
||||
"Error " . $param->{code} . ": " . join( ". ", @{ $return->{errors} } ) . ".";
|
||||
}
|
||||
elsif ( ref($return) ne "HASH" && $return =~ m/"errors":\[(.*)\]/ ) {
|
||||
$values{result} = "Error " . $param->{code} . ": " . $1;
|
||||
}
|
||||
|
||||
$state = "error";
|
||||
|
||||
if ( ref($return) eq "HASH" && defined($return->{token}) ) {
|
||||
$state = "unauthorized";
|
||||
readingsBulkUpdate( $hash, "tokenState", $return->{token} )
|
||||
if ( ReadingsVal($name,"tokenState","") ne $return->{token} );
|
||||
} elsif ( ref($return) ne "HASH" && $return =~ m/"token":"invalid"/ ) {
|
||||
$state = "unauthorized";
|
||||
readingsBulkUpdate( $hash, "tokenState", "invalid" )
|
||||
if ( ReadingsVal($name,"tokenState","") ne "invalid" );
|
||||
} else {
|
||||
readingsBulkUpdate( $hash, "tokenState", "valid" )
|
||||
if ( ReadingsVal($name,"tokenState","") ne "valid" );
|
||||
}
|
||||
|
||||
if ( ref($return) eq "HASH" && defined($return->{user}) ) {
|
||||
$state = "unauthorized";
|
||||
readingsBulkUpdate( $hash, "tokenState", $return->{user} )
|
||||
if ( ReadingsVal($name,"tokenState","") ne $return->{user} );
|
||||
} elsif ( ref($return) ne "HASH" && $return =~ m/"user":"invalid"/ ) {
|
||||
$state = "unauthorized";
|
||||
readingsBulkUpdate( $hash, "userState", "invalid" )
|
||||
if ( ReadingsVal($name,"userState","") ne "invalid" );
|
||||
} else {
|
||||
readingsBulkUpdate( $hash, "userState", "valid" )
|
||||
if ( ReadingsVal($name,"userState","") ne "valid" );
|
||||
}
|
||||
|
||||
} else {
|
||||
$state = "limited" if($apiRemaining < 1);
|
||||
|
||||
readingsBulkUpdate( $hash, "tokenState", "valid" )
|
||||
if ( ReadingsVal($name,"tokenState","") ne "valid" );
|
||||
readingsBulkUpdate( $hash, "userState", "valid" )
|
||||
if ( ReadingsVal($name,"userState","") ne "valid" );
|
||||
}
|
||||
|
||||
# messages.json
|
||||
if ( $service eq "messages.json" ) {
|
||||
@ -391,23 +474,11 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
if ( $values->{action} eq "" );
|
||||
readingsBulkUpdate( $hash, "lastDevice", $values->{device} )
|
||||
if ( $values->{device} ne "" );
|
||||
readingsBulkUpdate( $hash, "lastDevice", $hash->{DEVICES} )
|
||||
if ( $values->{device} eq "" && defined( $hash->{DEVICES} ) );
|
||||
readingsBulkUpdate( $hash, "lastDevice", "all" )
|
||||
if ( $values->{device} eq "" && !defined( $hash->{DEVICES} ) );
|
||||
readingsBulkUpdate( $hash, "lastDevice", ReadingsVal($name, "devices", "all") )
|
||||
if ( $values->{device} eq "" );
|
||||
|
||||
if ( ref($return) eq "HASH" ) {
|
||||
|
||||
if ( $return->{status} ne "1" && defined $return->{errors} ) {
|
||||
$values{result} =
|
||||
"Error: " . Dumper( $return->{errors} );
|
||||
$state = "error";
|
||||
}
|
||||
elsif ( $return->{status} ne "1" ) {
|
||||
$values{result} = "Unspecified error";
|
||||
$state = "error";
|
||||
}
|
||||
|
||||
readingsBulkUpdate( $hash, "lastRequest", $return->{request} )
|
||||
if ( defined $return->{request} );
|
||||
|
||||
@ -427,7 +498,7 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
}
|
||||
else {
|
||||
readingsBulkUpdate( $hash, "cbDev_" . $values->{cbNr},
|
||||
$hash->{DEVICES} );
|
||||
ReadingsVal($name, "devices", "all") );
|
||||
}
|
||||
|
||||
if ( defined $return->{receipt} ) {
|
||||
@ -446,16 +517,6 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
}
|
||||
}
|
||||
|
||||
# simple error handling if no JSON module was loaded
|
||||
elsif ( $return !~ m/"status":1,/ ) {
|
||||
$state = "error";
|
||||
if ( $return =~ m/"errors":\[(.*)\]/ ) {
|
||||
$values{result} = "Error: " . $1;
|
||||
}
|
||||
else {
|
||||
$values{result} = "Unspecified error";
|
||||
}
|
||||
}
|
||||
elsif ( $values{expire} ne "" ) {
|
||||
$values{result} =
|
||||
"SoftFail: Callback not supported. Please install Perl::JSON";
|
||||
@ -464,36 +525,17 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
|
||||
# users/validate.json
|
||||
elsif ( $service eq "users/validate.json" ) {
|
||||
|
||||
if ( ref($return) eq "HASH" ) {
|
||||
my $devices = "-";
|
||||
my $group = "0";
|
||||
$devices = join( ",", @{ $return->{devices} } ) if (defined($return->{devices}));
|
||||
$group = $return->{group} if (defined($return->{group}));
|
||||
|
||||
if ( $return->{status} ne "1" && defined $return->{errors} ) {
|
||||
$values{result} =
|
||||
"Error: " . join( ". ", @{ $return->{errors} } ) . ".";
|
||||
$state = "unauthorized";
|
||||
}
|
||||
elsif ( $return->{status} ne "1" ) {
|
||||
$values{result} = "Unspecified error";
|
||||
$state = "unauthorized";
|
||||
}
|
||||
else {
|
||||
$hash->{DEVICES} = join( ",", @{ $return->{devices} } );
|
||||
$hash->{GROUP} = $return->{group};
|
||||
}
|
||||
|
||||
readingsBulkUpdate( $hash, "devices", $devices )
|
||||
if ( ReadingsVal($name,"devices","") ne $devices );
|
||||
readingsBulkUpdate( $hash, "group", $group )
|
||||
if ( ReadingsVal($name,"group","") ne $group );
|
||||
}
|
||||
|
||||
# simple error handling if no JSON module was loaded
|
||||
elsif ( $return !~ m/"status":1,/ ) {
|
||||
$state = "unauthorized";
|
||||
if ( $return =~ m/"errors":\[(.*)\]/ ) {
|
||||
$values{result} = "Error: " . $1;
|
||||
}
|
||||
else {
|
||||
$values{result} = "Unspecified error";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
readingsBulkUpdate( $hash, "lastResult", $values{result} );
|
||||
@ -502,25 +544,33 @@ sub Pushover_ReceiveCommand($$$) {
|
||||
# Set reading for availability
|
||||
#
|
||||
my $available = 0;
|
||||
$available = 1 if ( $state eq "connected" );
|
||||
if ( !defined( $hash->{READINGS}{available}{VAL} )
|
||||
|| $hash->{READINGS}{available}{VAL} ne $available )
|
||||
{
|
||||
readingsBulkUpdate( $hash, "available", $available );
|
||||
}
|
||||
|
||||
if ($available eq "0") {
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer( gettimeofday() + 900, "Pushover_ValidateUser", $hash, 0 )
|
||||
}
|
||||
$available = 1 if ( $param->{code} ne "429" && ($state eq "connected" || $state eq "error") );
|
||||
readingsBulkUpdate( $hash, "available", $available )
|
||||
if ( ReadingsVal($name,"available","") ne $available );
|
||||
|
||||
# Set reading for state
|
||||
#
|
||||
if ( !defined( $hash->{READINGS}{state}{VAL} )
|
||||
|| $hash->{READINGS}{state}{VAL} ne $state )
|
||||
{
|
||||
readingsBulkUpdate( $hash, "state", $state );
|
||||
readingsBulkUpdate( $hash, "state", $state )
|
||||
if ( ReadingsVal($name,"state","") ne $state );
|
||||
|
||||
# credentials validation loop
|
||||
#
|
||||
my $nextTimer = "none";
|
||||
|
||||
# if we could not connect, try again in 5 minutes
|
||||
if ($state eq "disconnected") {
|
||||
$nextTimer = gettimeofday() + 300;
|
||||
|
||||
# re-validate every 6 hours if there was no message sent during that time
|
||||
} elsif ($available eq "1") {
|
||||
$nextTimer = gettimeofday() + 21600;
|
||||
# re-validate after API limit was reset
|
||||
} elsif ($state eq "limited" || $param->{code} == 429) {
|
||||
$nextTimer = ReadingsVal($name,"apiReset",gettimeofday() + 21277) + 323;
|
||||
}
|
||||
RemoveInternalTimer($hash);
|
||||
$hash->{VALIDATION_TIMER} = $nextTimer;
|
||||
InternalTimer( $nextTimer, "Pushover_ValidateUser", $hash, 0 ) if ($nextTimer ne "none");
|
||||
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
|
||||
@ -536,18 +586,18 @@ sub Pushover_ValidateUser ($;$) {
|
||||
Log3 $name, 5, "Pushover $name: called function Pushover_ValidateUser()";
|
||||
|
||||
RemoveInternalTimer($hash);
|
||||
if (ReadingsVal($name, "available", "0") ne "1") {
|
||||
|
||||
if ( AttrVal( $name, "disable", 0 ) == 1 ) {
|
||||
$hash->{VALIDATION_TIMER} = "disabled";
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer( gettimeofday() + 900, "Pushover_ValidateUser", $hash, 0 );
|
||||
} else {
|
||||
InternalTimer( gettimeofday() + 21600, "Pushover_ValidateUser", $hash, 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
return
|
||||
if ( AttrVal( $name, "disable", 0 ) == 1 );
|
||||
|
||||
if ( $device ne "" ) {
|
||||
elsif ( $device ne "" ) {
|
||||
Pushover_SendCommand( $hash, "users/validate.json", "device=$device" );
|
||||
}
|
||||
|
||||
else {
|
||||
Pushover_SendCommand( $hash, "users/validate.json" );
|
||||
}
|
||||
@ -730,7 +780,7 @@ sub Pushover_SetMessage {
|
||||
|
||||
$values{cbNr} = int( time() ) + $values{expire};
|
||||
my $cbReading = "cb_" . $values{cbNr};
|
||||
until ( !defined( $hash->{READINGS}{$cbReading}{VAL} ) ) {
|
||||
until ( ReadingsVal($name, $cbReading, "") eq "" ) {
|
||||
$values{cbNr}++;
|
||||
$cbReading = "cb_" . $values{cbNr};
|
||||
}
|
||||
@ -798,11 +848,11 @@ sub Pushover_SetMessage {
|
||||
. $hash->{NAME}
|
||||
. " $key: time="
|
||||
. $rBase[1] . " ack="
|
||||
. $hash->{READINGS}{$rAck}{VAL}
|
||||
. ReadingsVal($name, $rAck, "-")
|
||||
. " curTime="
|
||||
. int( time() );
|
||||
|
||||
if ( $hash->{READINGS}{$rAck}{VAL} == 1
|
||||
if ( ReadingsVal($name, $rAck, 0) == 1
|
||||
|| $rBase[1] <= int( time() ) )
|
||||
{
|
||||
delete $hash->{READINGS}{$key};
|
||||
@ -922,7 +972,7 @@ sub Pushover_CGI() {
|
||||
if ( !defined( $webArgs->{acknowledged_by} )
|
||||
|| $webArgs->{acknowledged_by} ne $hash->{USER_KEY} );
|
||||
|
||||
if ( $hash->{READINGS}{$rAck}{VAL} == 0
|
||||
if ( ReadingsVal($name, $rAck, 1) == 0
|
||||
&& $rBase[1] > int( time() ) )
|
||||
{
|
||||
readingsBeginUpdate($hash);
|
||||
@ -944,21 +994,19 @@ sub Pushover_CGI() {
|
||||
my $redirect = "";
|
||||
|
||||
# run FHEM command if desired
|
||||
if ( defined( $hash->{READINGS}{$rAct}{VAL} )
|
||||
&& $hash->{READINGS}{$rAct}{VAL} !~ /^[\w-]+:\/\/.*$/ )
|
||||
if ( ReadingsVal($name, $rAct, "pushover://") !~ /^[\w-]+:\/\/.*$/ )
|
||||
{
|
||||
$redirect = "pushover://";
|
||||
|
||||
fhem $hash->{READINGS}{$rAct}{VAL};
|
||||
fhem ReadingsVal($name, $rAct, "");
|
||||
readingsBulkUpdate( $hash, $rAct,
|
||||
"executed: " . $hash->{READINGS}{$rAct}{VAL} );
|
||||
"executed: " . ReadingsVal($name, $rAct, ""));
|
||||
}
|
||||
|
||||
# redirect to presented URL
|
||||
if ( defined( $hash->{READINGS}{$rAct}{VAL} )
|
||||
&& $hash->{READINGS}{$rAct}{VAL} =~ /^[\w-]+:\/\/.*$/ )
|
||||
if ( ReadingsVal($name, $rAct, "none") =~ /^[\w-]+:\/\/.*$/ )
|
||||
{
|
||||
$redirect = $hash->{READINGS}{$rAct}{VAL};
|
||||
$redirect = ReadingsVal($name, $rAct, "");
|
||||
}
|
||||
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
|
2269
fhem/FHEM/75_MSG.pm
Normal file → Executable file
2269
fhem/FHEM/75_MSG.pm
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
# $Id$
|
||||
##############################################################################
|
||||
#
|
||||
# 97_messageConfig.pm
|
||||
# 97_msgConfig.pm
|
||||
# Global configuration settings for FHEM msg command.
|
||||
#
|
||||
# Copyright by Julian Pawlowski
|
||||
@ -36,16 +36,16 @@ package main;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
sub messageConfig_Set($@);
|
||||
sub messageConfig_Define($$);
|
||||
sub messageConfig_Undefine($$);
|
||||
sub msgConfig_Set($@);
|
||||
sub msgConfig_Define($$);
|
||||
sub msgConfig_Undefine($$);
|
||||
|
||||
###################################
|
||||
sub messageConfig_Initialize($) {
|
||||
sub msgConfig_Initialize($) {
|
||||
my ($hash) = @_;
|
||||
|
||||
$hash->{DefFn} = "messageConfig_Define";
|
||||
$hash->{UndefFn} = "messageConfig_Undefine";
|
||||
$hash->{DefFn} = "msgConfig_Define";
|
||||
$hash->{UndefFn} = "msgConfig_Undefine";
|
||||
|
||||
# add attributes for configuration
|
||||
no warnings 'qw';
|
||||
@ -127,13 +127,13 @@ sub messageConfig_Initialize($) {
|
||||
}
|
||||
|
||||
###################################
|
||||
sub messageConfig_Define($$) {
|
||||
sub msgConfig_Define($$) {
|
||||
|
||||
my ( $hash, $def ) = @_;
|
||||
|
||||
my @a = split( "[ \t]+", $def, 5 );
|
||||
|
||||
return "Usage: define <name> messageConfig"
|
||||
return "Usage: define <name> msgConfig"
|
||||
if ( int(@a) < 2 );
|
||||
my $name = $a[0];
|
||||
|
||||
@ -152,7 +152,7 @@ sub messageConfig_Define($$) {
|
||||
$attr{$name}{group} = $group;
|
||||
$attr{$name}{verbose} = $verbose;
|
||||
$attr{$name}{room} = $room if ($room ne "");
|
||||
$attr{$name}{comment} = "FHEM Global Configuration for command 'message'";
|
||||
$attr{$name}{comment} = "FHEM Global Configuration for command 'msg'";
|
||||
$attr{$name}{stateFormat} = "fhemMsgState";
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
@ -164,7 +164,7 @@ sub messageConfig_Define($$) {
|
||||
}
|
||||
|
||||
###################################
|
||||
sub messageConfig_Undefine($$) {
|
||||
sub msgConfig_Undefine($$) {
|
||||
|
||||
my ( $hash, $name ) = @_;
|
||||
|
||||
@ -181,19 +181,19 @@ sub messageConfig_Undefine($$) {
|
||||
=begin html
|
||||
|
||||
<p>
|
||||
<a name="messageConfig" id="messageConfig"></a>
|
||||
<a name="msgConfig" id="msgConfig"></a>
|
||||
</p>
|
||||
<h3>
|
||||
messageConfig
|
||||
msgConfig
|
||||
</h3>
|
||||
<ul>
|
||||
<li>Provides global settings for FHEM command <a href="#message">message</a>.<br>
|
||||
<li>Provides global settings for FHEM command <a href="#MSG">msg</a>.<br>
|
||||
<br>
|
||||
</li>
|
||||
<li>
|
||||
<a name="messageConfigdefine" id="messageConfigdefine"></a> <b>Define</b>
|
||||
<a name="msgConfigdefine" id="msgConfigdefine"></a> <b>Define</b>
|
||||
<div style="margin-left: 2em">
|
||||
<code>define <name> messageConfig</code><br>
|
||||
<code>define <name> msgConfig</code><br>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@ -203,19 +203,19 @@ sub messageConfig_Undefine($$) {
|
||||
=begin html_DE
|
||||
|
||||
<p>
|
||||
<a name="messageConfig" id="messageConfig"></a>
|
||||
<a name="msgConfig" id="msgConfig"></a>
|
||||
</p>
|
||||
<h3>
|
||||
messageConfig
|
||||
msgConfig
|
||||
</h3>
|
||||
<ul>
|
||||
<li>Stellt globale Einstellungen für das FHEM Kommando <a href="#message">message</a> bereit.<br>
|
||||
<li>Stellt globale Einstellungen für das FHEM Kommando <a href="#MSG">msg</a> bereit.<br>
|
||||
<br>
|
||||
</li>
|
||||
<li>
|
||||
<a name="messageConfigdefine" id="messageConfigdefine"></a> <b>Define</b>
|
||||
<a name="msgConfigdefine" id="msgConfigdefine"></a> <b>Define</b>
|
||||
<div style="margin-left: 2em">
|
||||
<code>define <name> messageConfig</code><br>
|
||||
<code>define <name> msgConfig</code><br>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
@ -1,7 +1,7 @@
|
||||
# $Id$
|
||||
##############################################################################
|
||||
#
|
||||
# messageSchema.pm
|
||||
# msgSchema.pm
|
||||
# Schema database for FHEM modules and their messaging options.
|
||||
# These commands are being used as default setting for FHEM command 'msg'
|
||||
# unless there is an explicit msgCmd* attribute.
|
||||
@ -28,7 +28,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
package messageSchema;
|
||||
package msgSchema;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
@ -618,7 +618,7 @@
|
||||
- added new RESIDENTS toolkit functions for RESIDENTS, ROOMMMATE and GUEST devices
|
||||
first function: wakeuptimer
|
||||
|
||||
- Thu Mar 13 2015 (loredo)
|
||||
- Thu Mar 13 2015 (chris1284)
|
||||
- fixed CALVIEW commandref (ms to sec)
|
||||
|
||||
- Tue Mar 17 2015 (wzut)
|
||||
@ -637,5 +637,9 @@
|
||||
- Mon Aug 23 2015 (rapster)
|
||||
- added new module 74_Unifi for the Ubiquiti Networks (UBNT) - Unifi Controller.
|
||||
|
||||
- Wed Okt 21 2015 (sidey)
|
||||
- Wed Oct 21 2015 (sidey)
|
||||
- added new module 00_SIGNALduino, 90_SIGNALduino_un, 14_Hideki, 14_SD_WS07
|
||||
|
||||
- Thu Nov 3 2015 (loredo)
|
||||
- removed deprecated wrapper module 75_MSG.pm. Users will need to replace device definitions by 75_MSGFile.pm or 75_MSGMail.pm respectively.
|
||||
- added new FHEM command 'msg' to introduce integrated message routing functionality
|
||||
|
@ -231,7 +231,8 @@ FHEM/73_PRESENCE.pm markusbloch http://forum.fhem.de Unterstue
|
||||
FHEM/73_MPD.pm Wzut http://forum.fhem.de Multimedia
|
||||
FHEM/74_AMAD.pm CoolTux http://forum.fhem.de Unterstuetzende Dienste
|
||||
FHEM/74_Unifi.pm rapster http://forum.fhem.de Automatisierung
|
||||
FHEM/75_MSG.pm gandy http://forum.fhem.de Automatisierung
|
||||
FHEM/75_MSG.pm loredo http://forum.fhem.de Automatisierung
|
||||
FHEM/75_msgConfig.pm loredo http://forum.fhem.de Automatisierung
|
||||
FHEM/76_MSGFile.pm gandy http://forum.fhem.de Automatisierung
|
||||
FHEM/76_MSGMail.pm gandy http://forum.fhem.de Automatisierung
|
||||
FHEM/80_M232.pm borisneubert http://forum.fhem.de Sonstige Systeme
|
||||
@ -321,6 +322,7 @@ FHEM/FritzBoxUtils.pm rudolfkoenig http://forum.fhem.de FRITZ!Box
|
||||
FHEM/HMConfig.pm martinp876 http://forum.fhem.de HomeMatic
|
||||
FHEM/HttpUtils.pm rudolfkoenig http://forum.fhem.de Automatisierung
|
||||
FHEM/MaxCommon.pm mgehre http://forum.fhem.de MAX
|
||||
FHEM/msgSchema.pm loredo http://forum.fhem.de Automatisierung
|
||||
FHEM/ONKYOdb.pm loredo http://forum.fhem.de Multimedia
|
||||
FHEM/OWX_DS2480.pm ntruchsess http://forum.fhem.de 1Wire
|
||||
FHEM/OWX_DS9097.pm ntruchsess http://forum.fhem.de 1Wire
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user