Hallo, ich habe mal eine Grundsatzfrage.
Gibt es eine gängige Methode wie man die verschiedenen Zustände des state-Readings oder eines anderen Readings eines Device ermitteln kann.
Beispiel: Ich habe mir einen Shelly-Gas zugelegt und in Fhem integriert. Nun möchte ich natürlich gerne auf das Auslösen reagieren. Doch egal ob Notify oder DOIF muss ich ja wissen worauf ich reagieren kann, also auf welches Reading und welchen Wert dieses dann annimmt.
List vom Device:
Internals:
CFGFN
CID shellygas_10521CF34615
DEF shellygas_10521CF34615
DEVICETOPIC k_gas_shellygas
FUUID 601ef576-f33f-793a-9d9e-eb56cf6c8adbb97d
IODev MQTT2_Server
LASTInputDev MQTT2_Server
MQTT2_Server_MSGCNT 105
MQTT2_Server_TIME 2021-02-06 21:10:23
MSGCNT 105
NAME k_gas_shellygas
NR 208841
STATE none
TYPE MQTT2_DEVICE
.attraggr:
.attrminint:
OLDREADINGS:
READINGS:
2021-02-06 21:02:58 actions_stats_skipped 0
2021-02-06 21:02:58 attrTemplateVersion 20201103
2021-02-06 21:02:58 cfg_changed_cnt 9
2021-02-06 21:02:58 cloud_connected false
2021-02-06 21:02:58 cloud_enabled false
2021-02-06 21:10:23 concentration 0
2021-02-06 21:02:58 concentration_is_valid true
2021-02-06 21:02:58 concentration_ppm 0
2021-02-06 21:02:58 fs_free 88603
2021-02-06 21:02:58 fs_size 233681
2021-02-06 21:02:58 fw_ver 20201124-093005/v1.9.0@57ac4ad8
2021-02-06 21:10:23 gas none
2021-02-06 21:02:58 gas_sensor_alarm_state none
2021-02-06 21:02:58 gas_sensor_self_test_state completed
2021-02-06 21:02:58 gas_sensor_sensor_state normal
2021-02-06 21:02:58 has_update false
2021-02-06 21:02:58 id shellygas-10521CF34615
2021-02-06 21:02:58 ip 192.168.178.162
2021-02-06 21:02:58 mac 10521CF34615
2021-02-06 21:02:58 model SHGS-1
2021-02-06 21:02:58 mqtt_connected true
2021-02-06 21:02:58 new_fw false
2021-02-06 21:02:58 online true
2021-02-06 21:10:23 operation normal
2021-02-06 21:02:58 ram_free 37324
2021-02-06 21:02:58 ram_total 51536
2021-02-06 21:10:23 self_test completed
2021-02-06 21:02:58 serial 14
2021-02-06 21:04:21 state start_self_test
2021-02-06 21:02:58 time 21:02
2021-02-06 21:02:58 unixtime 1612645379
2021-02-06 21:02:58 update_beta_version 20210122-155853/v1.10.0-rc1@00eeaa9b
2021-02-06 21:02:58 update_has_update false
2021-02-06 21:02:58 update_new_version 20201124-093005/v1.9.0@57ac4ad8
2021-02-06 21:02:58 update_old_version 20201124-093005/v1.9.0@57ac4ad8
2021-02-06 21:02:58 update_status idle
2021-02-06 21:02:58 uptime 32508
2021-02-06 21:10:23 valve_0_state not_connected
2021-02-06 21:02:58 valves_1_state not_connected
2021-02-06 21:02:58 wifi_sta_connected true
2021-02-06 21:02:58 wifi_sta_ip 192.168.178.162
2021-02-06 21:02:58 wifi_sta_rssi -39
2021-02-06 21:02:58 wifi_sta_ssid Poschen_Net
Attributes:
IODev MQTT2_Server
alias Gassensor
devStateIcon none:ampel_gruen mild:ampel_gelb heavy:ampel_rot test:ampel_gruen
group Security
icon feinstaub
model shellygas
readingList shellygas_10521CF34615:shellies/shellygas-10521CF34615/online:.* online
shellygas_10521CF34615:shellies/shellygas-10521CF34615/announce:.* { json2nameValue($EVENT) }
shellygas_10521CF34615:shellies/shellygas-10521CF34615/sensor/operation:.* operation
shellygas_10521CF34615:shellies/shellygas-10521CF34615/sensor/gas:.* gas
shellygas_10521CF34615:shellies/shellygas-10521CF34615/sensor/self_test:.* self_test
shellygas_10521CF34615:shellies/shellygas-10521CF34615/valve/0/state:.* valve_0_state
shellygas_10521CF34615:shellies/shellygas-10521CF34615/sensor/concentration:.* concentration
shellygas_10521CF34615:shellies/shellygas-10521CF34615/info:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE,Wohnung->Küche
setList start_self_test:noArg shellies/shellygas-10521CF34615/sensor/start_self_test
mute:noArg shellies/shellygas-10521CF34615/sensor/mute
unmute:noArg shellies/shellygas-10521CF34615/sensor/unmute
x_update:noArg shellies/shellygas-10521CF34615/command update_fw
x_mqttcom shellies/shellygas-10521CF34615/command $EVTPART1
stateFormat gas
Gibt es eine Website wo solche Daten nachgelesen werden können oder woher nehmt ihr die Informationen?
Eventmonitor auf das Device ansetzen, beim Device selbst keine Einschränkungen der Events, also event-on-xxx löschen. Und dann so lange zugucken **, bis sich die Readings/Werte wiederholen. Dann solltest Du alles kennen, was das Device so liefert.
Event-Definitionen kannst Du Dir im Event-Monitor auch gleich erzeugen lassen (sogar gleich ein notify/DOIF/Log.... anlegen lassen). Danach überlegst Du, was einen Event auslösen darf und schränkst das Device entsprechend ein: per event-on-change-reading/event-on-update-reading und event-min-interval.
Danach wieder im Eventmonitor schauen, ob alles da ist, was Du brauchst. Und dann ..... DOIF, notify, Log..... was auch immer
Viel Erfolg!
** P.S. das Device dazu bringen, das zu tun, wofür es gebaut ist. Ein Temperatursensor wird schon was senden, ein Bewegungsmelder muss halt mal ausgelöst werden, ein Lichsensor mit ner Lampe anleuchten etc etc...
Man muss nicht den EventMonitor anstarren, es geht viel einfacher: in ein device vom TYPE=eventTypes schauen, das protokolliert automatisch alle events von allen devices.
Ein solches device sollte in einer FHEM-Standardinstallation quasi automatisch vorhanden sein.
Zitat** P.S. das Device dazu bringen, das zu tun, wofür es gebaut ist. Ein Temperatursensor wird schon was senden, ein Bewegungsmelder muss halt mal ausgelöst werden, ein Lichsensor mit ner Lampe anleuchten etc etc...
Leider bei einem Gassensor etwas gefährlich, oder? Ich möchte jedenfalls nicht extra die Wohnung mit Erdgas fluten um zu sehen welchen Wert ein Reading annimmt.
Bei den meisten anderen Sachen zwar sehr aufwendig, aber machbar.
ZitatMan muss nicht den EventMonitor anstarren, es geht viel einfacher: in ein device vom TYPE=eventTypes schauen, das protokolliert automatisch alle events von allen devices.
Ein solches device sollte in einer FHEM-Standardinstallation quasi automatisch vorhanden sein.
Muss ich mir ansehen, aber protokolliert heißt doch auch, dass das Reading erst mal den Zustand annehmen muss, was wie oben ja sehr gefährlich wäre wenn die Wohnung mit Gas gefüllt wäre.
Moin,
meine Antwort bezog sich hauptsächlich auf den ersten Teil Deiner Frage:
ZitatHallo, ich habe mal eine Grundsatzfrage.
Gibt es eine gängige Methode wie man die verschiedenen Zustände des state-Readings oder eines anderen Readings eines Device ermitteln kann.
dann schreibst Du:
ZitatBei den meisten anderen Sachen zwar sehr aufwendig, aber machbar.
Also wenn das schon "aufwendig" ist: warten bis ein Temperatursensor ein paar Werte geliefert hat, einen Türkontakt ein paar mal öffnen/schliessen?
Entweder Du hast hervorragende Herstellerangaben, die bis ins letzte bit die Ausgaben eines Sensors beschreiben, und dann kommt es noch drauf an, was fhem draus macht, oder Du wunderst Dich die meiste Zeit, weil fhem nicht macht was es soll.
Beim Gassensor gebe ich Dir recht, den möchte man nicht unbedingt auslösen wollen, unter real-Bedingungen. Obwohl es evtl. reicht, mal ein Gasfeuerzeug dranzuhalten (also nicht anmachen, nur Gas fliessen lassen). Das sollte man so hinbekommen, dass am Ende die Hütte noch steht ;)
Oder man begibt sich mal auf die Herstellerseite..... https://shelly-api-docs.shelly.cloud/#shelly-gas (https://shelly-api-docs.shelly.cloud/#shelly-gas)
Bei den Shellys ist es schon sehr gut dokumentiert, was da so kommen muss.
und den EventMonitor muss man nicht "anstarren", der schreibt auch, wenn man gar nicht hinguckt.
Die andere Lösung von betateilchen wundert mich ein wenig, aber lies selbst:
https://forum.fhem.de/index.php/topic,33905.msg262551.html#msg262551 (https://forum.fhem.de/index.php/topic,33905.msg262551.html#msg262551)
ich habe es wie in Antwort #6 gehalten und das Teil gelöscht. Habe es bisher noch nie vermisst.
Viel Erfolg!
Zitat von: Sany am 07 Februar 2021, 10:25:29
Oder man begibt sich mal auf die Herstellerseite..... https://shelly-api-docs.shelly.cloud/#shelly-gas (https://shelly-api-docs.shelly.cloud/#shelly-gas)
Bei den Shellys ist es schon sehr gut dokumentiert, was da so kommen muss.
Aber Doku lesen wäre doch ein viel zu einfacher Lösungsweg. Dann lieber die Bude in die Luft jagen und abwarten, was der Gasmelder als reading schickt...