Docker Container sind eine tolle Sache und erlauben es eine Anwendung schnell auf viele Systeme zu portieren. Wieso also nicht den SMI 260 Solarlogger in ein Gerät verpacken?
Zu meinem erstaunen bieten mittlerweile selbst Raspberry Pi und und ARM-basierte NAS von QNAP die Möglichkeit Docker Container auszuführen. Zu den Vorteilen des Containerns muss man wohl nicht mehr viel sagen.
Warum also nicht den SMI260 SolarLogger zusammen mit Grafana etc. zusammen packen und auf einem kleinen NAS laufen lassen?
Die Wahl viel auf das QNAP TS-231P (zwei Plattenschächte, einen ARM Cortex-A15 Prozesser und 1 GB Arbeitsspeicher. Laut Hersteller verbraucht das Gerät mit Festplatten ~15 Watt.
Nach der Grundinstallation der QNAP Oberfläche muss man noch ein paar Änderungen vornehmen bis der Solar Logger einsatzfähig ist.
Zunächst muss im App Center Docker alias Container Station installiert werden.
Dann kann man den USB Funkstick anstecken. Leider wird dieser nicht automatisch erkannt, da der Kernel die entsprechenden Module nicht automatisch lädt.
Um die serielle Schnittstelle beim Start automatisch zu laden muss ein Autorun Script erstellt werden. Bei QNAP ist die Vorgehensweise je nach Modell unterschiedlich. Eine Auflistung wie es bei eurem Modell geht findet Ihr unter: https://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup
Inhalt der autostart.sh :
#!/bin/bash insmod /usr/local/modules/cp210x.ko
Nun sollte die serielle Schnittstelle bei jedem Start zur Verfügung stehen.
Die Container Station erlaubt es Zusammenstellungen von Containern durch einfügen einer Docker Compose Beschreibung zu erzeugen.
Hier kann nur folgende Beschreibung eingefügt werden, welche dann eine Influx Datenbank, ein Grafana Frontend, einen MQTT Server, den SMI260 Logger und Telegraf als Bindeglied installiert.
version: '3' services: influxdb: image: influxdb:latest container_name: influxdb ports: - "8083:8083" - "8086:8086" - "8090:8090" environment: INFLUXDB_DATA_ENGINE: tsm1 INFLUXDB_REPORTING_DISABLED: 'false' INFLUXDB_DB: SMI INFLUXDB_USER: telegraf INFLUXDB_USER_PASSWORD: telegraf volumes: - influx_data:/var/lib/influxdb networks: - local telegraf: image: telegraf:latest container_name: telegraf links: - influxdb - mqtt networks: - local depends_on: - mqtt volumes: - telegraph_config:/etc/telegraf grafana: image: grafana/grafana-arm32v7-linux:latest container_name: grafana ports: - "3000:3000" environment: GF_INSTALL_PLUGINS: "grafana-clock-panel,briangann-gauge-panel,natel-plotly-panel,grafana-simple-json-datasource,https://github.com/geeks-r-us/mqtt-panel/releases/download/v1.0.0/geeksrus-mqtt-panel-1.0.0.zip;mqtt-panel" links: - influxdb networks: - local volumes: - grafana_data:/var/lib/grafana chronograf: image: chronograf:latest container_name: chronograf ports: - "8888:8888" links: - influxdb networks: - local mqtt: image: eclipse-mosquitto container_name: mqtt ports: - "1883:1883" - "9001:9001" networks: - local volumes: - mqtt_config:/mosquitto/config smimqttgateway: image: geeksrusde/smi260mqttgateway:latest-arm container_name: smi260mqttgateway environment: - MQTTSERVER=mqtt - POLL=120 - SMI_LIST=1234,2345 - SUNSTICKPORT=/dev/ttyUSB0 links: - mqtt devices: - /dev/ttyUSB0 depends_on: - mqtt networks: - local restart: always volumes: influx_data: telegraph_config: grafana_data: mqtt_config: networks: local: driver: bridge
Nun müssen noch ein paar Konfigurationen angepasst werden, welche bei QNAP entweder als Freigabe bereit stellt oder man verwendet die Text Editor App aus dem App Center. Die angelegten Dateien befinden sich unter /Container/container-station-data/lib/docker/volumes/
In der <Application>_telegraf_config/_data/telegraf.conf müssen 2 Abschnitte angepasst werden:
[[outputs.influxdb]] ## The full HTTP or UDP endpoint URL for your InfluxDB instance. ## Multiple urls can be specified as part of the same cluster, ## this means that only ONE of the urls will be written to each interval. # urls = ["udp://localhost:8089"] # UDP endpoint example urls = ["http://influxdb:8086"] # required ## The target database for metrics (telegraf will create it if not exists). database = "telegraf" # required ## Retention policy to write to. Empty string writes to the default rp. retention_policy = "" ## Write consistency (clusters only), can be: "any", "one", "quorum", "all" write_consistency = "any" ## Write timeout (for the InfluxDB client), formatted as a string. ## If not provided, will default to 5s. 0s means no timeout (not recommended). timeout = "5s" username = "telegraf" password = "telegraf"
um die MQTT Daten in die Influx Datenbank zu schreiben. Und die Daten Quelle woher die MQTT Daten eingesammelt werden sollen:
# # Read metrics from MQTT topic(s) [[inputs.mqtt_consumer]] servers = ["tcp://mqtt:1883"] # ## MQTT QoS, must be 0, 1, or 2 # qos = 0 # # ## Topics to subscribe to topics = [ "SMI/#", ] # # # if true, messages that can't be delivered while the subscriber is offline # # will be delivered when it comes back (such as on service restart). # # NOTE: if true, client_id MUST be set # persistent_session = false # # If empty, a random client ID will be generated. # client_id = "" # # ## username and password to connect MQTT server. # # username = "telegraf" # # password = "metricsmetricsmetricsmetrics" # # ## Optional SSL Config # # ssl_ca = "/etc/telegraf/ca.pem" # # ssl_cert = "/etc/telegraf/cert.pem" # # ssl_key = "/etc/telegraf/key.pem" # ## Use SSL but skip chain & host verification # # insecure_skip_verify = false # # ## Data format to consume. # ## Each data format has it's own unique set of configuration options, read # ## more about them here: # ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md # data_format = "influx" data_format = "value" data_type = "float"
Die Konfiguration von MQTT in der <Application>_mqtt_config/_data/mosquitto.conf müssen die folgenden Zeilen angefügt werden:
listener 1883 protocol mqtt listener 9001 protocol websockets
Durch das aktivieren des websocket Ports ist es möglich die Einstellungen wie PowerLimit und PowerState direkt aus Grafana heraus einzustellen.
Grafana ist nun über http://<ip des NAS>:3000 im Browser verfügbar. Initiales Passwort für den Benutzer admin ist ebenfalls admin.
In Grafana muss nun noch die Verbindung zur InfluxDB eingerichtet werden:
Nun kann noch ein Panel zur Visualisierung angelegt werden. An diesem Beispiel muss 7981 durch die ID des Wechselrichters und 192.168.178.47 durch die IP des NAS ersetzt werden.
{ "__inputs": [ { "name": "DS_INFLUXDB", "label": "InfluxDB", "description": "", "type": "datasource", "pluginId": "influxdb", "pluginName": "InfluxDB" } ], "__requires": [ { "type": "panel", "id": "geeksrus-mqtt-panel", "name": "mqtt-panel", "version": "1.0.0" }, { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "6.7.1" }, { "type": "panel", "id": "graph", "name": "Graph", "version": "" }, { "type": "datasource", "id": "influxdb", "name": "InfluxDB", "version": "1.0.0" }, { "type": "panel", "id": "singlestat", "name": "Singlestat", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": "-- Grafana --", "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": true, "gnetId": null, "graphTooltip": 0, "id": null, "links": [], "panels": [ { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "${DS_INFLUXDB}", "format": "watth", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 3, "x": 0, "y": 0 }, "id": 4, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "pluginVersion": "6.2.2", "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Energy" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Erzeugt gesamt", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "${DS_INFLUXDB}", "format": "watth", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 3, "x": 3, "y": 0 }, "id": 10, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "alias": "Erzeugt", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "query": "SELECT max(\"value\") - min(\"value\") FROM \"mqtt_consumer\" WHERE (\"topic\" = 'SMI/7981/Energy') AND $timeFilter", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "max" }, { "params": [ "-" ], "type": "math" } ], [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "min" }, { "params": [ "-" ], "type": "math" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Energy" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Erzeugt", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "${DS_INFLUXDB}", "format": "watt", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 4, "x": 6, "y": 0 }, "id": 8, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Power" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Aktuell", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "${DS_INFLUXDB}", "decimals": 2, "format": "currencyEUR", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 3, "x": 10, "y": 0 }, "id": 12, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" }, { "params": [ " / 1000 *0.28" ], "type": "math" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Energy" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Ersparnis", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" }, { "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 3, "w": 3, "x": 13, "y": 0 }, "id": 16, "maxValue": 100, "minValue": 0, "mode": "Switch", "mqttProtocol": "ws", "mqttServer": "192.168.178.47", "mqttServerPort": 9001, "mqttTopicPublish": "SMI/7981/PowerOn/Set", "mqttTopicSubscribe": "SMI/7981/PowerOn", "offValue": "0", "onValue": "1", "step": 0, "text": "Power", "timeFrom": null, "timeShift": null, "title": "Power State", "type": "geeksrus-mqtt-panel", "value": true }, { "datasource": "${DS_INFLUXDB}", "gridPos": { "h": 3, "w": 16, "x": 0, "y": 3 }, "id": 14, "maxValue": "310", "minValue": 0, "mode": "Slider", "mqttProtocol": "ws", "mqttServer": "192.168.178.47", "mqttServerPort": 9001, "mqttTopicPublish": "SMI/7981/MaxPower/Set", "mqttTopicSubscribe": "SMI/7981/MaxPower", "offValue": "false", "onValue": "true", "step": "1", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [] } ], "text": "Limit", "timeFrom": null, "timeShift": null, "title": "Einspeisebegrenzung", "type": "geeksrus-mqtt-panel", "value": "280" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_INFLUXDB}", "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 24, "x": 0, "y": 6 }, "hiddenSeries": false, "id": 2, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "Erzeugung", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Power" } ] }, { "alias": "Limit", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/MaxPower" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "SMI260 Terrasse", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "watt", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "watt", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "${DS_INFLUXDB}", "fill": 1, "fillGradient": 0, "gridPos": { "h": 8, "w": 24, "x": 0, "y": 15 }, "hiddenSeries": false, "id": 6, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "Power On", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/PowerOn" } ] }, { "alias": "DC Voltage", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/DCVoltage" } ] }, { "alias": "Frequency", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "C", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/Frequency" } ] }, { "alias": "Temp DC DC", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "D", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/TemperatureDCDC" } ] }, { "alias": "Temp DC AC", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "mqtt_consumer", "orderByTime": "ASC", "policy": "default", "refId": "E", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "topic", "operator": "=", "value": "SMI/7981/TemperatureDCAC" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Messwerte", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "refresh": "5s", "schemaVersion": 22, "style": "dark", "tags": [], "templating": { "list": [] }, "time": { "from": "now/d", "to": "now/d" }, "timepicker": { "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "Solar", "uid": "x9xy1FnZk", "variables": { "list": [] }, "version": 23 }
Hi Steve,
erstmal vielen Dank für die Mühe, die Du Dir hier gemacht hast. Für mich wäre das die perfekte Kombination, denn ich habe sowohl den SMI260 nebst USB-Stick als auch ein QNAP TS-251D. Nur leider krieg ich’s nicht hin. Die Container mit Hilfe der passenden Compose-Datei einzurichten hat geklappt. Das einzige, was ich geändert habe, war, die ID des Wechselrichters im Skript korrekt einzutragen. Von den Containern werden alle gestartet, lediglich telegraf nicht. Im Terminal bekomme ich die Meldung:
2023-05-21T14:22:56Z W! [outputs.influxdb] When writing to [http://influxdb:8086]: database „telegraf“ creation failed: Post „http://influxdb:8086/query“: dial tcp: lookup influxdb on 127.0.0.11:53: no such host
2023-05-21T14:22:56Z E! [telegraf] Error running agent: starting input inputs.mqtt_consumer: network Error : dial tcp: lookup mqtt on 127.0.0.11:53: no such host
Das scheint aber nicht der einzige Fehler zu sein, denn MQTT meldet:
1684679398: Client SMI260MQTTGateway disconnected, not authorised.
Dein Skript selbst scheint (halbwegs) zu funktionieren, es sagt:
——————————————–
[2023-05-21 13:43:20.908994] query SMI 7654
——————————————–
[2023-05-21 13:43:20.930597] data received
——————————————–
[2023-05-21 13:43:20.978841] data received
Manufacturer: b4b0
Address: 7654
Exception :
‚7654‘
Hast Du mir vielleicht irgendwelche Tipps? Danke schonmal!
Carsten
Hallo Carsten,
das ist schwer zu sagen. Irgendwie sieht es so aus als würden sich deine Container untereinander nicht sehen. Du kannst mal prüfen ob die im QNAP Netzwerkmanager alle mit eine virtuellen Switch verbunden sind. Evtl. Netzwerk nochmal löschen und neu aufbauen lassen. Schwer aus der ferne zu diagnostizieren.