Python Paho MQTT zu FHEM

Begonnen von Guenni1404, 15 März 2021, 22:42:54

Vorheriges Thema - Nächstes Thema

Guenni1404

Hallo,

ich bin blutiger Anfänger in Python und MQTT.
Ich habe ein Python script das über PAHO MQTT Daten bekommt.
Wie bekomme ich die Daten am besten nach FHEM?
Kann mir jemand helfen?
Ich nutze in FHEM MQTT2
Das Script habe ich von hier https://gist.github.com/zerog2k/b3afcaf3ff92a60474a159c7044dc8ce

Otto123

Moin,

wie Du siehst kann mit Deiner Frage keiner so richtig was anfangen.

Wenn "über PAHO MQTT Daten bekommt" und "Ich nutze in FHEM MQTT2" warum dann nicht einfach die Daten nach MQTT2 ???
Was macht das Script und wo läuft es? Was kommt rein was soll rauskommen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Guenni1404

Hi Otto,

ich versuche es nochmal:

Ich möchte MQTT Daten die von
mq.youpinyuntai.com:55450
kommen, nach FHEM bekommen.

Ich habe ein Phyton Script gefunden, dass die Daten empfängt und auf Konsolenebene ausgibt.

Entweder wäre es schön, wenn ich die Daten nach FHEM weiterleiten könnte oder wenn ich es direkt in MQTT2 einbinden könnte.

Die direkte Einbindung wäre super - habe aber keine Ahnung davon.
Habe jetzt die Python FHEM API gefunden, aber noch nicht ausprobiert.

Wenn du einen Tipp hättest, wie ich die Daten direkt, über MQTT2, einbinden kann, wäre es super.

Hoffe es ist jetzt besser erklärt

Gruß

Christian

Otto123

Diese Web Adresse - was ist das? Ein MQTT Server?
Dann kannst Du einen MQTT2_CLIENT in FHEM definieren und der empfängt die Daten dann direkt, Du kannst ihn mal auf Autocreate stellen dann erzeugt er ein MQTT2_DEVICE und Du bist (fast) fertig.

Alles in allen so etwa: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Owntracks_GPS_Tracking_in_FHEM

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

ZitatDie direkte Einbindung wäre super - habe aber keine Ahnung davon.
Das geht mit
define mqc MQTT2_CLIENT mq.youpinyuntai.com:55450

Allerdings erzeugt das mit dem default-Subscription ein Datenstrom von 100-300kB/sec, das ist ca 10MB/Minute, FHEM ist vermutlich nicht das Optimum, um diese Daten zu verarbeiten.
Was fuer Daten sind das genau?

Guenni1404

#5
Das sind Daten von einem Luftsensor.
Enthält Temperatur, Luftfeuchtigkeit, TVOC, HCHO, eCO2, PM2.5


[{u'content': u'0', u'dptId': 1, u'deviceToken': u'XXXXXXXXXXXXXXX', u'seq': 1}, {u'content': None, u'dptId': 1, u'deviceToken': u'', u'seq': 2}, {u'content': None, u'dptId': 1, u'deviceToken': u'', u'seq': 3}, {u'content': u'20', u'dptId': 1, u'deviceToken': u'', u'seq': 4}, {u'content': u'48', u'dptId': 1, u'deviceToken': u'', u'seq': 5}, {u'content': u'36', u'dptId': 1, u'deviceToken': u'', u'seq': 6}, {u'content': u'0.034', u'dptId': 1, u'deviceToken': u'', u'seq': 7}, {u'content': u'0.590', u'dptId': 1, u'deviceToken': u'', u'seq': 8}, {u'content': u'394', u'dptId': 1, u'deviceToken': u'', u'seq': 9}, {u'content': u'2700', u'dptId': 1, u'deviceToken': u'', u'seq': 10}]



Die Daten werden im Script über den deviceToken eingegrenzt .
Aufruf vom Script ist: python script token
Wenn das auch über MQTT2 ginge wäre es die optimale Lösung

Otto123

#6
zwei Stellen im Script
TOPIC = sys.argv[1]
...
client.subscribe(TOPIC)

Also offenbar einfach beim client den Subscribe mit deinem Token füttern ? Attribute setzen?:
Zitatsubscriptions <subscriptions>
space separated list of MQTT subscriptions, default is #
Jetzt bist Du dran mit testen Christian :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

#7
ZitatDas sind Daten von einem Luftsensor.
Das halte ich fuer ein Geruecht, eher Daten von tausenden von Sensoren.
In einer Minute habe ich 1623 unterschiedliche deviceTokens erhalten.

Otto123

@Rudi Das Script macht offenbar ein Subscribe für einen deviceToken - das würde dann ja passen
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Guenni1404

Zitat von: Otto123 am 16 März 2021, 13:12:55
zwei Stellen im Script
TOPIC = sys.argv[1]
...
client.subscribe(TOPIC)

Also offenbar einfach beim client den Subscribe mit deinem Token füttern ? Attribute setzen?:Jetzt bist Du dran mit testen Christian :)

Super!

Besten Dank, hat funktioniert.
Habe die Daten jetzt im Device und muss sie nur noch verarbeiten.

rudolfkoenig

Ich frag mich nur, wer verteilt die Daten aller an alle.
Wir haben doch 2021, oder habe ich was verpasst?

Guenni1404

@Rudi
Stimmt, das sind aber die Daten aller Sensoren.

https://de.aliexpress.com/i/1005001356026748.html

Hatte den Sensor geschenkt bekommen und wollte ihn mal testen und die Daten verarbeiten.


Guenni1404

Zitat von: rudolfkoenig am 16 März 2021, 13:47:32
Ich frag mich nur, wer verteilt die Daten aller an alle.
Wir haben doch 2021, oder habe ich was verpasst?

Nein du hast nichts verpasst. Eigentlich soll die App genutzt werden, da siehst du nur deine Daten.
Die MQTT Schnittstelle ist aber offen. Ohne deviceToken kannst du die Daten nicht zuordnen.
Naja ist ein chinesischer Cloudanbieter für IOT

Otto123

ich habe noch nicht verstanden, wie ihr einen connect hinbekommt? Bei mit macht er immer connect disconnect - wollte das bloß mal nachvollziehen
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Zitatich habe noch nicht verstanden, wie ihr einen connect hinbekommt? Bei mit macht er immer connect disconnect - wollte das bloß mal nachvollziehen
Ich habe nur "mosquitto_sub -v- t # -h mq.youpinyuntai.com -p 55450" probiert.
Aber mit meinem Vorschlag von oben funktioniert es auch ohne Probleme.