Hallo,
Ich habe hier mal was nachgebaut https://haus-automatisierung.com/projekt/2019/01/13/projekt-paketdienst-erkennen-probe-wifi.html (https://haus-automatisierung.com/projekt/2019/01/13/projekt-paketdienst-erkennen-probe-wifi.html) und die Daten komme auch schön auf dem FHEM an.
Allerdings kommt autocreat da wohl nicht klar.
Ich habe es mal mir MQTT2_DEVICE versucht, hat aber nicht funktioniert.
Ich hätte es gerne über den MQTT2_SERVER gelöst statt über mosquitto 3.1 und MQTT2_Client
Sieht irgendwie nach JSON aus :-\
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server autocreate 1
attr MQTT2_FHEM_Server room MQTT
define RPi3Scan1 MQTT2_DEVICE
attr RPi3Scan1 IODev MQTT2_FHEM_Server
attr RPi3Scan1 room MQTT
attr RPi3Scan1 subscribeReading_RPi3Scan1_macaddress /ProbeRequest/macaddress
Logfile
2019.02.03 23:14:45 1: reload: Error:Modul 00_MQTT deactivated:
Attempt to reload Net/MQTT/Message.pm aborted.
Compilation failed in require at ./FHEM/00_MQTT.pm line 80.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 80.
2019.02.03 23:14:45 0: Attempt to reload Net/MQTT/Message.pm aborted.
Compilation failed in require at ./FHEM/00_MQTT.pm line 80.
BEGIN failed--compilation aborted at ./FHEM/00_MQTT.pm line 80.
2019.02.03 23:14:45 1: reload: Error:Modul 10_MQTT_GENERIC_BRIDGE deactivated:
Can't continue after import errors at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 344.
BEGIN failed--compilation aborted at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 381.
2019.02.03 23:14:45 0: Can't continue after import errors at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 344.
BEGIN failed--compilation aborted at ./FHEM/10_MQTT_GENERIC_BRIDGE.pm line 381.
2019.02.03 23:14:45 0: ERROR: Cannot autoload MQTT_GENERIC_BRIDGE
2019.02.03 23:14:45 3: MQTT2_FHEM_Server: Unknown code autocreate::/ProbeRequest:{"macaddress": "28:ad:3e:........", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-03T22:14:44.755235"}, help me!
Ich habe mir das auch mal auf einem normalen mosquitto 3.1 angeschaut
Client mosqsub|1512-ubuntu-MQT received PUBLISH (d0, q0, r0, m0, '/ProbeRequest', ... (118 bytes))
/ProbeRequest {"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-03T21:41:01.368723"}
Client mosqsub|1512-ubuntu-MQT received PUBLISH (d0, q0, r0, m0, '/ProbeRequest', ... (125 bytes))
/ProbeRequest {"macaddress": "5c:cf:7f:1f:.....", "make": "Espressif Inc.", "rssi": 0, "ssid": "AP1", "time": "2019-02-03T21:41:02.062853"}
Client mosqsub|1512-ubuntu-MQT received PUBLISH (d0, q0, r0, m0, '/ProbeRequest', ... (125 bytes))
/ProbeRequest {"macaddress": "5c:cf:7f:1f:.....", "make": "Espressif Inc.", "rssi": 0, "ssid": "AP1", "time": "2019-02-03T21:41:02.268538"}
Du verwendest irgendwo GenericBrigde, sie hat (noch) feste Abhängigkeiten zum MQTT Modul. Dieses erfordert wiederum bestimmte Bibliotheken. In diesem Fall fehlt wohl das lib pluggable.
Installiere es, wie im wiki beschrieben.
Danke die Fehlermeldung ist weg, aber irgendwie erstellt er automatisch kein neues Device ...... :-\
2019.02.04 01:32:12 5: PINGREQ:
2019.02.04 01:32:12 4: MQTT2_FHEM_Server_192.168.1.99_44753 PINGREQ
2019.02.04 01:32:13 5: PINGREQ:
2019.02.04 01:32:13 4: MQTT2_FHEM_Server_192.168.1.99_44753 PINGREQ
2019.02.04 01:32:14 5: PUBLISH: (0)(13)/ProbeRequest(0)(200){"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T00:32:14.435950"}
2019.02.04 01:32:14 4: MQTT2_FHEM_Server_192.168.1.99_44753 PUBLISH /ProbeRequest:{"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T00:32:14.435950"}
2019.02.04 01:32:14 5: MQTT2_FHEM_Server: dispatch autocreate::/ProbeRequest:{"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T00:32:14.435950"}
Dazu kann ich leider nichts sagen, ich verwende kein Autocreate. Lege doch per Hand an, was du brauchst.
MQTT2_FHEM_Server: dispatch autocreate::/ProbeRequest:
clientId ist leer, das ist laut RFC unzulaessig.
Achtung: MQTT2_DEVICE ignoriert auch clientIDs der Sorte mosqpub.*, um mosquitto_pub verwenden zu koennen.
Hallo,
Vielleicht verstehe ich da was falsch?
Vom Client kann ich keine clientId mit geben
a command line tool for logging 802.11 probe request frames
optional arguments:
-h, --help show this help message and exit
-i INTERFACE, --interface INTERFACE
capture interface
-t TIME, --time TIME output time format (unix, iso)
-b MAX_BYTES, --max-bytes MAX_BYTES
maximum log size in bytes before rotating
-c MAX_BACKUPS, --max-backups MAX_BACKUPS
maximum number of log files to keep
-d DELIMITER, --delimiter DELIMITER
output field delimiter
-f, --mac-info include MAC address manufacturer
-s, --ssid include probe SSID in output
-r, --rssi include rssi in output
-D, --debug enable debug output
-l, --log enable scrolling live view of the logfile
-x MQTT_BROKER, --mqtt-broker MQTT_BROKER
mqtt broker server
-o MQTT_PORT, --mqtt-port MQTT_PORT
mqtt broker port
-u MQTT_USER, --mqtt-user MQTT_USER
mqtt user
-p MQTT_PASSWORD, --mqtt-password MQTT_PASSWORD
mqtt password
-m MQTT_TOPIC, --mqtt-topic MQTT_TOPIC
mqtt topic
ZitatVom Client kann ich keine clientId mit geben
Dann bitte einen RFC-Konformen Client verwenden.
Es kann auch sein, dass ich mich irre, aber um das zu pruefen brauche ich die CONNECT Zeile im MQTT2_SERVER Log.
Hallo,
Habe die connect Zeile
2019.02.04 11:41:38 4: Connection accepted from MQTT2_FHEM_Server_192.168.1.99_52563
2019.02.04 11:41:38 5: CONNECT: (0)(4)MQTT(4)(2)(0)(1)(0)(0)
2019.02.04 11:41:38 4: MQTT2_FHEM_Server_192.168.1.99_52563 CONNECT V:4 keepAlive:1
2019.02.04 11:41:39 5: PINGREQ:
2019.02.04 11:41:39 4: MQTT2_FHEM_Server_192.168.1.99_52563 PINGREQ
2019.02.04 11:41:40 5: PINGREQ:
2019.02.04 11:41:40 4: MQTT2_FHEM_Server_192.168.1.99_52563 PINGREQ
2019.02.04 11:41:41 5: PINGREQ:
2019.02.04 11:41:41 4: MQTT2_FHEM_Server_192.168.1.99_52563 PINGREQ
2019.02.04 11:41:42 5: PUBLISH: (0)(13)/ProbeRequest(0)(1){"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T10:41:41.756576"}
2019.02.04 11:41:42 4: MQTT2_FHEM_Server_192.168.1.99_52563 PUBLISH /ProbeRequest:{"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T10:41:41.756576"}
2019.02.04 11:41:42 5: MQTT2_FHEM_Server: dispatch autocreate::/ProbeRequest:{"macaddress": "28:ad:3e:0d:.....", "make": "UNKNOWN", "rssi": 0, "ssid": "AP1", "time": "2019-02-04T10:41:41.756576"}
2019.02.04 11:41:43 5: PINGREQ:
2019.02.04 11:41:43 4: MQTT2_FHEM_Server_192.168.1.99_52563 PINGREQ
2019.02.04 11:41:44 5: PINGREQ:
2019.02.04 11:41:44 4: MQTT2_FHEM_Server_192.168.1.99_52563 PINGREQ
Danke, ich habe es richtig vermutet.
Ich lag aber falsch bei meiner RFC-Aussage: Leeres ClientId ist zulaessig.
Autocreate klappt mit MQTT2_SERVER ohne clientId nicht, und das bleibt auch so, da ich nicht weiss, wie das funktionieren soll.
Danke für die Antwort.
Die obige Syntax war ja wohl falsch, habe es jetzt geändert, funktioniert aber auch nicht ???
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server autocreate 1
attr MQTT2_FHEM_Server room MQTT
define RPi3Scan1 MQTT2_DEVICE ProbeRequest
attr RPi3Scan1 IODev MQTT2_FHEM_Server
attr RPi3Scan1 room MQTT
attr RPi3Scan1 readingList ProbeRequest:.* { json2nameValue($EVENT, '') }
Dein Topic is /ProbeRequest =>
attr RPi3Scan1 readingList /ProbeRequest:.* { json2nameValue($EVENT, '') }
Danke rudolf das wars der "/" hat gefehlt und ich bastel darum und denke warum geht das nicht warum warum ............. ;D
Aber nur so lernt man, gerade MQTT ist ja nicht so ein einfaches Thema
Wollte hier noch was ergänzen falls das jemand nachbauen möchte.
Leider habe ich einige Fehler gefunden.
Die probemon.py habe ich angepasst das mit -r auch die rssi übermittelt wird
Der probemon.service sieht auch etwas anders aus
[Unit]
Description=Probemon MQTT Service
[Service]
ExecStart=/home/pi/probemon/python probemon.py -i wlan1 -f -s -l -r --mqtt-broker 192.168.x.x --mqtt-topic /ProbeRequest -u xxx -p xxx
StandardOutput=null
[Install]
WantedBy=multi-user.target
Alias=probemon.service