[gelöst] Einbinden von ENVIRO Wetterstation in FHEM via MQTT

Begonnen von Borkk, 06 Juli 2020, 13:41:08

Vorheriges Thema - Nächstes Thema

Borkk

Hallo Zusammen,

ich habe nun 3 4 Tage versucht mich mit Hilfe verschiedenster Wiki, Foren und sonstigen Einträgen an das Thema MQTT heranzuwagen. Leider springt der Funkten noch nicht über... evtl. kann mir einer ein wenig auf die Sprünge helfen.

Ich würde gerne die Messwerte einer Enviro Messstation in FHEM einlesen. Das Teil steckt auf einem Pi Zero und wenn man eines der Python examples startet, wirft es Messwerte im Sekundentakt aus. (https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-plus).

Mit dieser Anpassung (https://github.com/hotplot/enviroplus-mqtt) habe ich (hoffentlich) das Teil dazu gebracht MQTT Events zu senden. Die Config habe ich wie folgt angelegt:


[Unit]
Description=Enviro+ MQTT Logger
After=network.target

[Service]
ExecStart=/usr/bin/python3 /usr/src/enviroplus-mqtt/src/main.py -h 192.168.23.119 -p 1883 --prefix fhem/enviro --client-id enviro --interval 30
WorkingDirectory=/usr/src/enviroplus-mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target


Auf 192.168.23.119 läuft ein leeres Test FHEM indem ich einen MQTT2_SERVER angelegt habe. Dort scheint auch was anzukommen, da das Reading nrclients immer zwischen 1 und 0 umschaltet. Im Log kommt das an:


2020.07.06 12:43:43 4: Connection accepted from myBroker_192.168.23.118_45681
2020.07.06 12:43:43 5: in:  CONNECT: (16)(18)(0)(4)MQTT(4)(2)(0)<(0)(6)enviro
2020.07.06 12:43:43 4:   myBroker_192.168.23.118_45681 cid:enviro CONNECT V:4 keepAlive:60
2020.07.06 12:43:43 5: out: CONNACK:  (2)(0)(0)
2020.07.06 12:43:43 4: Connection closed for myBroker_192.168.23.118_45681: EOF


Und jetzt bin ich lost... Brauche ich nun einen MQTT2_Device, oder ein MQTT2_Client oder MQTT oder MQTT_bridge?!?!

Wenn ich das richtig verstanden habe müsste ENVIRO z.B. über das Topic fhem/enviro/temperatur den Temp Wert über MQTT an den Broker senden.

Kann ich diese Kommunikation irgendwo sehen (ohne Wireshark ;-)) ?

Wie bekomme ich die Messwerte in ein FHEM Gerät um sie entsprechend weiter zu verarbeiten?

Wäre nett wenn mir jemand helfen könnte. Ich hoffe meine Beschreibung ist für den Moment ausreichend.


Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

#1
Hi,

Dein MQTT2_Server sollte eigentlich automatisch ein MQTT2_DEVICE anlegen. Hast Du bei dem zusätzlich was eingestellt?  Zeig am Besten ein list von dem MQTT2_Server.
Ich hatte hier mal meine Anfänge dokumentiert, vielleicht hilft es Dir.

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

Beta-User

Also:
MMn hast du bis dahin - im Prinzip - alles richtig gemacht. MQTT2_SERVER steht auch per default auf "autocreate simple", was dann - ein aktives Gerät des TYPE autocreate vorausgesetzt - dazu führt, dass alle Infos/mqtt-publishes, die zu einer CID gehören jeweils in einem eigenen MQTT2_DEVICE landen.

Ergo ist das einzige Problem bis dahin, dass dein MQTT-Dienst bisher scheinbar nichts publisht, jedenfalls war aus dem Schnippsel nichts zu erkennen... Würde aber (leeres FHEM?) eher auf ein fehlendes TYPE=autocreate tippen?

Ansonsten kann man den MQTT-Verkehr auch beim MQTT2_SERVER mit RAW-Events sichtbar machen, sowas wie eine Kurzanleitung steht in dem "Praxisbeispielen" im Wiki.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Borkk

Hallo Otto,

wie gesagt ich stehe mit MQTT ganz am Anfang :-)

Internals:
   CFGFN     
   CONNECTS   571
   DEF        1883 global
   FD         10
   FUUID      5f030911-f33f-64e7-99de-ef00a5e426d729bd
   NAME       myBroker
   NR         14072
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   READINGS:
     2020-07-06 13:51:17   nrclients       -1
     2020-07-06 13:20:49   state           Initialized
   clients:
   retain:
Attributes:
   autocreate simple
   room       MQTT
   verbose    5
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Beta-User

"autocreate simple" kannst du gleich wieder löschen. Das entspricht zwar dem default, Rudi empfiehlt aber gerne ausdrücklich, das (bei SERVER) nicht zu setzen (beim CLIENT wäre das was anderes).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Wie Beta-User vermutet - da scheint er nichts weiter zu senden/publishen sondern  macht nur connect.
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

Borkk

Zitat von: Beta-User am 06 Juli 2020, 13:52:31
Ergo ist das einzige Problem bis dahin, dass dein MQTT-Dienst bisher scheinbar nichts publisht, jedenfalls war aus dem Schnippsel nichts zu erkennen... Würde aber (leeres FHEM?) eher auf ein fehlendes TYPE=autocreate tippen?

Den verdacht habe ich auch, das ENVIRO zwar irgendwas schickt aber ich weiss nicht was. Ich schau mit das mit dem RAW mal an.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Beta-User

Wie wäre es, erst mal zu schauen, ob das autocreate vorhanden ist:
list TYPE=autocreate
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Borkk

Ist so vorhanden wie nach eine frischen fhem installation

Internals:
   FUUID      5f025301-f33f-64e7-f0c6-8bfb549d06e814e0
   NAME       autocreate
   NOTIFYDEV  global
   NR         8
   NTFY_ORDER 50-autocreate
   STATE      active
   TYPE       autocreate
Attributes:
   filelog    ./log/%NAME-%Y.log
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Beta-User

OK, dann scheint also wirklich bisher einfach noch nichts gesendet worden zu sein...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Ich habe die Bits aus dem verbose 5 Log mit dem Spec abgeglichen: ich sehe keinen Fehler: das Python Script schliesst die Verbindung ohne eine Begruendung direkt nach dem ersten Paketwechsel.

Meldet das Skript einen Fehler?
Funktioniert es mit mosquitto?

Borkk

Zitat von: rudolfkoenig am 06 Juli 2020, 14:48:29
Ich habe die Bits aus dem verbose 5 Log mit dem Spec abgeglichen: ich sehe keinen Fehler: das Python Script schliesst die Verbindung ohne eine Begruendung direkt nach dem ersten Paketwechsel.

Meldet das Skript einen Fehler?
Funktioniert es mit mosquitto?

Wenn ich den service anhalte und das script auf der Console starte:
python main.py -h 192.168.23.119 -p 1883 --prefix fhem/enviro --client-id enviro --interval 60

Bekomme ich in der tat eine Fehlermeldung:
File "main.py", line 49
    sys.exit(f"Connecting to the MQTT server failed: {logger.connection_error}")
                                                                              ^


Es kommt aber dann auch nichts bei MQTT2_Server auf FHEM an. (Kein Log Eintrag)
Mosquito habe ich noch noch getestet, wollte es eigentlich so schlank wie möglich realisieren.

Liege ich denn mit meinem Aufruf richtig? Evtl. habe ich da einen Denkfehler.

main.py -h 192.168.23.119 -p 1883 --prefix fhem/enviro --client-id enviro --interval 60

  usage: main.py -h HOST [-p PORT] [-U USERNAME] [-P PASSWORD] [--prefix PREFIX]
              [--client-id CLIENT_ID] [--interval INTERVAL] [--delay DELAY]
              [--use-pms5003] [--help]

  optional arguments:
  -h HOST, --host HOST  the MQTT host to connect to
  -p PORT, --port PORT  the port on the MQTT host to connect to
  -U USERNAME, --username USERNAME
                      the MQTT username to connect with
  -P PASSWORD, --password PASSWORD
                      the password to connect with
  --prefix PREFIX       the topic prefix to use when publishing readings, i.e.
                      'lounge/enviroplus'
  --client-id CLIENT_ID
                      the MQTT client identifier to use when connecting
  --interval INTERVAL   the duration in seconds between updates
  --delay DELAY         the duration in seconds to allow the sensors to
                      stabilise before starting to publish readings
  --use-pms5003         if set, PM readings will be taken from the PMS5003
                      sensor
  --help                print this help message and exit
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

Schau doch mal in meinen Link da steht alles in den ersten Zeilen. Du brauchst nur die  mosquitto-clients (keinen Server installieren!)
Dann machst Du eine Zeile in der Art
mosquitto_pub -h 192.168.23.119 -i enviro1 -t fhem/enviro/temperature -m 22
Und schaust was passiert.

Dann wüsstest Du ob die FHEM Seite läuft ;)
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

Borkk

hmm, wenn ich das script so aufrufe:
/usr/bin/python3 /usr/src/enviroplus-mqtt/src/main.py -h 192.168.23.119 -p 1883 --prefix fhem/enviro --client-id enviro --interval 60

bekomme ich das...

Traceback (most recent call last):
  File "/usr/src/enviroplus-mqtt/src/main.py", line 65, in <module>
    main()
  File "/usr/src/enviroplus-mqtt/src/main.py", line 40, in main
    logger.update(publish_readings=False)
  File "/usr/src/enviroplus-mqtt/src/logger.py", line 99, in update
    self.samples.append(self.take_readings())
  File "/usr/src/enviroplus-mqtt/src/logger.py", line 76, in take_readings
    gas_data = gas.read_all()
  File "/usr/local/lib/python3.7/dist-packages/enviroplus-0.0.3-py3.7.egg/enviroplus/gas.py", line 79, in read_all
  File "/usr/local/lib/python3.7/dist-packages/enviroplus-0.0.3-py3.7.egg/enviroplus/gas.py", line 50, in setup
  File "/usr/local/lib/python3.7/dist-packages/ads1015-0.0.5-py3.7.egg/ads1015/__init__.py", line 167, in set_mode
    self._ads1015.set('CONFIG', mode=value)
  File "/usr/local/lib/python3.7/dist-packages/i2cdevice-0.0.6-py3.7.egg/i2cdevice/__init__.py", line 215, in set
    self.read_register(register)
  File "/usr/local/lib/python3.7/dist-packages/i2cdevice-0.0.6-py3.7.egg/i2cdevice/__init__.py", line 183, in read_register
    self.values[register.name] = self._i2c_read(register.address, register.bit_width)
  File "/usr/local/lib/python3.7/dist-packages/i2cdevice-0.0.6-py3.7.egg/i2cdevice/__init__.py", line 283, in _i2c_read
    for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
OSError: [Errno 121] Remote I/O error


Ich glaube das Problem liegt erst mal an der MQTT Geschichte auf dem ENVIRO. Ich kann leider kein Python, werde wohl mal den Entwickler anschreiben...
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Zitat von: Otto123 am 06 Juli 2020, 15:30:13
Schau doch mal in meinen Link da steht alles in den ersten Zeilen. Du brauchst nur die  mosquitto-clients (keinen Server installieren!)
Dann machst Du eine Zeile in der Art
mosquitto_pub -h 192.168.23.119 -i enviro1 -t fhem/enviro/temperature -m 22
Und schaust was passiert.

Dann wüsstest Du ob die FHEM Seite läuft ;)

Danke Otto, das versuche ich erst mal. Ich melde mich wenn ich weitergekommen bin.
Aber mal abgesehen von MQTT, das ENVIRO Modul ist echt klasse, kann sogar Feinstaub messen. Wäre doch mal ein Überlegung wert es direkt in FHEM zu unterstützen. ;) Aber so lerne ich mal wie MQTT arbeitet, ist auch gut, wollte ich mir schon lange man anschauen.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Also in Richtung fhem klappt alles. Ich habe mit MQTT Explorer erfolgreich Topics mit Werten abgesetzt und es wurde direkt ein MQTT2_Device angelegt und die readingList mit samt der Readings angelegt. Das ging dann doch einfacher als ich dachte.

Also muss ich mal tiefer in den ENVIRO einsteigen. Danke schon mal für die Hilfe.

Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

Was ich deinen Links so gesehen habe:
Die python Geschichte ist ja zweiteilig, also zwei Teile wo was schief laufen kann.
Aufruf, Parameter, Bibliotheken, Rechte, User, Gruppen
Also hübsch Stück für Stück manuell testen und untersuchen, der Dienst das es automatisch läuft ist zum Schluss ;)
Das stand was von UART, das ist beim Pi auch etwas speziell.

Welche der Komponenten läuft denn schon?
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

Borkk

Ich habe schon echt viel mit Pi´s von Zero bis 4er zum laufen gebracht aber das hier ist echt ne harte Nuss. (für mich) Die verschiedenen Setup Varianten legen unterschiedliche Verzeichnisstrukturen an. Manche Scripte laufen einwandfrei andere brechen mit Syntax Fehlern ab. Ich gehe jetzt mal pennen und fange morgen neu an. Leider stecke ich nicht bis auf die Tiefe eines Softwareentwicklers drin. Scheinbar setzten manche Scripte das Vorhandensein des PMS5003 Sensors vorraus.

Es wird nämlich seit einiger Zeit ein mqtt-all.py Script mit installiert wenn man es aber startet, kommt das:

python3 /home/pi/enviroplus-python/examples/mqtt-all.py --broker 192.168.23.119 --port 1883 --topic enviroplus

mqtt-all.py - Reads temperature, pressure, humidity,
    PM2.5, and PM10 from Enviro plus and sends data over mqtt.

    broker: 192.168.23.119
    port: 1883
    topic: enviroplus

    Press Ctrl+C to exit!

   
Raspberry Pi serial: 0000000093510a14
Wi-Fi: connected

MQTT broker IP: 192.168.23.119
CONNACK received with code 0
connected OK
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
PMS5003 Read Timeout: Failed to read start of frame byte
ç^CTraceback (most recent call last):
  File "/home/pi/enviroplus-python/examples/mqtt-all.py", line 212, in <module>
    main()
  File "/home/pi/enviroplus-python/examples/mqtt-all.py", line 200, in main
    values = read_values(bme280, pms5003)
  File "/home/pi/enviroplus-python/examples/mqtt-all.py", line 69, in read_values
    pm_values = pms5003.read()  # int
  File "/usr/local/lib/python3.7/dist-packages/pms5003-0.0.5-py3.7.egg/pms5003/__init__.py", line 125, in read
    sof = self._serial.read(1)
  File "/usr/local/lib/python3.7/dist-packages/pyserial-3.4-py3.7.egg/serial/serialposix.py", line 483, in read
    ready, _, _ = select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
KeyboardInterrupt
 

Die Parameter von mqtt-all.py sind aber nicht dokumentiert. Scheint alles nicht ausgereift zu sein.   
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Zitat von: Otto123 am 06 Juli 2020, 21:45:24
Was ich deinen Links so gesehen habe:
Die python Geschichte ist ja zweiteilig, also zwei Teile wo was schief laufen kann.
Aufruf, Parameter, Bibliotheken, Rechte, User, Gruppen
Also hübsch Stück für Stück manuell testen und untersuchen, der Dienst das es automatisch läuft ist zum Schluss ;)
Das stand was von UART, das ist beim Pi auch etwas speziell.

Welche der Komponenten läuft denn schon?

Also ich fasse mal zusammen:

- Installation Enviro Board auf Raspi Zero -> läuft
- MQTT Broker auf FHEM -> läuft
- Kommunikation > von PI Zero über Mosquitto Client nach FHEM -> läuft
- Light oder Weather Python Scripts mit Ausgabe an Konsole -> läuft

Der letzte Baustein wäre nun das MQTT Pyhon Script lauffähig zu bekommen. Das scheitert gerade daran, das das Script auf die PMS und Gas Sensoren zugreift, die ich aber beide nicht habe. Der Kommentar des Entwicklers auf meine Frage ob er sein Script an das Enviro Board anpassen könnte (nicht Enviro+ mit PMS) ist:

"...you would need to comment out a few lines from the existing script, please have a go.;)

Ich habe jetzt mal wild im Script auskommentiert aber ich bekomme es nicht hin.

@Otto: würdest du mir dabei helfen? Ich habe das Script mal angehängt. Zum Schluss muss dann noch als Service laufen. 
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

Original
            values = read_values(bme280, pms5003)
Versuch mal Zeile 200 so zu ändern:
#            values = read_values(bme280, pms5003)
            values = read_values(bme280)
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

Borkk

Zitat von: Otto123 am 07 Juli 2020, 13:49:35
Original
            values = read_values(bme280, pms5003)
Versuch mal Zeile 200 so zu ändern:
#            values = read_values(bme280, pms5003)
            values = read_values(bme280)


Das hatte ich schon mal versucht:

  File "mqtt-all.py", line 201
    values = read_values(bme280)
    ^
IndentationError: unexpected indent


Ich habe gestern lange versucht, auch andere Zeilen auszukommentieren aber ich bekomme immer Fehlermeldungen. Am Ende wäre es Glücksache wenn ich die richtigen Zeilen erwische. Ich kann einfach nicht Programmieren.   :(
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Otto123

Versuch mal so wie im Anhang. Ich kann es leider nicht testen und habe von der Schlange auch keine wirkliche Ahnung.
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

Borkk

Zitat von: Otto123 am 08 Juli 2020, 09:11:56
Versuch mal so wie im Anhang. Ich kann es leider nicht testen und habe von der Schlange auch keine wirkliche Ahnung.

Danke für deine Hilfe, nur leider...


...
name 'pms5003' is not defined
name 'pms5003' is not defined
name 'pms5003' is not defined
name 'pms5003' is not defined
name 'pms5003' is not defined
name 'pms5003' is not defined
^CTraceback (most recent call last):
  File "mqtt-new.py", line 200, in main
    values = read_values(bme280, pms5003)
NameError: name 'pms5003' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "mqtt-new.py", line 212, in <module>
    main()
  File "mqtt-new.py", line 208, in main
    print(e)
KeyboardInterrupt
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Wenn ich in der Zeile 200 die folgende Änderung machen:


# values = read_values(bme280, pms5003)
    values = read_values(bme280)


kommt das:

read_values() missing 1 required positional argument: 'pms5003'
read_values() missing 1 required positional argument: 'pms5003'
^Cread_values() missing 1 required positional argument: 'pms5003'Traceback (most recent call last):
  File "mqtt-new.py", line 201, in main
    values = read_values(bme280)
TypeError: read_values() missing 1 required positional argument: 'pms5003'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "mqtt-new.py", line 213, in <module>
    main()
  File "mqtt-new.py", line 209, in main
    print(e)
KeyboardInterrupt
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Mittlerweile hat der Developer ein issue auf Git aufgemacht.

https://github.com/robmarkcole/rpi-enviro-mqtt/issues/7

Wenn wir hier nicht zu einer Lösung kommen, dann schreibe ich mal da was rein.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Ich habe jetzt eine Lösung erarbeitet. Das grundsätzliche Problem besteht darin, das es ein Enviro und ein Enviro+ Board gibt das Enviro+ hat zusätzlich einen MICS6814 analog gas sensor. Die Example MQTT Scripts gehen oft von einem Enviro+ Board aus und laufen in einen Fehler wenn man "nur" ein Enviro Board hat.

Ich habe das mitgelieferte mqtt-all.py Script nicht zum laufen bekommen, bin aber mit diesem Projekt erfolgreich gewesen. https://github.com/hotplot/enviroplus-mqtt

Für ein ENVIRO Board kann die angehängte logger.py verwendet werden.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

Borkk

Ich habe hier noch weitergearbeitet und habe das mitgelieferte mqtt-all.py Script angepasst und als Service implementiert. Die Lösung zeigt nun alle Werte auf dem Display und sendet sie per MQTT an FHEM.

Wer Interesse hat dem stelle ich das fertig Pi Zero Image gerne zur Verfügung.

Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...