Hi,
kann man den Wert eines Readings ändern?
Also das Reading "false" auf "aus" und das Reading "true" auf "ein".
https://commandref.fhem.de/commandref_DE.html#setreading (https://commandref.fhem.de/commandref_DE.html#setreading)
Zitat von: rabehd am 24 Juni 2022, 09:36:22
https://commandref.fhem.de/commandref_DE.html#setreading (https://commandref.fhem.de/commandref_DE.html#setreading)
Ich vermute, das meint er nicht, und auch nicht "readingsChange" (was in anderen Fällen hilfreich sein kann).
Zum eigentlichen:
Hat es sich eigentlich nioch nicht rumgesprochen, dass screenshots für FHEM-Devices Helfern nicht weiterhelfen...?!?
Bei MQTT2_DEVICE ist es auch wichtig zu wissen, ob das im Klartext kommt oder als JSON...
Für JSON - aus der aktuellen Version des z2m-Türkontakts (?):
attr DEVICE readingList DEVICETOPIC:.* { my $ret=json2nameValue($EVENT,'',$JSONMAP); $ret->{state}=$ret->{state} eq 'true' ? 'closed' : 'open'; return $ret }
Und hier ein Beispiel für "Klartext":
https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#Bedingte_Hash-R.C3.BCckgaben (https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#Bedingte_Hash-R.C3.BCckgaben)
Muss man halt anpassen, aber ohne konkrete input kein konkreter output...
EDIT: "ein" und "aus" sollte man m.E. vermeiden, v.a. dann, wenn man das schalten kann. Besser on/off verwenden!
Zitat von: punker am 24 Juni 2022, 09:23:27
kann man den Wert eines Readings ändern?
Also das Reading "false" auf "aus" und das Reading "true" auf "ein".
Du willst doch nicht den tatsächlichen Wert ändern, sondern die Darstellung des Wertes.
In Deinem Fall kannst Du wahrscheinlich einfach das Attribut eventMap verwenden.
Zitat von: betateilchen am 24 Juni 2022, 09:51:22
Du willst doch nicht den tatsächlichen Wert ändern, sondern die Darstellung des Wertes.
In Deinem Fall kannst Du wahrscheinlich einfach das Attribut eventMap verwenden.
Genau, nur die Darstellung.
Zitat von: punker am 24 Juni 2022, 09:55:16
Genau, nur die Darstellung.
Noch genauer dann vermutlich: die Darstellung im DeviceOverview in FHEMWEB?
Dann gäbe es noch die Option, einfach mit (mehrzeiligem) stateFormat/devStateIcon zu arbeiten...
Hab jetzt mal das Attribut eventMap verwendet.
attr MQTT2_mqtt2server eventMap false:aus true:ein
Sobald das Reading sich ändert wird der Wert korrekt ersetzt. Also von false auf ein. Ok
Geht aber nach kurzer Zeit wieder auf den Originalwert false zurück.
Wieso?
Weil eventMap nur "Kosmetik" ist und eben gerade den Ausgangswert nicht ändert...
Aber der Device-Name ist komisch :o . Spricht denn was dagegen, "die volle Wahrheit" zu zeigen?!?
Zitat von: Beta-User am 24 Juni 2022, 11:47:06
Weil eventMap nur "Kosmetik" ist und eben gerade den Ausgangswert nicht ändert...
Aber der Device-Name ist komisch :o . Spricht denn was dagegen, "die volle Wahrheit" zu zeigen?!?
Volle Wahrheit - ein List des Devices oder was?
Save config ?
Floorplans
RSS
Compizimmer
System
Garten
Zimmer
Energie
Kalender
Benzinpreise
Devices
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
PoolPumpe
WärmePumpe
GehwegLicht
Check Update
Update
Neustart
AUSSCHALTEN
Historie löschen
Internals:
CID mqtt2server
DEF mqtt2server
FUUID 62ad68ec-f33f-55ca-b877-ef26ee960d6adeb5
IODev mqtt2server
LASTInputDev mqtt2server
MSGCNT 327
NAME MQTT2_mqtt2server
NR 811
STATE pH - 7.22 / redox - 644 mV
TYPE MQTT2_DEVICE
eventCount 327
mqtt2server_CONN mqtt2server_192.168.2.23_60040
mqtt2server_MSGCNT 327
mqtt2server_TIME 2022-06-24 11:39:31
READINGS:
2022-06-24 10:22:57 IODev mqtt2server
2022-06-24 10:36:49 connection true
2022-06-24 11:20:23 pH 7.22
2022-06-24 11:02:36 phpumpe false
2022-06-24 11:39:31 redox 644
2022-06-24 11:00:06 redoxpumpe false
Attributes:
autocreate 1
bridgeRegexp (tele|stat|shellies|valetudo|Advantech)/([^/]+)/.*:.* "$2"
(shellyp(lus|ro4pm)[^/:_]{4,}+)/.*:.* "$1"
zigbee2mqtt/bridge/.*:.* "zigbee2mqtt"
sonos/connected.* "sonos"
tvheadend/[^/:]+.* "tvheadend"
milight/LWT:.* "milight"
(ESPClient_[^/]+)/.*:.* "$1"
(ebusd[^/]*)/global/.*:.* "$1"
[^/]+/(ems-esp[^/]+)/start:.* "$1"
(mygateway[\d]+)-(in|out)/.* "$1"
(wallpanel|wled)/([^/]+)/.*:.* "$1_$2"
go-eCharger/([^/]+)/.*:.* "go_eCharger_$1"
owntracks/[^/]+/([^/:]+).* "owntracks_$1"
home/(O[^/]*M[^/]*G[^/]*)/LWT:.* "$1"
instar/([^/]+)/.*:.* "instar_$1"
homeassistant/.*/config:.* ""
tasmota/discovery/[^/:]+/(config|sensors):.* ""
eventMap false:aus true:ein
icon mqtt_bridge_2
model MQTT2_CLIENT_general_bridge
readingList mqtt2server:ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/pH:.* pH
mqtt2server:ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redox:.* redox
mqtt2server:ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/phpumpe:.* phpumpe
mqtt2server:ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redoxpumpe:.* redoxpumpe
mqtt2server:ph803w/0/info/connection:.* connection
room System
setList clear_all:noArg {fhem("deleteattr $NAME readingList; deletereading -q $NAME (?!associatedWith|IODev).*");return undef}
setStateList on off
stateFormat {sprintf("pH - %.2f / redox - %.f mV",ReadingsVal($name,"pH",0),ReadingsVal($name,"redox",0))}
Zitat von: punker am 24 Juni 2022, 11:50:08
Volle Wahrheit - ein List des Devices oder was?
...das hilft...
Wer ist denn auf diese verwirrende Idee gekommen, einen irgendwo ansässigen Dienst ausgerechnet unter dem Namen deines MQTT2-Servers in FHEM publishen zu lassen...? Das würde ich ändern...
Ansonsten: Trenne beide Devices auf, falls das "General Bridge"-Ding überhaupt noch irgendeine aktuelle Funktion haben sollte... (Sonst: löschen!)
Das den Pool betr. Zeug würde ich so zusammenfassen (und die Bridge bereinigen; für RAW-Import):
deleteattr MQTT2_mqtt2server readingList
deleteattr MQTT2_mqtt2server stateFormat
defmod Poolsensor MQTT2_DEVICE
attr Poolsensor stateFormat {sprintf("pH - %.2f / redox - %.f mV",ReadingsVal($name,"pH",0),ReadingsVal($name,"redox",0))}
attr Poolsensor readingList ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/pH:.* pH\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redox:.* redox\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/phpumpe:.* { $EVENT eq 'true'? {phpumpe=>'on'} : {phpumpe=>'off'}}\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redoxpumpe:.* { $EVENT eq 'true'? {redoxpumpe=>'on'} : {redoxpumpe=>'off'}}\
ph803w/0/info/connection:.* { $EVENT eq 'true'? {connection=>'Online'} : {connection=>'Offline'}}
@Beta-User
Danke dir
Ist ja gaaanz einfach - wenn man weiß wie's geht! :)
:) Gerne.
Ohne Spielmaterial ist es halt schwierig...
Hier noch was, was dir vielleicht auch gefällt:
defmod Poolsensor MQTT2_DEVICE
attr Poolsensor devStateIcon Online:mqtt_bridge_2@#1de223 Offline:mqtt_bridge_2@red
attr Poolsensor readingList ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/pH:.* pH\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redox:.* redox\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/ph/phpumpe:.* { $EVENT eq 'true'? {phpumpe=>'on'} : {phpumpe=>'off'}}\
ph803w/0/ZwtLW6kWjFIsracoyKX9uI/redox/redoxpumpe:.* { $EVENT eq 'true'? {redoxpumpe=>'on'} : {redoxpumpe=>'off'}}\
ph803w/0/info/connection:.* { $EVENT eq 'true'? {connection=>'Online'} : {connection=>'Offline'}}
attr Poolsensor stateFormat connection\
redoxpumpe\
PH: pH / red: redox mV