Hallo Experten,
ich hab folgendes notify:
Internals:
CFGFN
DEF MQTT2_inFactory_TH_229:temperature_C:.* {system("curl -s -o /dev/null http://192.168.178.50/ext_t?temp=$EVTPART1")}
FUUID 6366552d-f33f-f0f2-f894-ee468600d771fd8a
NAME nKuecheTemp
NOTIFYDEV MQTT2_inFactory_TH_229
NR 524
NTFY_ORDER 50-nKuecheTemp
REGEXP MQTT2_inFactory_TH_229:temperature_C:.*
STATE 2022-11-05 14:14:47
TRIGGERTIME 1667654087.441
TYPE notify
eventCount 4
READINGS:
2022-11-05 14:10:10 state active
2022-11-05 14:14:47 triggeredByDev MQTT2_inFactory_TH_229
2022-11-05 14:14:47 triggeredByEvent temperature_C: 22.3
Attributes:
Dieses notify informiert das Heikörperthermostat über die Raumtemperatur.
Es funktioniert auch alles soweit.
Nur der Temperatur-Sensor ist was billiges. Er sendet alle 70 Sekunden die Temperatur mehrfach und jetzt wird mir mein Logfile zugemüllt:
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:42 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:43 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:44 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:36:45 3: nKuecheTemp return value: -1
2022.11.05 14:37:55 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:57 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:58 3: nKuecheTemp return value: -1
2022.11.05 14:37:59 3: nKuecheTemp return value: -1
2022.11.05 14:37:59 3: nKuecheTemp return value: -1
2022.11.05 14:37:59 3: nKuecheTemp return value: -1
2022.11.05 14:37:59 3: nKuecheTemp return value: -1
2022.11.05 14:38:00 3: nKuecheTemp return value: -1
2022.11.05 14:38:00 3: nKuecheTemp return value: -1
2022.11.05 14:38:00 3: nKuecheTemp return value: -1
2022.11.05 14:38:00 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:02 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:03 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:38:04 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:07 3: nKuecheTemp return value: -1
2022.11.05 14:39:09 3: nKuecheTemp return value: -1
2022.11.05 14:39:09 3: nKuecheTemp return value: -1
2022.11.05 14:39:09 3: nKuecheTemp return value: -1
2022.11.05 14:39:09 3: nKuecheTemp return value: -1
2022.11.05 14:39:11 3: nKuecheTemp return value: -1
2022.11.05 14:39:11 3: nKuecheTemp return value: -1
2022.11.05 14:39:14 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:16 3: nKuecheTemp return value: -1
2022.11.05 14:39:17 3: nKuecheTemp return value: -1
2022.11.05 14:39:17 3: nKuecheTemp return value: -1
2022.11.05 14:39:17 3: nKuecheTemp return value: -1
2022.11.05 14:39:19 3: nKuecheTemp return value: -1
2022.11.05 14:39:19 3: nKuecheTemp return value: -1
2022.11.05 14:39:21 3: nKuecheTemp return value: -1
2022.11.05 14:39:24 3: nKuecheTemp return value: -1
2022.11.05 14:39:24 3: nKuecheTemp return value: -1
2022.11.05 14:39:24 3: nKuecheTemp return value: -1
2022.11.05 14:39:26 3: nKuecheTemp return value: -1
2022.11.05 14:39:26 3: nKuecheTemp return value: -1
2022.11.05 14:39:26 3: nKuecheTemp return value: -1
2022.11.05 14:39:28 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:31 3: nKuecheTemp return value: -1
2022.11.05 14:39:33 3: nKuecheTemp return value: -1
2022.11.05 14:39:35 3: nKuecheTemp return value: -1
2022.11.05 14:39:36 3: nKuecheTemp return value: -1
Eigentlich wollte ich die Ausgabe von curl mit "-s -o /dev/null" zum Schweigen bringen, deswegen kommt wohl auch -1 zurück. Kann man den Log-Müll irgendwie verhindern? Eigentlich wäre es am Besten, wenn nur eine Temperaturänderung gesendet wird, und diese dann (evtl.) trotzdem nicht ins Logfile kommt.
TIA, Nico
system() liefert IMMER -1 zurück.
https://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html
Also einfach "wget ... > 2>&1 > /dev/null" inkl. Anführungszeichen.
Weiterer Vorteil: blockiert nicht.
Aber es gibt auch was in fhem: HTTPUtils
https://wiki.fhem.de/wiki/HttpUtils
https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_NonblockingGet
Und ich würde beim Sensor noch über event-on-change-reading nachdenken, dann gibt es Events auch nur, wenn sich der Wert geändert hat...
https://wiki.fhem.de/wiki/Event-on-change-reading
Gruß, Joachim
Hi,
die Meldung liefert der Systemaufruf. Das sollte abhelfen.
{system("curl -s -o /dev/null http://192.168.178.50/ext_t?temp=$EVTPART1");; return undef}
Aber Du solltest das Sperrfeuer unterbinden, im Interesse für Dein System.
Der sendet 14 mal die Sekunde!
erste Maßnahme :attr event-on-change-reading setzen.
Dann schauen ob Du den MQTT Traffic verringern kannst.
Edit: zu langsam ;D
Gruß Otto
Zitat von: Otto123 am 05 November 2022, 14:57:56
Edit: zu langsam ;D
:)
Irgendwann muss ich ja auch mal schneller sein ;)
Gruß, Joachim
Warum macht man sowas überhaupt über einen Systemaufruf anstatt mit FHEM Bordmitteln aus den HttpUtils?
Super Sache, Danke!
event-on-change-reading war das, was ich gesucht hab. Musste mich da erstmal reinfuchsen, aber das Attribut mit "temperature_C,humidity,battery_ok" gefüllt sollte jetzt nur noch ein Ereignis auslösen, wenn sich einer der Werte ändert (die Werte werden in die DB geschrieben und im Dashboard schön grafisch dargestellt).
Und mit
Zitat von: Otto123 am 05 November 2022, 14:57:56
{system("curl -s -o /dev/null http://192.168.178.50/ext_t?temp=$EVTPART1");; return undef}
ist jetzt auch das Logfile nicht mehr vom Bersten bedroht.
Zitat von: MadMax-FHEM am 05 November 2022, 14:54:29
Also einfach "wget ... > 2>&1 > /dev/null" inkl. Anführungszeichen.
Das hab ich irgendwie alles probiert (wget -q zB). Ohne system() ist nichts beim Thermostat angekommen.
Zitat von: MadMax-FHEM am 05 November 2022, 14:54:29
https://wiki.fhem.de/wiki/HttpUtils
https://wiki.fhem.de/wiki/HttpUtils#HttpUtils_NonblockingGet
scheint mir für den Fall übertrieben. Ich hab zumindest nichts einfaches gefunden, um die Erstellung des Hashs mit Funktionsaufruf in einen lesbaren Einzeiler in das DEF vom Notify zu bekommen. Schau ich mir aber nochmal genauer an. (Perl ist irgendwie nicht so meins...)
Danke nochmal!
Nico
Du musst ja nicht gleich die komplizierteste Funktion verwenden, GetFileFromURL() wäre für Deinen Zweck völlig ausreichend. Da musst Du nur die url angeben.
Zitat von: ocin4 am 05 November 2022, 15:42:25
Das hab ich irgendwie alles probiert (wget -q zB). Ohne system() ist nichts beim Thermostat angekommen.
Dann war der Aufruf eben falsch.
Stand etwas im Log?
Und es ging hier nicht um -q quiet sondern darum, dass man System-Aufrufe OHNE system() (was -1 liefert) NONBLOCKING ausführen lassen kann, indem man den Aufruf einfach in Anführungszeichen packt...
Den Link hast du verfolgt/gelesen?
Und wenn du NonBlockingGet für übertrieben hälsts: musst du wissen. Bzw. siehe die Antwort von betateilchen...
Wäre halt auch NONBLOCKING...
EDIT: GetFileFromUrl aber nicht?
Der Aufruf, wie du ihn (immer noch) hast blockiert halt...
Gruß, Joachim
Zitat von: MadMax-FHEM am 05 November 2022, 15:50:50
Der Aufruf, wie du ihn (immer noch) hast blockiert halt...
Das ist doch in diesem Einsatzszenario völlig bedeutungslos.
Lasst doch mal die Kirche im Dorf.
???
---
Zitat von: betateilchen am 05 November 2022, 16:25:29
Das ist doch in diesem Einsatzszenario völlig bedeutungslos.
Lasst doch mal die Kirche im Dorf.
???
---
Das kommt ja wohl auf die Gegenstelle an...
Ja, sollte (ist verm. in dem Fall) kein Problem sein...
...aber es gibt ja auch andere Gegenstellen.
Und: der Hinweis darf ja auch (und wird ja wohl auch) (gerne) "ignoriert" werden... ;)
EDIT: korrekt ist er allemal... 8)
Gruß, Joachim
Mir macht eher Sorge, warum dieser Sensor jede Minute 48 mal das notify triggert. :o :o :o
Vor allem mit einem Suchmuster, was mir ok scheint: MQTT2_inFactory_TH_229:temperature_C:.*
event-on-change-reading beseitigt jetzt das symptom - aber wo ist die Ursache.
Kannst Du Dir das Device mal im Eventmonitor anschauen?
Was ist das für eine Büchse?
Hallo,
die Definition des Notifys sieht jetzt so aus:
MQTT2_inFactory_TH_229:temperature_C:.* {GetFileFromURL("http://192.168.178.50/ext_t?temp=$EVTPART1", 1);; return undef}
Also mit fhem-Bordmitteln gelöst. Das "return undef" gefällt mir nicht so, aber sonst hab ich bei jeder Temperaturänderung einen Log-Eintrag
2022.11.05 16:38:25 3: nKuecheTemp return value: {"ok": true}
Loglevel 0 ändert daran auch nix. Mir würde es gefallen, wenn er einen Eintrag schreibt, wenn was schief gegangen ist, aber ob das was nützt, wenn ich nicht regelmäßig ins Logfile schaue... Eher beschwert sich meine Frau, dass es in der Küche kalt bleibt...
Ich hab den Timeout auf eine Sekunde gestellt. Wenn mein fhem-System also eine Sekunde steht, weil zB das Thermostat nicht erreichbar ist, komm ich damit zurecht. Oder hab ich bzgl Blockieren was falsch verstanden?
Danke nochmal!
Nico
Zitat von: Otto123 am 05 November 2022, 16:47:05
Mir macht eher Sorge, warum dieser Sensor jede Minute 48 mal das notify triggert. :o :o :o
Kannst Du Dir das Device mal im Eventmonitor anschauen?
Der Senor hängt via MQTT an fhem.
mosquitto_sub -v -t sensors/# |grep inFactory-TH/229
liefert mit jedem Blinken des Sensors
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:21
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:21
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:21
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:22
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:22
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
sensors/rtl_433/inFactory-TH/229/C2/time 2022-11-05T16:55:22
sensors/rtl_433/inFactory-TH/229/C2/protocol 91
sensors/rtl_433/inFactory-TH/229/C2/id 229
sensors/rtl_433/inFactory-TH/229/C2/channel 2
sensors/rtl_433/inFactory-TH/229/C2/battery_ok 1
sensors/rtl_433/inFactory-TH/229/C2/temperature_F 69.8
sensors/rtl_433/inFactory-TH/229/C2/humidity 52
sensors/rtl_433/inFactory-TH/229/C2/mic CRC
Also alles sechs Mal.
Zitat von: Otto123 am 05 November 2022, 16:47:05
Was ist das für eine Büchse?
inFactory Funk-Außensensor für Funkwetterstationen der FWS-Serie, IP44, 60 m, war mal bei Pearl (https://www.pearl.de/a-NC3982.shtml (https://www.pearl.de/a-NC3982.shtml)) für 5 € das Stück in der Werbung. Ich hab davon 6 im Haus.
Zeigst Du mal ein list MQTT2_inFactory_TH_229
Annahme: Du erzeugst temperature_C mit einem userReadings ohne trigger?
Zitat von: Otto123 am 05 November 2022, 17:01:49
Zeigts Du mal ein list MQTT2_inFactory_TH_229
Internals:
CID inFactory-TH_229
DEF inFactory-TH_229
FUUID 632c1033-f33f-f0f2-0436-cf4a98c92162affa
IODev myMQTTBroker
LASTInputDev myMQTTBroker
MSGCNT 165152
NAME MQTT2_inFactory_TH_229
NR 58
STATE 21.0 °C, 52% rH
TYPE MQTT2_DEVICE
eventCount 161692
myMQTTBroker_MSGCNT 165152
myMQTTBroker_TIME 2022-11-05 17:01:28
Helper:
DBLOG:
humidity:
fhemDbLog:
TIME 1667663723.78012
VALUE 52
temperature_C:
fhemDbLog:
TIME 1667663722.75794
VALUE 21.0
READINGS:
2022-11-02 12:38:45 IODev myMQTTBroker
2022-09-22 09:35:16 associatedWith MQTT2_myMQTTBridge
2022-11-05 17:01:28 battery_ok 1
2022-11-05 17:01:28 channel 2
2022-11-05 17:01:28 humidity 52
2022-11-05 17:01:28 id 229
2022-11-05 17:01:28 mic CRC
2022-11-05 17:01:28 protocol 91
2022-11-05 17:01:28 temperature_C 21.0
2022-11-05 17:01:28 temperature_F 69.8
2022-11-05 17:01:28 time 2022-11-05T17:01:27
Attributes:
DbLogExclude temperature_F
alias Küche
devStateStyle style="text-align:right;"
event-on-change-reading temperature_C,humidity,battery_ok
group Innen
readingList sensors/rtl_433/inFactory-TH/229/C2/time:.* time
sensors/rtl_433/inFactory-TH/229/C2/protocol:.* protocol
sensors/rtl_433/inFactory-TH/229/C2/id:.* id
sensors/rtl_433/inFactory-TH/229/C2/channel:.* channel
sensors/rtl_433/inFactory-TH/229/C2/battery_ok:.* battery_ok
sensors/rtl_433/inFactory-TH/229/C2/temperature_F:.* temperature_F
sensors/rtl_433/inFactory-TH/229/C2/humidity:.* humidity
sensors/rtl_433/inFactory-TH/229/C2/mic:.* mic
room MQTT2_DEVICE,Temperaturen
sortby 3020
stateFormat {
return ReadingsVal($name,'temperature_C','') . " °C, " . ReadingsVal($name,'humidity','') . "% rH"; ##. "$wday $4";
}
userReadings temperature_C { sprintf("%.1f", (ReadingsVal("MQTT2_inFactory_TH_229", "temperature_F", 0) - 32) * 5/9) }
Zitat von: Otto123 am 05 November 2022, 17:01:49
Annahme: Du erzeugst temperature_C mit einem userReadings ohne trigger?
Ja, weil der Sensor zwar °C anzeigen kann aber nicht übermittelt.
Dann mal ändern in
userReadings temperature_C:temperature_F.* { sprintf("%.1f", (ReadingsVal("MQTT2_inFactory_TH_229", "temperature_F", 0) - 32) * 5/9) }
Ein schönes Beispiel dafür, dass man userReadings immer mit trigger anlegen sollte
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Und schau Dir bitte vorher / nachher im Eventmonitor an ;D https://wiki.fhem.de/wiki/Event_monitor
Versteh ich das jetzt richtig, dass das userReading bisher bei jeder Änderung eines Wertes (Zeit, humidity, ...) genieriert wurde und jetzt nur noch generiert wird, wenn sich temperature_F ändert?
Cool, wieder was gelernt. Danke!
so ist es ;)
Mit dieser Änderung und dem event-on-change-reading sieht mein Event-Monitor viel übersichtlicher aus. 6 solche Sensoren, die alles 6-fach schicken und dazu unter jedem Wert die temerature_C - das scrollte nur so durch. Jetzt ists ruhig. Ich sollte öfter im Forum nachfragen...
Danke nochmal!
Zitat von: ocin4 am 05 November 2022, 16:50:05
Also mit fhem-Bordmitteln gelöst. Das "return undef" gefällt mir nicht so, aber sonst hab ich bei jeder Temperaturänderung einen Log-Eintrag
Zum Abschluss ;)
Du kannst die Rückgabe auswerten und normal ein undef und bei Fehler die Rückgabe zurückgeben.
Vorschlag prinzipiell getestet, geht sicher besser:
{my $ret = GetFileFromURL("http://192.168.178.50/ext_t?temp=$EVTPART1", 1);; return $ret eq '{"ok": true}' ? undef : $ret}