mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-06 06:36:36 +00:00
change: import json2nameValue
git-svn-id: https://svn.fhem.de/fhem/trunk@17732 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
e0a76f7afd
commit
7521e122e9
@ -30,6 +30,12 @@
|
|||||||
#
|
#
|
||||||
# CHANGE LOG
|
# CHANGE LOG
|
||||||
#
|
#
|
||||||
|
# 11.11.2018 0.9.9
|
||||||
|
# change : import fuer json2nameValue aus main.
|
||||||
|
# Damit geht JSON-Unterstuetzung ohne Prefix 'main::'
|
||||||
|
# Beispiel:
|
||||||
|
# json:topic=/XTEST/json json:expression={json2nameValue($value)}
|
||||||
|
#
|
||||||
# 04.11.2018 0.9.9
|
# 04.11.2018 0.9.9
|
||||||
# bugfix : Bei Mehrfachdefinitionen wie 'a|b|c:topic=some/$reading/thing'
|
# bugfix : Bei Mehrfachdefinitionen wie 'a|b|c:topic=some/$reading/thing'
|
||||||
# wurden beim Treffer alle genannten Readings aktualisiert
|
# wurden beim Treffer alle genannten Readings aktualisiert
|
||||||
@ -324,6 +330,7 @@ BEGIN {
|
|||||||
gettimeofday
|
gettimeofday
|
||||||
InternalTimer
|
InternalTimer
|
||||||
RemoveInternalTimer
|
RemoveInternalTimer
|
||||||
|
json2nameValue
|
||||||
CTRL_ATTR_NAME_DEFAULTS
|
CTRL_ATTR_NAME_DEFAULTS
|
||||||
CTRL_ATTR_NAME_ALIAS
|
CTRL_ATTR_NAME_ALIAS
|
||||||
CTRL_ATTR_NAME_PUBLISH
|
CTRL_ATTR_NAME_PUBLISH
|
||||||
@ -1174,7 +1181,7 @@ sub searchDeviceForTopic($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Erstellt RexExp-Definitionen zum Erkennen der ankommenden Topics
|
# Erstellt RexExp-Definitionen zum Erkennen der ankommenden Topics
|
||||||
# Platzhaltern werden entsprechend verarbeitet
|
# Platzhalter werden entsprechend verarbeitet
|
||||||
sub createRegexpForTopic($) {
|
sub createRegexpForTopic($) {
|
||||||
my $t = shift;
|
my $t = shift;
|
||||||
$t =~ s|#$|.\*|;
|
$t =~ s|#$|.\*|;
|
||||||
@ -2663,6 +2670,8 @@ sub onmessage($$$) {
|
|||||||
The variable $name, unlike $reading, may be affected by the aliases defined in 'mqttAlias'. Also use of $base is allowed.<br/>
|
The variable $name, unlike $reading, may be affected by the aliases defined in 'mqttAlias'. Also use of $base is allowed.<br/>
|
||||||
When using 'stopic', the 'set' command is executed as 'set <dev> <reading> <value>'.
|
When using 'stopic', the 'set' command is executed as 'set <dev> <reading> <value>'.
|
||||||
For something like 'set <dev> <value>' 'state' should be used as reading-name.</p>
|
For something like 'set <dev> <value>' 'state' should be used as reading-name.</p>
|
||||||
|
<p>The often requested JSON support can be easily realized with the help of 'expression'.
|
||||||
|
An already existing method in fhem.pl (json2nameValue) works well. The parameter should be '$message'.</p>
|
||||||
<p>Examples:<br/>
|
<p>Examples:<br/>
|
||||||
<code>attr <dev> mqttSubscribe temperature:topic=/TEST/temperature test:qos=0 *:topic={"/TEST/$reading/value"} <br/>
|
<code>attr <dev> mqttSubscribe temperature:topic=/TEST/temperature test:qos=0 *:topic={"/TEST/$reading/value"} <br/>
|
||||||
attr <dev> mqttSubscribe desired-temperature:stopic={"/TEST/temperature/set"}<br/>
|
attr <dev> mqttSubscribe desired-temperature:stopic={"/TEST/temperature/set"}<br/>
|
||||||
@ -2670,6 +2679,7 @@ sub onmessage($$$) {
|
|||||||
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={$value="x"}<br/>
|
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={$value="x"}<br/>
|
||||||
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
|
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
|
||||||
attr <dev> mqttSubscribe verbose:atopic={"/TEST/light/verbose"}
|
attr <dev> mqttSubscribe verbose:atopic={"/TEST/light/verbose"}
|
||||||
|
attr <dev> mqttSubscribe json:topic=/XTEST/json json:expression={json2nameValue($message)}
|
||||||
</code></p>
|
</code></p>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
@ -3054,6 +3064,8 @@ sub onmessage($$$) {
|
|||||||
Auch Verwendung von $base ist erlaubt.<br/>
|
Auch Verwendung von $base ist erlaubt.<br/>
|
||||||
Bei Verwendung von 'stopic' wird das 'set'-Befehl als 'set <dev> <reading> <value>' ausgefuert.
|
Bei Verwendung von 'stopic' wird das 'set'-Befehl als 'set <dev> <reading> <value>' ausgefuert.
|
||||||
Fuer ein 'set <dev> <value>' soll als Reading-Name 'state' verwendet werden.</p>
|
Fuer ein 'set <dev> <value>' soll als Reading-Name 'state' verwendet werden.</p>
|
||||||
|
<p>Die oft angefragte JSON-Unterstützung kann einfach mit Hilfe von 'expression' realisiert werden.
|
||||||
|
Dafür eignet sich eine in fhem.pl bereits vorhandene Methode: json2nameValue. Als Parameter soll $message verwendet werden.</p>
|
||||||
<p>Beispiele:<br/>
|
<p>Beispiele:<br/>
|
||||||
<code>attr <dev> mqttSubscribe temperature:topic=/TEST/temperature test:qos=0 *:topic={"/TEST/$reading/value"} <br/>
|
<code>attr <dev> mqttSubscribe temperature:topic=/TEST/temperature test:qos=0 *:topic={"/TEST/$reading/value"} <br/>
|
||||||
attr <dev> mqttSubscribe desired-temperature:stopic={"/TEST/temperature/set"}<br/>
|
attr <dev> mqttSubscribe desired-temperature:stopic={"/TEST/temperature/set"}<br/>
|
||||||
@ -3061,6 +3073,7 @@ sub onmessage($$$) {
|
|||||||
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={$value="x"}<br/>
|
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={$value="x"}<br/>
|
||||||
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
|
attr <dev> mqttSubscribe state:stopic={"/TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"}
|
||||||
attr <dev> mqttSubscribe verbose:atopic={"/TEST/light/verbose"}
|
attr <dev> mqttSubscribe verbose:atopic={"/TEST/light/verbose"}
|
||||||
|
attr <dev> mqttSubscribe json:topic=/XTEST/json json:expression={json2nameValue($message)}
|
||||||
</code></p>
|
</code></p>
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user