commandRef and lowerCamelCaps
This commit is contained in:
parent
b5cc163b8a
commit
e629b1e0c9
@ -23,7 +23,7 @@
|
|||||||
# Usage:
|
# Usage:
|
||||||
#
|
#
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# $Id: 98_Matrix.pm 13172 2022-11-06 12:52:00Z Man-fred $
|
# $Id: 98_Matrix.pm 14063 2022-11-12 12:52:00Z Man-fred $
|
||||||
|
|
||||||
package FHEM::Devices::Matrix;
|
package FHEM::Devices::Matrix;
|
||||||
use strict;
|
use strict;
|
||||||
@ -74,6 +74,7 @@ sub Initialize {
|
|||||||
=item summary Provides a Matrix-Chatbot.
|
=item summary Provides a Matrix-Chatbot.
|
||||||
=item summary_DE Stellt einen Matrix-Chatbot bereit.
|
=item summary_DE Stellt einen Matrix-Chatbot bereit.
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a id="Matrix"></a>
|
<a id="Matrix"></a>
|
||||||
<h3>Matrix</h3>
|
<h3>Matrix</h3>
|
||||||
<ul>
|
<ul>
|
||||||
@ -115,18 +116,18 @@ sub Initialize {
|
|||||||
If logged in or in state "soft-logout" refresh gets a new access_token and syncs endless if poll is set to "1"</li>
|
If logged in or in state "soft-logout" refresh gets a new access_token and syncs endless if poll is set to "1"</li>
|
||||||
<a id="Matrix-set-filter"></a>
|
<a id="Matrix-set-filter"></a>
|
||||||
<li><i>filter</i><br>
|
<li><i>filter</i><br>
|
||||||
A Filter must be set for syncing in long poll. This filter is in the moment experimentell and must be set manual to get the coresponding filter_id</li>
|
A Filter must be set for syncing in long poll. This filter is in the moment experimentell and must be set manual to get the coresponding filterId</li>
|
||||||
<a id="Matrix-set-poll"></a>
|
<a id="Matrix-set-poll"></a>
|
||||||
<li><i>poll</i><br>
|
<li><i>poll</i><br>
|
||||||
Defaults to "0": Set poll to "1" for starting the sync-loop</li>
|
Defaults to "0": Set poll to "1" for starting the sync-loop</li>
|
||||||
<a id="Matrix-set-poll.fullstate"></a>
|
<a id="Matrix-set-pollFullstate"></a>
|
||||||
<li><i>poll.fullstate</i><br>
|
<li><i>pollFullstate</i><br>
|
||||||
Defaults to "0": Set poll.fullstate to "1" for getting in the next sync a full state of all rooms</li>
|
Defaults to "0": Set pollFullstate to "1" for getting in the next sync a full state of all rooms</li>
|
||||||
<a id="Matrix-set-question.start"></a>
|
<a id="Matrix-set-question"></a>
|
||||||
<li><i>question.start</i><br>
|
<li><i>question.start</i><br>
|
||||||
Start a question in the room from reading room. The first answer to the question is logged and ends the question.</li>
|
Start a question in the room from reading room. The first answer to the question is logged and ends the question.</li>
|
||||||
<a id="Matrix-set-question.end"></a>
|
<a id="Matrix-set-questionEnd"></a>
|
||||||
<li><i>question.end</i><br>
|
<li><i>questionEnd</i><br>
|
||||||
Stop a question also it is not answered.</li>
|
Stop a question also it is not answered.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
@ -184,8 +185,10 @@ sub Initialize {
|
|||||||
<a id="Matrix-readings"></a>
|
<a id="Matrix-readings"></a>
|
||||||
<h4>Readings</h4>
|
<h4>Readings</h4>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
=end html
|
=end html
|
||||||
=begin html_DE
|
=begin html_DE
|
||||||
|
|
||||||
<a id="Matrix"></a>
|
<a id="Matrix"></a>
|
||||||
<h3>Matrix</h3>
|
<h3>Matrix</h3>
|
||||||
<ul>
|
<ul>
|
||||||
@ -230,16 +233,16 @@ sub Initialize {
|
|||||||
<a id="Matrix-set-poll"></a>
|
<a id="Matrix-set-poll"></a>
|
||||||
<li><i>poll</i><br>
|
<li><i>poll</i><br>
|
||||||
Zunächst "0": Auf "1" startet die Empfangsschleife.</li>
|
Zunächst "0": Auf "1" startet die Empfangsschleife.</li>
|
||||||
<a id="Matrix-set-poll.fullstate"></a>
|
<a id="Matrix-set-pollFullstate"></a>
|
||||||
<li><i>poll.fullstate</i><br>
|
<li><i>pollFullstate</i><br>
|
||||||
Standard ist "0": Wenn poll.fullstate auf "1" gesetzt wird, werden beider nächsten Synchronisation alle Raumeigenschaften neu eingelesen.</li>
|
Standard ist "0": Wenn pollFullstate auf "1" gesetzt wird, werden beider nächsten Synchronisation alle Raumeigenschaften neu eingelesen.</li>
|
||||||
<a id="Matrix-set-question.start"></a>
|
<a id="Matrix-set-question"></a>
|
||||||
<li><i>question.start</i><br>
|
<li><i>question.start</i><br>
|
||||||
Frage in dem Raum des Attributs "MatrixMessage" stellen. Die erste Antwort steht im Reading "answer" und beendet die Frage.<br>
|
Frage in dem Raum des Attributs "MatrixMessage" stellen. Die erste Antwort steht im Reading "answer" und beendet die Frage.<br>
|
||||||
Als Wert wird entweder die Nummer einer vorbereiteten Frage übergeben oder eine komplette Frage in der Form<br>
|
Als Wert wird entweder die Nummer einer vorbereiteten Frage übergeben oder eine komplette Frage in der Form<br>
|
||||||
<code>Frage:Antwort 1:Antwort 2:....:Antwort n</code></li>
|
<code>Frage:Antwort 1:Antwort 2:....:Antwort n</code></li>
|
||||||
<a id="Matrix-set-question.end"></a>
|
<a id="Matrix-set-questionEnd"></a>
|
||||||
<li><i>question.end</i><br>
|
<li><i>questionEnd</i><br>
|
||||||
Die gestartete Frage ohne Antwort beenden. Entweder wird ohne Parameter die aktuelle Frage beendet oder mit einer Nachrichten-ID eine "verwaiste" Frage.</li>
|
Die gestartete Frage ohne Antwort beenden. Entweder wird ohne Parameter die aktuelle Frage beendet oder mit einer Nachrichten-ID eine "verwaiste" Frage.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
@ -269,11 +272,11 @@ sub Initialize {
|
|||||||
</li>
|
</li>
|
||||||
<a id="Matrix-attr-MatrixAnswer_"></a>
|
<a id="Matrix-attr-MatrixAnswer_"></a>
|
||||||
<li><i>MatrixAnswer_</i><br>
|
<li><i>MatrixAnswer_</i><br>
|
||||||
Antworten = Befehle ausführen ist noch nicht freigegeben</code>
|
Antworten = Befehle ausführen ist noch nicht freigegeben
|
||||||
</li>
|
</li>
|
||||||
<a id="Matrix-attr-MatrixAnswer__0-9__"></a>
|
<a id="Matrix-attr-MatrixAnswer__0-9__"></a>
|
||||||
<li><i>MatrixAnswer_[0-9]+</i><br>
|
<li><i>MatrixAnswer_[0-9]+</i><br>
|
||||||
Antworten = Befehle ausführen ist noch nicht freigegeben</code>
|
Antworten = Befehle ausführen ist noch nicht freigegeben
|
||||||
</li>
|
</li>
|
||||||
<a id="Matrix-attr-MatrixQuestion_"></a>
|
<a id="Matrix-attr-MatrixQuestion_"></a>
|
||||||
<li><i>MatrixQuestion_</i> <br>
|
<li><i>MatrixQuestion_</i> <br>
|
||||||
@ -301,17 +304,19 @@ sub Initialize {
|
|||||||
<a id="Matrix-readings"></a>
|
<a id="Matrix-readings"></a>
|
||||||
<h4>Readings</h4>
|
<h4>Readings</h4>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>device_id</b> - Geräte-ID unter der der MatrixBot registriert ist</li>
|
<li><b>deviceId</b> - Geräte-ID unter der der MatrixBot registriert ist</li>
|
||||||
<li><b>event_id</b> - ID der letzten Nachricht</li>
|
<li><b>eventId</b> - ID der letzten Nachricht</li>
|
||||||
<li><b>filter_id</b> - ID des Filters, der Voraussetzung für eine Longpoll-Verbindung zum Server ist</li>
|
<li><b>filterId</b> - ID des Filters, der Voraussetzung für eine Longpoll-Verbindung zum Server ist</li>
|
||||||
<li><b>home_server</b> - Rückmeldung des Servers unter welchem Namen er erreichbar ist</li>
|
<li><b>homeServer</b> - Rückmeldung des Servers unter welchem Namen er erreichbar ist</li>
|
||||||
<li><b>logintypes</b> - unterstützte Login-Möglichkeiten des Servers. Zur Zeit ist "password" die einzige unterstützte Version</li>
|
<li><b>logintypes</b> - unterstützte Login-Möglichkeiten des Servers. Zur Zeit ist "password" die einzige unterstützte Version</li>
|
||||||
<li><b>message</b> - letzte empfangene Nachricht</li>
|
<li><b>message</b> - letzte empfangene Nachricht</li>
|
||||||
<li><b>poll</b> - 0: kein Empfang, 1: Empfang eingeschaltet</li>
|
<li><b>poll</b> - 0: kein Empfang, 1: Empfang eingeschaltet</li>
|
||||||
<li><b>question_id</b> - ID der letzten Frage</li>
|
<li><b>question_id</b> - ID der letzten Frage</li>
|
||||||
<li><b>sender</b> - Sender der letzten Nachricht</li>
|
<li><b>sender</b> - Sender der letzten Nachricht</li>
|
||||||
<li><b>since</b> - Schlüssel vom Server bis zu welcher Nachricht der Empfang erfolgreich ist</li>
|
<li><b>since</b> - Schlüssel vom Server bis zu welcher Nachricht der Empfang erfolgreich ist</li>
|
||||||
<li><b>user_id</b> - Antwort des Servers welcher Account eingeloggt ist</li>
|
<li><b>userId</b> - Antwort des Servers welcher Account eingeloggt ist</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
</ul>
|
||||||
|
|
||||||
=end html_DE
|
=end html_DE
|
||||||
=cut
|
=cut
|
||||||
|
@ -2,7 +2,12 @@
|
|||||||
# Usage:
|
# Usage:
|
||||||
#
|
#
|
||||||
##########################################################################
|
##########################################################################
|
||||||
# $Id: Matrix.pm 21301 2022-11-06 12:52:00Z Man-fred $
|
# $Id: Matrix.pm 22821 2022-11-12 12:52:00Z Man-fred $
|
||||||
|
#
|
||||||
|
# from the developerpages:
|
||||||
|
# Verwendung von lowerCamelCaps für a) die Bezeichnungen der Behälter für Readings, Fhem und Helper und der Untereintraege,
|
||||||
|
# b) die Bezeichnungen der Readings,
|
||||||
|
# c) die Bezeichnungen der Attribute.
|
||||||
|
|
||||||
package FHEM::Devices::Matrix;
|
package FHEM::Devices::Matrix;
|
||||||
use strict;
|
use strict;
|
||||||
@ -163,7 +168,7 @@ sub Get {
|
|||||||
return PerformHttpRequest($hash, $cmd, '');
|
return PerformHttpRequest($hash, $cmd, '');
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "filter") {
|
elsif ($cmd eq "filter") {
|
||||||
return qq("get Matrix $cmd" needs a filter_id to request);
|
return qq("get Matrix $cmd" needs a filterId to request);
|
||||||
return PerformHttpRequest($hash, $cmd, $value);
|
return PerformHttpRequest($hash, $cmd, $value);
|
||||||
}
|
}
|
||||||
return "Unknown argument $cmd, choose one of logintypes filter sync wellknown";
|
return "Unknown argument $cmd, choose one of logintypes filter sync wellknown";
|
||||||
@ -180,7 +185,7 @@ sub Set {
|
|||||||
if ($cmd eq "msg") {
|
if ($cmd eq "msg") {
|
||||||
return PerformHttpRequest($hash, $cmd, $value);
|
return PerformHttpRequest($hash, $cmd, $value);
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "poll" || $cmd eq "poll.fullstate") {
|
elsif ($cmd eq "poll" || $cmd eq "pollFullstate") {
|
||||||
readingsSingleUpdate($hash, $cmd, $value, 1); # Readings erzeugen
|
readingsSingleUpdate($hash, $cmd, $value, 1); # Readings erzeugen
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "password") {
|
elsif ($cmd eq "password") {
|
||||||
@ -193,7 +198,7 @@ sub Set {
|
|||||||
elsif ($cmd eq "question") {
|
elsif ($cmd eq "question") {
|
||||||
return PerformHttpRequest($hash, $cmd, $value);
|
return PerformHttpRequest($hash, $cmd, $value);
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "question.end") {
|
elsif ($cmd eq "questionEnd") {
|
||||||
return PerformHttpRequest($hash, $cmd, $value);
|
return PerformHttpRequest($hash, $cmd, $value);
|
||||||
}
|
}
|
||||||
elsif ($cmd eq "register") {
|
elsif ($cmd eq "register") {
|
||||||
@ -206,7 +211,7 @@ sub Set {
|
|||||||
return PerformHttpRequest($hash, $cmd, '');
|
return PerformHttpRequest($hash, $cmd, '');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return "Unknown argument $cmd, choose one of filter:noArg password question question.end poll:0,1 poll.fullstate:0,1 msg register login:noArg refresh:noArg";
|
return "Unknown argument $cmd, choose one of filter:noArg password question questionEnd poll:0,1 pollFullstate:0,1 msg register login:noArg refresh:noArg";
|
||||||
}
|
}
|
||||||
|
|
||||||
#return "$opt set to $value. Try to get it.";
|
#return "$opt set to $value. Try to get it.";
|
||||||
@ -284,7 +289,7 @@ sub PerformHttpRequest($$$)
|
|||||||
$data{MATRIX}{"$name"}{"next_refresh"} = $now + 300;
|
$data{MATRIX}{"$name"}{"next_refresh"} = $now + 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $device_id = ReadingsVal($name, 'device_id', undef) ? ', "device_id":"'.ReadingsVal($name, 'device_id', undef).'"' : "";
|
my $deviceId = ReadingsVal($name, 'deviceId', undef) ? ', "deviceId":"'.ReadingsVal($name, 'deviceId', undef).'"' : "";
|
||||||
if ($def eq "logintypes"){
|
if ($def eq "logintypes"){
|
||||||
$param->{'url'} = $hash->{server}."/_matrix/client/r0/login";
|
$param->{'url'} = $hash->{server}."/_matrix/client/r0/login";
|
||||||
$param->{'method'} = 'GET';
|
$param->{'method'} = 'GET';
|
||||||
@ -304,7 +309,7 @@ sub PerformHttpRequest($$$)
|
|||||||
if ($def eq "login"){
|
if ($def eq "login"){
|
||||||
$param->{'url'} = $hash->{server}."/_matrix/client/v3/login";
|
$param->{'url'} = $hash->{server}."/_matrix/client/v3/login";
|
||||||
$param->{'data'} = '{"type":"m.login.password", "refresh_token": true, "identifier":{ "type":"m.id.user", "user":"'.$hash->{user}.'" }, "password":"'.$passwd.'"'
|
$param->{'data'} = '{"type":"m.login.password", "refresh_token": true, "identifier":{ "type":"m.id.user", "user":"'.$hash->{user}.'" }, "password":"'.$passwd.'"'
|
||||||
.$device_id.'}';
|
.$deviceId.'}';
|
||||||
}
|
}
|
||||||
if ($def eq "refresh"){
|
if ($def eq "refresh"){
|
||||||
$param->{'url'} = $hash->{server}.'/_matrix/client/v1/refresh';
|
$param->{'url'} = $hash->{server}.'/_matrix/client/v1/refresh';
|
||||||
@ -343,32 +348,32 @@ sub PerformHttpRequest($$$)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($def eq "question.end"){
|
if ($def eq "questionEnd"){
|
||||||
$value = ReadingsVal($name, "question_id", "") if (!$value);
|
$value = ReadingsVal($name, "question_id", "") if (!$value);
|
||||||
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/rooms/'.AttrVal($name, 'MatrixMessage', '!!').'/send/m.poll.end?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/rooms/'.AttrVal($name, 'MatrixMessage', '!!').'/send/m.poll.end?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
||||||
# ""'.ReadingsVal($name, 'questionEventId', '!!').'
|
# ""'.ReadingsVal($name, 'questionEventId', '!!').'
|
||||||
$param->{'data'} = '{"m.relates_to": {"rel_type": "m.reference","event_id": "'.$value.'"},"org.matrix.msc3381.poll.end": {},'.
|
$param->{'data'} = '{"m.relates_to": {"rel_type": "m.reference","eventId": "'.$value.'"},"org.matrix.msc3381.poll.end": {},'.
|
||||||
'"org.matrix.msc1767.text": "Antort '.ReadingsVal($name, "answer", "").' erhalten von '.ReadingsVal($name, "sender", "").'"}';
|
'"org.matrix.msc1767.text": "Antort '.ReadingsVal($name, "answer", "").' erhalten von '.ReadingsVal($name, "sender", "").'"}';
|
||||||
}
|
}
|
||||||
if ($def eq "sync"){
|
if ($def eq "sync"){
|
||||||
my $since = ReadingsVal($name, "since", undef) ? '&since='.ReadingsVal($name, "since", undef) : "";
|
my $since = ReadingsVal($name, "since", undef) ? '&since='.ReadingsVal($name, "since", undef) : "";
|
||||||
my $full_state = ReadingsVal($name, "poll.fullstate",undef);
|
my $full_state = ReadingsVal($name, "pollFullstate",undef);
|
||||||
if ($full_state){
|
if ($full_state){
|
||||||
$full_state = "&full_state=true";
|
$full_state = "&full_state=true";
|
||||||
readingsSingleUpdate($hash, "poll.fullstate", 0, 1);
|
readingsSingleUpdate($hash, "pollFullstate", 0, 1);
|
||||||
} else {
|
} else {
|
||||||
$full_state = "";
|
$full_state = "";
|
||||||
}
|
}
|
||||||
$param->{'url'} = $hash->{server}.'/_matrix/client/r0/sync?access_token='.$data{MATRIX}{"$name"}{"access_token"}.$since.$full_state.'&timeout=50000&filter='.ReadingsVal($name, 'filter_id',0);
|
$param->{'url'} = $hash->{server}.'/_matrix/client/r0/sync?access_token='.$data{MATRIX}{"$name"}{"access_token"}.$since.$full_state.'&timeout=50000&filter='.ReadingsVal($name, 'filterId',0);
|
||||||
$param->{'method'} = 'GET';
|
$param->{'method'} = 'GET';
|
||||||
$param->{'timeout'} = 60;
|
$param->{'timeout'} = 60;
|
||||||
}
|
}
|
||||||
if ($def eq "filter"){
|
if ($def eq "filter"){
|
||||||
if ($value){ # get
|
if ($value){ # get
|
||||||
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/user/'.ReadingsVal($name, "user_id",0).'/filter/'.$value.'?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/user/'.ReadingsVal($name, "userId",0).'/filter/'.$value.'?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
||||||
$param->{'method'} = 'GET';
|
$param->{'method'} = 'GET';
|
||||||
} else {
|
} else {
|
||||||
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/user/'.ReadingsVal($name, "user_id",0).'/filter?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
$param->{'url'} = $hash->{server}.'/_matrix/client/v3/user/'.ReadingsVal($name, "userId",0).'/filter?access_token='.$data{MATRIX}{"$name"}{"access_token"};
|
||||||
$param->{'data'} = '{';
|
$param->{'data'} = '{';
|
||||||
$param->{'data'} .= '"event_fields": ["type","content","sender"],';
|
$param->{'data'} .= '"event_fields": ["type","content","sender"],';
|
||||||
$param->{'data'} .= '"event_format": "client", ';
|
$param->{'data'} .= '"event_format": "client", ';
|
||||||
@ -443,9 +448,9 @@ sub ParseHttpResponse($)
|
|||||||
$nextRequest = "";#"reg2";
|
$nextRequest = "";#"reg2";
|
||||||
}
|
}
|
||||||
if ($param->{code} == 200 && ($def eq "reg2" || $def eq "login" || $def eq "refresh")){
|
if ($param->{code} == 200 && ($def eq "reg2" || $def eq "login" || $def eq "refresh")){
|
||||||
readingsBulkUpdate($hash, "user_id", $decoded->{'user_id'}) if ($decoded->{'user_id'});
|
readingsBulkUpdate($hash, "userId", $decoded->{'userId'}) if ($decoded->{'userId'});
|
||||||
readingsBulkUpdate($hash, "home_server", $decoded->{'home_server'}) if ($decoded->{'home_server'});
|
readingsBulkUpdate($hash, "homeServer", $decoded->{'homeServer'}) if ($decoded->{'homeServer'});
|
||||||
readingsBulkUpdate($hash, "device_id", $decoded->{'device_id'}) if ($decoded->{'device_id'});
|
readingsBulkUpdate($hash, "deviceId", $decoded->{'deviceId'}) if ($decoded->{'deviceId'});
|
||||||
readingsBulkUpdate($hash, "last_register", $param->{code}) if $def eq "reg2";
|
readingsBulkUpdate($hash, "last_register", $param->{code}) if $def eq "reg2";
|
||||||
readingsBulkUpdate($hash, "last_login", $param->{code}) if $def eq "login";
|
readingsBulkUpdate($hash, "last_login", $param->{code}) if $def eq "login";
|
||||||
readingsBulkUpdate($hash, "last_refresh", $param->{code}) if $def eq "refresh";
|
readingsBulkUpdate($hash, "last_refresh", $param->{code}) if $def eq "refresh";
|
||||||
@ -500,7 +505,7 @@ sub ParseHttpResponse($)
|
|||||||
if (AttrVal($name, 'MatrixSender', '') =~ $sender){
|
if (AttrVal($name, 'MatrixSender', '') =~ $sender){
|
||||||
readingsBulkUpdate($hash, "message", $message);
|
readingsBulkUpdate($hash, "message", $message);
|
||||||
readingsBulkUpdate($hash, "sender", $sender);
|
readingsBulkUpdate($hash, "sender", $sender);
|
||||||
$nextRequest = "question.end" ;
|
$nextRequest = "questionEnd" ;
|
||||||
# command
|
# command
|
||||||
Get_Message($name, $data{MATRIX}{"$name"}{"question"}, $message);
|
Get_Message($name, $data{MATRIX}{"$name"}{"question"}, $message);
|
||||||
}
|
}
|
||||||
@ -521,19 +526,19 @@ sub ParseHttpResponse($)
|
|||||||
readingsBulkUpdate($hash, "logintypes", $types);
|
readingsBulkUpdate($hash, "logintypes", $types);
|
||||||
}
|
}
|
||||||
if ($def eq "filter"){
|
if ($def eq "filter"){
|
||||||
readingsBulkUpdate($hash, "filter_id", $decoded->{'filter_id'}) if ($decoded->{'filter_id'});
|
readingsBulkUpdate($hash, "filterId", $decoded->{'filterId'}) if ($decoded->{'filterId'});
|
||||||
}
|
}
|
||||||
if ($def eq "msg" ){
|
if ($def eq "msg" ){
|
||||||
readingsBulkUpdate($hash, "event_id", $decoded->{'event_id'}) if ($decoded->{'event_id'});
|
readingsBulkUpdate($hash, "eventId", $decoded->{'eventId'}) if ($decoded->{'eventId'});
|
||||||
#m.relates_to
|
#m.relates_to
|
||||||
}
|
}
|
||||||
if ($def eq "question"){
|
if ($def eq "question"){
|
||||||
readingsBulkUpdate($hash, "question_id", $decoded->{'event_id'}) if ($decoded->{'event_id'});
|
readingsBulkUpdate($hash, "question_id", $decoded->{'eventId'}) if ($decoded->{'eventId'});
|
||||||
#m.relates_to
|
#m.relates_to
|
||||||
}
|
}
|
||||||
if ($def eq "question.end"){
|
if ($def eq "questionEnd"){
|
||||||
readingsBulkUpdate($hash, "event_id", $decoded->{'event_id'}) if ($decoded->{'event_id'});
|
readingsBulkUpdate($hash, "eventId", $decoded->{'eventId'}) if ($decoded->{'eventId'});
|
||||||
readingsBulkUpdate($hash, "question_id", "") if ($decoded->{'event_id'});
|
readingsBulkUpdate($hash, "question_id", "") if ($decoded->{'eventId'});
|
||||||
#m.relates_to
|
#m.relates_to
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user