Hallo
Ich habe hier ein esp-rfid (https://www.tindie.com/products/nardev/esp-rfid-relay-board-12v-for-esp8266-board/)
mit dieser Software (https://github.com/esprfid/esp-rfid)
Mein Problem ist es, das ich auf meinem Pi unter Mqtt die Daten sehen kann (Foto)
Aber einfach nicht weiß und hinbekomme, das ich in Fhem angezeigt bekomme, wer, wann den rfid benutzt hat.
Würde auch gern bei jedem rfid reed eine Nachricht auf Telegramm kommen lasse mit z.B. ......... hat den Chip gescannt.
Habe eine Mqtt device mit dem Namen des ESP-Rfid angelegt aber bekomme keine Werte da.
Und nun komm ich einfach nicht weiter
ZitatHabe eine Mqtt device mit dem Namen des ESP-Rfid angelegt
Dann zeigt mal was ein List davon liefert!
Von der Struktur her sieht mir das ähnlich aus wie der BLE-Teil zum OpenMQTTGateway.
Da gibt's ein funktionierendes attrTemplate, allerdings für MQTT2_DEVICE. Details zu dem Modul im Wiki (fang bei Praxisbeispiele an zu lesen). Eventuell kann man auch Teile des Codes as dem attrTemplate auf MQTT_DEVICE übertragen, aber da bin ich nicht firm drin.
Gruß, Beta-User
Also mein list ergibt folgendes :
Bitte als Text in Code-Tags (#) oder als "Zitat".
Also mit MQTT.fx unter win10 bekomme ich folgende daten ausgelesen :
/rfid/sync
{"type":"heartbeat","time":1575452491,"ip":"192.168.178.90","door":"esp-rfid"}
und
/rfid/send
{"type":"access","time":1575452072,"isKnown":"true","access":"Admin","username":"Dennis Handy","uid":"5xxxxx3","door":"esp-rfid"}
Wie bekomme ich es jetzt hin, das ich den username und die zeit in Fhem angezeigf bekomme :
Habe es mit : define RFID MQTT_DEVICE angelegt
uns : attr subscribeReading_.* RFID/send/"username"
bekomme aber keine daten angezeigt
Mit MQTT_DEVICE wird das mMn. schwierig! Es gibt zwar auch da Optionen, den $event auswerten zu lassen, aber dann müßtest du dich um's Auspacken des JSON selber kümmern und entsprechenden Perl-Code schreiben, deine Versuche sind jedenfalls mMn. ziemlich untauglich...
Klemm also entweder einen MQTT2_CLIENT an den mosquitto und mach's über ein MQTT2_DEVICE (wie bereits angedeutet durch Adaption des bluetooth-Teils vom OpenMQTTGateway-attrTemplate) oder wechsle gleich ganz zu MQTT2_SERVER und zieh' auch den ggf. vorhandenen Rest an MQTT-Gerät um...
Kannst ja erst mal für das Gerät einen anderen Port nutzen und dann testweise andere Geräte auch umstellen.
Hy Hatte das selbe Problem, habe es folgendermaßen gelöst.
MQTT_CLIENT angelegt(nutze für meine Sonoff module TASMOTA_DEVICE)
defmod MQTT2 MQTT2_CLIENT 192.168.178.110:1883
attr MQTT2 room MQTT
dann MQTT2_DEVICE angelegt (RFID ist mein MQTT_Topic)
defmod RFID MQTT2_DEVICE
attr RFID IODev MQTT2
attr RFID devicetopic RFID
attr RFID readingList RFID/sync:.* { json2nameValue($EVENT) }\
RFID/send:.* { json2nameValue($EVENT) }
attr RFID room MQTT
attr RFID stateFormat username
das sind quasi meine readings
setstate RFID Unknown
setstate RFID 2019-12-14 05:50:44 access Denied
setstate RFID 2019-12-14 16:49:38 door esp-rfid
setstate RFID 2019-12-14 16:49:38 ip 192.168.178.209
setstate RFID 2019-12-14 05:50:44 isKnown false
setstate RFID 2019-12-14 16:49:38 time 1576338578
setstate RFID 2019-12-14 16:49:38 type heartbeat
setstate RFID 2019-12-14 05:50:44 uid 8db4337
setstate RFID 2019-12-14 05:50:44 username Unknown
hoffe konnte damit helfen
Also ich lasse die ganzen MQTT-Strings in ein Reading schreiben.
z.B. mit
attr RFID subscribeReading_INFO1 rfid/sync
dann hat das reading INFO1 den Inhalt:
{"type":"access","time":1575452072,"isKnown":"true","access":"Admin","username":"Dennis Handy","uid":"5xxxxx3","door":"esp-rfid"}
Dann nehme ich den mittels userreadings auseinander:
attr RFID userReadings \
RFID-USERNAME:INFO1:.* {decode_json(ReadingsVal($NAME,"INFO1",0))->{username}},\
RFID-isKnown:INFO1:.* {decode_json(ReadingsVal($NAME,"INFO1",0))->{isKnown}},\