Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE

Begonnen von supernova1963, 23 September 2018, 19:17:21

Vorheriges Thema - Nächstes Thema

Tom71

Nein, leider nicht. Keine Reaktion im log.
zigbee2mqtt hat auch aktuelle Version 1.1.1

Zitat von: Ralf W. am 03 März 2019, 19:48:05
Nach klacken (Werkseinstellung) stromlos machen, einen Moment warten und einstecken. Dann wird er erkannt.
Gesendet von meinem SM-T585 mit Tapatalk
Homematic | RaspberryMatic

Tom71

#361
(https://uploads.tapatalk-cdn.com/20190303/8ca3a815672f1babc5bde4f2eef5de3b.jpg)

Diesen Plug habe ich.

Update: Jetzt hat es geklappt. Ich hatte den Plug vermutlich immer zu kurz vom Netz genommen, nach dem Reset.
Homematic | RaspberryMatic

dk3572

Hallo,

ich habe den Stick nach dieser Anleitung auf meinem Intel Nuc Ubuntu 18.04 installiert.
https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html

Die Installation wird mit dieser Meldung beendet:
dieter@intelnuc:/opt/zigbee2mqtt$ npm install
audited 1596 packages in 3.298s
found 2 moderate severity vulnerabilities
  run `npm audit fix` to fix them, or `npm audit` for details

┌──────────────────────────────────────────────────────────┐
│                 npm update check failed                  │
│           Try running with sudo or get access            │
│           to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/dieter/.config │
└──────────────────────────────────────────────────────────┘


Leider kann ich ihn nicht starten:
dieter@intelnuc:/opt/zigbee2mqtt$ npm start

> zigbee2mqtt@1.1.1 start /opt/zigbee2mqtt
> node index.js

  zigbee2mqtt:info 2019-3-4 18:28:22 Logging to directory: '/opt/zigbee2mqtt/data/log/2019-03-04.18-28-22'
  zigbee2mqtt:info 2019-3-4 18:28:22 Starting zigbee2mqtt version 1.1.1 (commit #92d88b6)
  zigbee2mqtt:info 2019-3-4 18:28:22 Starting zigbee-shepherd
  zigbee2mqtt:info 2019-3-4 18:28:22 Error while starting zigbee-shepherd, attemping to fix... (takes 60 seconds)
  zigbee2mqtt:info 2019-3-4 18:29:22 Starting zigbee-shepherd
  zigbee2mqtt:error 2019-3-4 18:29:22 Error while starting zigbee-shepherd!
  zigbee2mqtt:error 2019-3-4 18:29:22 Press the reset button on the stick (the one closest to the USB) and start again
  zigbee2mqtt:error 2019-3-4 18:29:22 Failed to start
        {"message":"Error: Permission denied, cannot open /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193B05E3-if00","stack":"Error: Error: Permission denied, cannot open /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193B05E3-if00"}
^C  zigbee2mqtt:error 2019-3-4 18:30:42 Not connected to MQTT server!
  zigbee2mqtt:error 2019-3-4 18:30:42 Cannot send message: topic: 'zigbee2mqtt/bridge/state', payload: 'offline
  zigbee2mqtt:info 2019-3-4 18:30:42 zigbee-shepherd stopped


Reset Button, Server neu gestartet, Rechte (sudo chown -R dieter:dieter /opt/zigbee2mqtt) vergebn, alles mehrfach versucht.

Die configuration.yaml sieht so aus:
# Home Assistant integration (MQTT discovery)
homeassistant: false

# allow new devices to join
permit_join: false

# MQTT settings
mqtt:
  client_id: 'zigbee_stick'
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user:
  # password:

# Serial settings
serial:
  # Location of CC2531 USB sniffer
  port: /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193B05E3-if00


Ich konnte ihn einmal starten und es wurde das Device angelegt:
defmod MQTT2_zigbee_stick MQTT2_DEVICE zigbee_stick
attr MQTT2_zigbee_stick IODev MQTT2_Server
attr MQTT2_zigbee_stick bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
attr MQTT2_zigbee_stick getList devicelist:noArg log zigbee2mqtt/bridge/config/devices\
  networkmap_raw:noArg raw zigbee2mqtt/bridge/networkmap raw\
  networkmap_graphviz:noArg graphviz zigbee2mqtt/bridge/networkmap graphviz
attr MQTT2_zigbee_stick model L_01_zigbee2mqtt_bridge
attr MQTT2_zigbee_stick readingList zigbee2mqtt/bridge/state:.* state\
  zigbee2mqtt/bridge/config/devices:.* {}\
  zigbee2mqtt/bridge/config/log_level:.* log_level\
  zigbee2mqtt/bridge/config/permit_join:.* permit_join\
  zigbee2mqtt/bridge/config/rename:.* { json2nameValue($EVENT, 'rename_') }\
  zigbee2mqtt/bridge/log:.*\"type\".\"devices\".\"message\".* devices\
  zigbee2mqtt/bridge/log:.* log\
  zigbee2mqtt/bridge/networkmap:.* {}\
  zigbee2mqtt/bridge/networkmap/graphviz:.* graphviz\
  zigbee2mqtt/bridge/networkmap/raw:.* raw\
  zigbee2mqtt/bridge/config:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_stick room MQTT2_DEVICE
attr MQTT2_zigbee_stick setList log_level:debug,info,warn,error zigbee2mqtt/bridge/config/log_level $EVTPART1\
  permit_join:true,false zigbee2mqtt/bridge/config/permit_join $EVTPART1\
  remove:textField zigbee2mqtt/bridge/config/remove $EVTPART1\
  rename:textField zigbee2mqtt/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  x_add_to_group:textField zigbee2mqtt/bridge/group/$EVTPART1/add $EVTPART2\
  x_rm_from_group:textField zigbee2mqtt/bridge/group/$EVTPART1/remove $EVTPART2\
  x_rm_from_all_groups:textField zigbee2mqtt/bridge/group/$EVTPART1/remove_all $EVTPART2
attr MQTT2_zigbee_stick setStateList on off

setstate MQTT2_zigbee_stick offline
setstate MQTT2_zigbee_stick 2019-03-04 18:24:31 state offline


Hier noch das MQTT2_Server Device:
defmod MQTT2_Server MQTT2_SERVER 1883 global
attr MQTT2_Server autocreate 1
attr MQTT2_Server disable 0
attr MQTT2_Server icon mqtt
attr MQTT2_Server room System

setstate MQTT2_Server 2019-03-04 18:24:31 RETAIN {"zigbee2mqtt/bridge/state":"offline"}
setstate MQTT2_Server 2019-03-04 18:24:31 nrclients 0
setstate MQTT2_Server 2019-03-04 18:22:25 state Initialized


Wäre für Hilfe sehr dankbar und liefere auch gerne weitere Infos.
VG Dieter

Tom71

Hallo Dieter,

2 Fragen :
- welche Ausgabe hat ls -la /dev/serial/by-id/
- läuft dein MQTT-Server auf dem gleichen host?

Ich starte zigbee2mqtt als root. Also "sudo npm start", bzw. habe es als service eingerichtet.

Homematic | RaspberryMatic

dk3572

Zitat von: Tom71 am 04 März 2019, 19:14:03
Hallo Dieter,

2 Fragen :
- welche Ausgabe hat ls -la /dev/serial/by-id/
- läuft dein MQTT-Server auf dem gleichen host?

Ich starte zigbee2mqtt als root. Also "sudo npm start", bzw. habe es als service eingerichtet.

dieter@intelnuc:~$ ls -la /dev/serial/by-id/
total 0
drwxr-xr-x 2 root root 80 Mär  4 18:22 .
drwxr-xr-x 4 root root 80 Mär  4 18:22 ..
lrwxrwxrwx 1 root root 13 Mär  4 18:22 usb-busware.de_CUL868-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Mär  4 18:22 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193B05E3-if00 -> ../../ttyACM1


Ja, läuft alles auf dem Nuc.

Mit sudo hatte ich schon mehrfach versucht, sieht dann so aus:
dieter@intelnuc:/opt/zigbee2mqtt$ sudo npm start

> zigbee2mqtt@1.1.1 start /opt/zigbee2mqtt
> node index.js

  zigbee2mqtt:info 2019-3-4 19:16:28 Logging to directory: '/opt/zigbee2mqtt/data/log/2019-03-04.19-16-28'
  zigbee2mqtt:info 2019-3-4 19:16:28 Starting zigbee2mqtt version 1.1.1 (commit #92d88b6)
  zigbee2mqtt:info 2019-3-4 19:16:28 Starting zigbee-shepherd
  zigbee2mqtt:info 2019-3-4 19:16:29 zigbee-shepherd started
  zigbee2mqtt:info 2019-3-4 19:16:29 Coordinator firmware version: '20181024'
  zigbee2mqtt:info 2019-3-4 19:16:29 Currently 0 devices are joined:
  zigbee2mqtt:info 2019-3-4 19:16:29 Zigbee: disabling joining new devices.
  zigbee2mqtt:info 2019-3-4 19:16:29 Connecting to MQTT server at mqtt://localhost
  zigbee2mqtt:info 2019-3-4 19:16:29 zigbee-shepherd ready
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: Connection refused: Bad username or password
    at MqttClient._handleConnack (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:920:15)
    at MqttClient._handlePacket (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:350:12)
    at work (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:292:12)
    at Writable.writable._write (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:302:5)
    at doWrite (/opt/zigbee2mqtt/node_modules/readable-stream/lib/_stream_writable.js:428:64)
    at writeOrBuffer (/opt/zigbee2mqtt/node_modules/readable-stream/lib/_stream_writable.js:417:5)
    at Writable.write (/opt/zigbee2mqtt/node_modules/readable-stream/lib/_stream_writable.js:334:11)
    at Socket.ondata (_stream_readable.js:667:20)
    at Socket.emit (events.js:189:13)
    at addChunk (_stream_readable.js:284:12)
Emitted 'error' event at:
    at MqttClient._handleConnack (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:922:10)
    at MqttClient._handlePacket (/opt/zigbee2mqtt/node_modules/mqtt/lib/client.js:350:12)
    [... lines matching original stack trace ...]
    at addChunk (_stream_readable.js:284:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! zigbee2mqtt@1.1.1 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the zigbee2mqtt@1.1.1 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/dieter/.npm/_logs/2019-03-04T18_16_29_506Z-debug.log


Service habe ich auch eingerichtet. Startet natürlich auch nicht.

Danke schon mal für deine Unterstützung.

Tom71

#365

Error: Connection refused: Bad username or password


Hast du auf dem mosquitto server ein passwort eingerichtet? Du kannst auch mal ein

mosquitto_pub -h localhost  -t topic -m 'message'

ausführen, um zu sehen, ob der mosquitto server richtig läuft.
Läuft der mosquitto server innerhalb von fhem oder als eigener service?

Was du auch noch machen kannst, ist mehr debug vom zigbee2mqtt in der configuration.yaml:


..
advanced:
  log_level: debug
serial:
...

Homematic | RaspberryMatic

dk3572

Zitat von: Tom71 am 04 März 2019, 19:58:24

Error: Connection refused: Bad username or password


Hast du auf dem mosquitto server ein passwort eingerichtet? Du kannst auch mal ein

mosquitto_pub -h localhost  -t topic -m 'message'

ausführen, um zu sehen, ob der mosquitto server richtig läuft.
Läuft der mosquitto server innerhalb von fhem oder als eigener service?

Was du auch noch machen kannst, ist mehr debug vom zigbee2mqtt in der configuration.yaml:


..
advanced:
  log_level: debug
serial:
...


mosquitto?
Habe ich nicht. Muss ich den installieren?
Dachte das läuft mit dem MQTT2_Server.
Und auf dem habe ich kein Passwort eingerichtet. Danach habe ich auch schon gesucht, aber nichts gefunden. Wie richte ich das ein?

Beta-User

man kann die mosquitto-client-Dinge auch nutzen mit MQTT2_SERVER. Und nein, man braucht keinen externen Server...
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

dk3572

#368
Konnte es jetzt starten.
Ich hatte bei allowed web den MQTT2_Server eingetragen.
Habe ihn jetzt entfernt.
Aber wie richte ich das richtig ein in allowed?

Und was heiß "man braucht keinen externen Server"?

Edit:
Kann es auch nur mit sudo starten.
Wie baue ich sudo hier ein?
[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=dieter

[Install]
WantedBy=multi-user.target

Beta-User

Sorry, aber irgendwie stehe jetzt ich bei den Fragen auf dem Schlauch:

allowed bedeutet: Jeder MQTT-Client (also Geräte von "außerhalb FHEM", die was an den MQTT2_SERVER liefern wollen), müssen sich anmelden (üblicherweise mit user+passwort).

"man braucht keinen externen Server" heißt: In jeder MQTT-Welt gibt es (mindetens) einen Server, der die zentrale Verwaltung der Daten macht, früher mal Broker genannt. Bevor es MQTT2_SERVER gab, mußte das ein separater Dienst sein, jetzt kann das MQTT2_SERVER als FHEM-Modul "intern" übernehmen. Aus Sicht jedes anderen Geräts von "außerhalb" ist es (ziemlich) egal, ob jetzt MQTT2_SERVER die Daten entgegennimmt oder z.B. mosquitto.

Da mosquitto_sub und mosquitto_pub auch nur (software)-Geräte simulieren, kann man die auch mit MQTT2_SERVER nutzen (was aber wenig Sinn macht, da man z.B. rawEvents am MQTT2_SERVER anschalten kann und dann auch den ganzen Verkehr auf der MQTT-Seite sehen kann...).

Steht aber alles im FHEM-Wiki bei den MQTT2-Artikeln; Verbesserungsvorschläge dazu bitte im Wiki-Bereich des Forums ;) .
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

dk3572

Guten Morgen,

danke für die ausführliche Erklärung. Genau so habe ich es auch verstanden, nach dem ich mich durch den Wiki Artikel gearbeitet hatte  ;)
Unverständlich war für mich hier nur deine Aussage "man braucht keinen externen Server".

Meine Fragen waren aber 2 andere.

1. Wie und wo genau trage ich den MQTT2_Server in allowed ein?
    Einfach nur in allowed web den Haken bei MQTT2_Server setzen?
    Ist dann meine basicAuth das Passwort das ich die yaml. eintragen muss?

2. Da ich zigbee2mqtt, warum auch immer, nur mit sudo starten kann, wie trage ich das sudo in die zigbee2mqtt.service Datei ein?

VG Dieter

rudolfkoenig

ZitatEinfach nur in allowed web den Haken bei MQTT2_Server setzen?
Und dafuer sorgen, dass allowed ein "set allowed basicAut username passwort" ausgefuehrt wurde.
Das merkt man daran, das danach ein basicAuth Attribut mit SHA am Anfang erzeugt ist.

dk3572

Zitat von: rudolfkoenig am 05 März 2019, 09:31:58
Und dafuer sorgen, dass allowed ein "set allowed basicAut username passwort" ausgefuehrt wurde.
Das merkt man daran, das danach ein basicAuth Attribut mit SHA am Anfang erzeugt ist.

Das habe ich ja bereits für web gemacht.
Meine Frage ist ja, muss die basicAut mit dem SHA am Anfang in die yaml. oder das "reale" Passwort?
Ich habe nämlich schon beides versucht, klappt aber nicht.

Und gibt es hierzu auch einen Tipp?  ;)
Da ich zigbee2mqtt, warum auch immer, nur mit sudo starten kann, wie trage ich das sudo in die zigbee2mqtt.service Datei ein?

Wäre sehr nett und hilfreich.

Danke und VG
Dieter

Beta-User

Zitat von: dk3572 am 05 März 2019, 09:39:20
Und gibt es hierzu auch einen Tipp?  ;)
Da ich zigbee2mqtt, warum auch immer, nur mit sudo starten kann, wie trage ich das sudo in die zigbee2mqtt.service Datei ein?
Tippen würde ich auf ein Rechteproblem.
Also: Welche Rechte sind für /opt/zigbee2mqtt vergeben? Es gibt da eine Anleitung auf zigbee2mqtt.io, wo das abgehandelt ist, wenn du andere user nutzt, mußt du das ggf. anpassen.
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

dk3572

Zitat von: Beta-User am 05 März 2019, 10:01:52
Tippen würde ich auf ein Rechteproblem.
Also: Welche Rechte sind für /opt/zigbee2mqtt vergeben? Es gibt da eine Anleitung auf zigbee2mqtt.io, wo das abgehandelt ist, wenn du andere user nutzt, mußt du das ggf. anpassen.

Ja, 1:1 an diese Anleitung habe ich mich gehalten. Nur eben anstatt user pi den user dieter verwendet.
Die Rechte habe ich dann so gesetzt:
sudo chown -R dieter:dieter /opt/zigbee2mqtt