• Weihnachtspause

    Im Zeitraum vom 21.12.2024 bis zum 03.01.2025 erfolgt kein Versand. Ab dem 04.01.2025 sind wir dann wieder wie gewohnt für euch da!

    Das WLANThermo Team wünscht euch allen fröhliche und glückliche Feiertage!

Home Assistant - WLANThermo

reneklandt

New member
Screenshot_2023-08-17-21-26-54-479_com.android.chrome_1.jpg

Automation.wlanthermo_update_channel_2_from_mqtt gibt es und ist auch aktiv...

Wenn am Temperatur Eingang 1 auch ein Thermometer dran hängt, zeigt es auch die korrekten Werte an.
Auch das der soll wert des Lüfters auch nicht angezeigt wird, ist etwas verwunderlich.
 

Moritz82

New member
Schau bitte mal nach den Automatisierungen wann die Ausgeführt wurden. Ich hänge morgen mal meinen Thermo dran und mach dir davon Screenshots, was du in Reihe nachvollziehen kannst. War auch mein großes Problem: Logische Reihenfolge von Thermo sendet über mqtt zu automatisierungs trigger zu values zu switches zu anzeige im Frontend. Habe es gerade auch nicht mehr auf dem Schirm wie die Reihenfolge ist und welchen Weg die Daten nehmen. Werde es aber aufschreiben zum debuggen. :D
 

reneklandt

New member
Hallo Moritz82, konntest du schon den MINIV3 dran hängen und analysieren?
ich habe das in den logs geschaut und gesehen, das die Werte akutalisiert wurden:
- fixed: false
name: 1000K/Maverick
type: 0
- fixed: false
name: Fantast-Neu
type: 1
- fixed: false
name: Fantast
type: 2
- fixed: false
name: 100K/iGrill2
type: 3
- fixed: false
name: ET-73
type: 4
- fixed: false
name: Perfektion
type: 5
- fixed: false
name: 50K
type: 6
- fixed: false
name: Inkbird
type: 7
- fixed: false
name: 100K6A1B
type: 8
- fixed: false
name: Weber_6743
type: 9
- fixed: false
name: Santos
type: 10
- fixed: false
name: 5K3A1B
type: 11
- fixed: false
name: PT100
type: 12
- fixed: false
name: PT1000
type: 13
- fixed: false
name: ThermoWorks
type: 14
- fixed: true
name: Typ K
type: 15
- fixed: true
name: Bluetooth
type: 16
- fixed: true
name: Maverick
type: 17
- fixed: true
name: Connect
type: 18
 

reneklandt

New member
ich habe mal einen MQTT Eplorer dran gahangen und die Daten abgefangen. Folgende Daten werden von MINIV3 gesendet:

Status/settings:

{"device":{"device":"mini","serial":"90380cee16d4","cpu":"esp32","flash_size":16777216,"item":"m3j0CoC230B","hw_version":"v3","sw_version":"v1.2.2","api_version":"1","language":"de"},"system":{"time":"1692771319","unit":"C","ap":"WLANTHERMO-AP","host":"MINIV3","language":"de","version":"v1.2.2","getupdate":"false","autoupd":true,"prerelease":false,"crashreport":true,"hwversion":"V3"},"hardware":["V3"],"api":{"version":"1"},"sensors":[{"type":0,"name":"1000K/Maverick","fixed":false},{"type":1,"name":"Fantast-Neu","fixed":false},{"type":2,"name":"Fantast","fixed":false},{"type":3,"name":"100K/iGrill2","fixed":false},{"type":4,"name":"ET-73","fixed":false},{"type":5,"name":"Perfektion","fixed":false},{"type":6,"name":"50K","fixed":false},{"type":7,"name":"Inkbird","fixed":false},{"type":8,"name":"100K6A1B","fixed":false},{"type":9,"name":"Weber_6743","fixed":false},{"type":10,"name":"Santos","fixed":false},{"type":11,"name":"5K3A1B","fixed":false},{"type":12,"name":"PT100","fixed":false},{"type":13,"name":"PT1000","fixed":false},{"type":14,"name":"ThermoWorks","fixed":false},{"type":15,"name":"Typ K","fixed":true},{"type":16,"name":"Bluetooth","fixed":true},{"type":17,"name":"Maverick","fixed":true},{"type":18,"name":"Connect","fixed":true}],"features":{"bluetooth":true,"pitmaster":true},"pid":[{"name":"SSR SousVide","id":0,"aktor":0,"Kp":104.00,"Ki":0.20,"Kd":0.00,"DCmmin":0.00,"DCmmax":100.00,"opl":0,"SPmin":0.00,"SPmax":0.00,"link":0,"tune":0,"jp":100},{"name":"Kamado","id":1,"aktor":1,"Kp":7.00,"Ki":0.01,"Kd":200.00,"DCmmin":25.00,"DCmmax":100.00,"opl":1,"SPmin":25.00,"SPmax":75.00,"link":0,"tune":0,"jp":80},{"name":"Servo MG995","id":2,"aktor":2,"Kp":104.00,"Ki":0.20,"Kd":0.00,"DCmmin":0.00,"DCmmax":100.00,"opl":0,"SPmin":25.00,"SPmax":75.00,"link":0,"tune":0,"jp":100},{"name":"Damper","id":3,"aktor":3,"Kp":7.00,"Ki":0.01,"Kd":128.00,"DCmmin":25.00,"DCmmax":100.00,"opl":0,"SPmin":25.00,"SPmax":75.00,"link":0,"tune":0,"jp":70}],"aktor":["SSR","FAN","SERVO","DAMPER"],"display":{"updname":"","orientation":0},"iot":{"PMQhost":"192.168.0.5","PMQport":1883,"PMQuser":"hass","PMQpass":"hass","PMQqos":0,"PMQon":true,"PMQint":30,"CLon":true,"CLtoken":"8365e3a2b1b4671305e4f0","CLint":30,"CLurl":"cloud.wlanthermo.de/index.html","CCLon":false,"CCLint":30,"CCLurl":""}}

Status/data:

{"system":{"time":"1692771199","unit":"C","soc":100,"charge":false,"rssi":-49,"online":2},"channel":[{"number":1,"name":"Kanal 1","typ":0,"temp":999.00,"min":90.00,"max":200.00,"alarm":2,"color":"#0C4C88","fixed":false,"connected":false},{"number":2,"name":"Kanal 2","typ":0,"temp":999.00,"min":10.00,"max":35.00,"alarm":0,"color":"#22B14C","fixed":false,"connected":false},{"number":3,"name":"Kanal 3","typ":0,"temp":999.00,"min":0.00,"max":0.00,"alarm":0,"color":"#EF562D","fixed":false,"connected":false},{"number":4,"name":"Kanal 4","typ":0,"temp":999.00,"min":0.00,"max":0.00,"alarm":0,"color":"#FFC100","fixed":false,"connected":false},{"number":5,"name":"Kanal 4","typ":0,"temp":24.90,"min":0.00,"max":200.00,"alarm":1,"color":"#A349A4","fixed":false,"connected":false},{"number":6,"name":"Kanal 4","typ":0,"temp":999.00,"min":1.00,"max":0.00,"alarm":0,"color":"#804000","fixed":false,"connected":false},{"number":7,"name":"Kanal 7","typ":0,"temp":25.10,"min":90.00,"max":200.00,"alarm":0,"color":"#5587A2","fixed":false,"connected":false},{"number":8,"name":"Kanal 8","typ":0,"temp":999.00,"min":0.00,"max":0.00,"alarm":0,"color":"#5C7148","fixed":false,"connected":false}],"pitmaster":{"type":["off","manual","auto"],"pm":[{"id":0,"channel":5,"pid":1,"value":0,"set":0.00,"typ":"auto","typ_last":"auto","set_color":"#ff0000","value_color":"#000000"}]}}
 

Moritz82

New member
Also laut des debugs ist Kanal 4, 5, 6 mit dem Namen "Kanal 4" vorhanden und 5 & 7 ein Temp sensor angeschlossen. Hier mal meiner als vergleich:
Code:
{
   "system":{
      "time":"1693384357",
      "unit":"C",
      "rssi":-62,
      "online":2
   },
   "channel":[
      {
         "number":1,
         "name":"Kanal 1",
         "typ":0,
         "temp":18.40,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#0C4C88",
         "fixed":false,
         "connected":false
      },
      {
         "number":2,
         "name":"Kanal 2",
         "typ":0,
         "temp":18.60,
         "min":0.00,
         "max":95.00,
         "alarm":0,
         "color":"#22B14C",
         "fixed":false,
         "connected":false
      },
      {
         "number":3,
         "name":"Kanal 3",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#EF562D",
         "fixed":false,
         "connected":false
      },
      {
         "number":4,
         "name":"Kanal 4",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#FFC100",
         "fixed":false,
         "connected":false
      },
      {
         "number":5,
         "name":"Kanal 4",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#A349A4",
         "fixed":false,
         "connected":false
      },
      {
         "number":6,
         "name":"Kanal 4",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#804000",
         "fixed":false,
         "connected":false
      },
      {
         "number":7,
         "name":"Kanal 7",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#5587A2",
         "fixed":false,
         "connected":false
      },
      {
         "number":8,
         "name":"Kanal 8",
         "typ":3,
         "temp":999.00,
         "min":0.00,
         "max":0.00,
         "alarm":0,
         "color":"#5C7148",
         "fixed":false,
         "connected":false
      },
      {
         "number":9,
         "name":"Kanal 9",
         "typ":15,
         "temp":19.50,
         "min":80.00,
         "max":300.00,
         "alarm":1,
         "color":"#5C7148",
         "fixed":true,
         "connected":false
      },
      {
         "number":10,
         "name":"Kanal 10",
         "typ":15,
         "temp":999.00,
         "min":10.00,
         "max":35.00,
         "alarm":0,
         "color":"#5C7148",
         "fixed":true,
         "connected":false
      }
   ],
   "pitmaster":{
      "type":[
         "off",
         "manual",
         "auto"
      ],
      "pm":[
         {
            "id":0,
            "channel":9,
            "pid":1,
            "value":70,
            "set":200.00,
            "typ":"auto",
            "typ_last":"auto",
            "set_color":"#ff0000",
            "value_color":"#000000"
         },
         {
            "id":1,
            "channel":10,
            "pid":1,
            "value":0,
            "set":100.00,
            "typ":"auto",
            "typ_last":"auto",
            "set_color":"#FE2EF7",
            "value_color":"#848484"
         }
      ]
   }
}
Benutz am besten https://jsonformatter.curiousconcept.com/ und hier den Code ([_CODE_] ohne _) Block um das zu parsen.

Setz den PitMaster mal auf channel 9&10, so wie bei mir. Evtl habe ich da einen Bug drin, aber da ich Temp 1-8 für meine Fühler nehme, ist die Pit Tempo auf 9&10.
Wenn du auf HOMEASSISTENTURL:8123/config/entities gehst, da BBQ suchen und Attribute aufklappen, sollte sowas stehen:
Screenshot 2023-08-30 104238.jpg

Und im Log (/config/automation/dashboard) ist dies zu finden:
Screenshot 2023-08-30 104606.jpg

Der erste der getriggert wurde in den automatisierungen ist der
Code:
alias: WLANThermo update channel 1 from MQTT
mode: restart
trigger:
  - platform: state
    entity_id: sensor.wlanthermo_channel_1_all
    attribute: name
  - platform: state
    entity_id: sensor.bbq_thermo
    from: unknown
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.wlanthermo_channel_1_all
        state: unavailable
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_1_min
      value: "{{ state_attr('sensor.wlanthermo_channel_1_all', 'min') }}"
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_1_max
      value: "{{ state_attr('sensor.wlanthermo_channel_1_all', 'max') }}"
  - service: input_text.set_value
    data_template:
      entity_id: input_text.wlanthermo_channel_1_name
      value: "{{ state_attr('sensor.wlanthermo_channel_1_all', 'name') }}"
der sollte auch bei dir drin stehen, sonst läuft schon was falsch.
 
Zuletzt bearbeitet:

reneklandt

New member
Hallo Moritz,
zu aller erst, bei mir gibt es gar keinen Kanal 9 und 10, worauf ich den Pitmaster setzen könnte.
1693386526773.png

Die BBQ Thermo Attribute sehen deinen Identisch aus:
1693386952306.png


ich habe den Temperatursensor (Doppelfühler) am Kanal 5/7 dran
1693387074475.png


und die Automatisierungen sehen so aus:
1693387174281.png

das Log von channel 5:

Code:
alias: WLANThermo update channel 5 from MQTT
mode: restart
trigger:
  - platform: state
    entity_id: sensor.wlanthermo_channel_5_all
    attribute: name
  - platform: state
    entity_id: sensor.bbq_thermo
    from: unknown
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.wlanthermo_channel_5_all
        state: unavailable
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_5_min
      value: '{{ state_attr(''sensor.wlanthermo_channel_5_all'', ''min'') }}'
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_5_max
      value: '{{ state_attr(''sensor.wlanthermo_channel_5_all'', ''max'') }}'
  - service: input_text.set_value
    data_template:
      entity_id: input_text.wlanthermo_channel_5_name
      value: '{{ state_attr(''sensor.wlanthermo_channel_5_all'', ''name'') }}'

und vom Kanal 1 wie bei dir:

Code:
alias: WLANThermo update channel 1 from MQTT
mode: restart
trigger:
  - platform: state
    entity_id: sensor.wlanthermo_channel_1_all
    attribute: name
  - platform: state
    entity_id: sensor.bbq_thermo
    from: unknown
condition:
  - condition: not
    conditions:
      - condition: state
        entity_id: sensor.wlanthermo_channel_1_all
        state: unavailable
action:
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_1_min
      value: '{{ state_attr(''sensor.wlanthermo_channel_1_all'', ''min'') }}'
  - service: input_number.set_value
    data_template:
      entity_id: input_number.wlanthermo_channel_1_max
      value: '{{ state_attr(''sensor.wlanthermo_channel_1_all'', ''max'') }}'
  - service: input_text.set_value
    data_template:
      entity_id: input_text.wlanthermo_channel_1_name
      value: '{{ state_attr(''sensor.wlanthermo_channel_1_all'', ''name'') }}'


gern können wir auch eine Teamviewer session machen oder ich geb dir einen User auf meinem Homeassistant. Da kannst du das ggf. besser nachvollziehen.
 

Anhänge

  • 1693386596120.png
    1693386596120.png
    37.6 KB · Aufrufe: 5

Moritz82

New member
Sehr komisch dass dies bei dir anders aus sieht. Wenn das für dich ok ist, dann lass mich wirklich mal im TV bzw mit temporären HA drauf zu greifen und schauen woran das liegt. Sitze eh meist am Rechner da ich als Software Entwickler arbeite. 😅
 

Anhänge

  • 1000026635.png
    1000026635.png
    107.1 KB · Aufrufe: 6
  • Screenshot_20230830-113036.png
    Screenshot_20230830-113036.png
    114.1 KB · Aufrufe: 7

theoggy

New member
@Moritz82
Hi, danke für dein "Plugin".
Leider kommt bei mit das Dashboard nicht und wenn ich über Eintitäten in der UI die Entität öffnen möchte, kommt immer
Diese Entität ("sensor.bbq_thermo") hat keine eindeutige ID, daher können die Einstellungen nicht über die UI verwaltet werden. Schaue in der Dokumentation nach für mehr Details.
Hast du eine Idee, habe alle Plugins von HACS drin und auch sehe ich in der Entität über Attribute die Aktuelle Temperatur.

Haben wir keinen Programmierer hier, der ein richtiges HACS Plugin schreiben könnte :D
 

Moritz82

New member
Ich bin Programmierer, aber leider zu wenig Zeit und Muse mich in die Erstellung von HACS ein zu lesen. 🙈 Ich schreibe schon 7 verschiedene Sprachen, auch php, js aber die Zeit....

Zu deinem Problem: Geh in die mqtt.yaml und ändere

Code:
sensor:
  - name: "BBQ Thermo"
    unique_id: bbq_thermo
    # change topic to your modelname!
    state_topic: "WLanThermo/MINIV3/status/data"
    value_template: "{{ value_json.system.online }}"
    json_attributes_topic: "WLanThermo/MINIV3/status/data"
    json_attributes_template: "{{ value_json | tojson }}"
    enabled_by_default: true

  - name: "BBQ Settings"
    unique_id: bbq_settings
    # change topic to your modelname!
    state_topic: "WLanThermo/MINIV3/status/settings"
    value_template: "{{ value_json.system.host }}"
    json_attributes_topic: "WLanThermo/MINIV3/status/settings"
    json_attributes_template: "{{ value_json | tojson }}"
    enabled_by_default: true
Das sollte das Problem beheben. Da ich grundsätzlich immer über RAW YAML arbeite und nie den grafischen Editor benutze, ist dies nie aufgefallen. :D (So wie die anderen Bugs, die Rene entdeckt hat, ich bei Ihm gefixed habe aber vergessen was es war um im GIT zu ändern. 🤦‍♂️)

P.S. Was heißt "kommt bei mit das Dashboard nicht"? Es taucht nicht auf, es kommen keine Karten, es kommen Fehlermeldungen, es ist weis? Da die Integration klappt (Daten unter Entitäten) ist wahrscheinlich ein anderer Fehler vorhanden, was nur Plugin oder config related sein kann.
 
Zuletzt bearbeitet:

theoggy

New member
P.S. Was heißt "kommt bei mit das Dashboard nicht"? Es taucht nicht auf, es kommen keine Karten, es kommen Fehlermeldungen, es ist weis? Da die Integration klappt (Daten unter Entitäten) ist wahrscheinlich ein anderer Fehler vorhanden, was nur Plugin oder config related sein kann.
Das Dashboard wird mir nicht angezeigt, also es erscheint gar nicht.
Habe da den Fehler oder eine Fehlermeldung auch noch nicht finden können.
 

lutz.diemer

New member
Hi Community, hi @Moritz82,

erst einmal herzlichen Dank für Eure Mühe und Unterstützung, die Ihr hier erbringt. Mit großer Freude habe ich begonnen, HA bei mir einzubinden. Der Erfolg ist ganz OK, ich lerne jeden Tag was dazu... Natürlich habe ich mich dann auch gleich mal an die Integration vom WLANTHERMO gemach - leider hier mit mäßigem Erfolg. Ich habe alles, was Du @Moritz82 auf git bereitgestellt hast, passend gemacht und die Dateien erstellt. Allerdings scheitere ich schon bei der Prüfung der Konfig bevor ich rebooten mag. Die Fehlermeldung lautet:

expected a dictionary for dictionary value @ data['packages']['automation']

Ich habe schon ne ganze Weile gecheckt, Syntax stimmt, auch einfach mal ohne jegliche Anpassungen die Dateien vom git genutzt, nur um zu sehen, ob ich irgendwo Dicke-Daumen habe. Aber das passt alles, YAML-Validatation ist auch fehlerfrei. Ich bin auf der neusten Version von HA unterwegs (Core 2023.11.1, Superv. 2023.10.1) und alles läuft im Docker. MQTT ist natürlich auch installiert und funktioniert.

Ich bin ein wenig ratlos, möchte aber auch nicht ausschließen, dass meine Neulingsstatus in Sachen HA die Ursache ist. Ich habe allerdings schon einiger erfolgreich eingebaut, insofern eben bin ich etwas hilflos und würde mich sehr über Tipps freuen, wo der Knoten liegt...

Ich freue mich auf Eure Antworten und sagen schon mal herzlich Danke.

Cheers
Lutz
 

lutz.diemer

New member
Hi zusammen,

für alle, die ggf. über die gleiche Problematik stolpern: Ihr müsst die Dateien von Git passend für Eure Konfig und die Art, wie Ihr diese ggf. trennt, anpassen. Ich habe z.B. die configuration.yaml recht schmal gehalten und habe die Dinge ausgelagert, auch in Packages... Dann fehlen den YAML-Dateien von Git ein paar Zeilen. Da ich recht neu bin in HA, musste ich mir das erst mal raufschaffen.

Meine Empfehlung also: Schaut Euch genau an, wie das mit dem YAML-Dateien und der Auftrennung in HA funktioniert, dann könnt Ihr sowohl die Dateien als auch Dashboard anpassen...

LG
Lutz
 

lutz.diemer

New member
Hi @Ü-Ei_Fetischist,

ja, wie geschrieben habe ich alles ans Laufen bekommen. Ich habe Dir meine YAMLs für den WLANThermo einmal angehängt, ggf. helfen sie Dir. Dazu ein paar Hinweise:
  • Meine configuration.yaml beinhaltet den include für Packages in dieser Art
Code:
homeassistant:  # Load packages
  packages: !include_dir_named packages
  • Im Verzeichnis /packages habe ich dann einen Unterordner /ks_wlanthermo und darunter die einzelnen YAML-Dateien für den WLANThermo. bitte über die Namensgebung nicht wunder, ich benenne alles mit Ort_Thema, daher das ks_ davor
  • Ich habe die Bezeichnungen in den YAML-Dateien angepasst, so dass es meinen Vorstellungen entspricht. Auch dort findest Du teilweise meine Namensgebung, das musst Du dann ggf. nach gusto anpassen. Das ist ein bisschen mühsam, geht mit SUCHEN-ERSETZEN mit Notepad++ aber ganz gut. Musst Du nicht alles manuell machen und wenn man einmal das Schema durchblickt hat, funktioniert es auch
  • Wenn ich Du wäre, dann würde ich von HA mal ein Backup ziehen und meine Dateien einfach mal einspielen, so wie sie sind, und schauen, was in HA passiert. Über das Backup kannst Du jederzeit zum alten Zustand zurück. Wenn man sieht, was im HA passiert, dann kannst Du auch besser die Einstellungen in den YAMLs anpassen. Sie habe ich es gemacht... Ist ein bisschen trial-and-error, wenn man wie ich neu bei HA ist.
Ich hoffe, Du kommst mit den Infos weiter. Ich wünsche Dir und allen im Forum ein gesundes neues Jahr 2024. Auf die neue Grillsaison :).

LG
Lutz
 

Anhänge

  • wlanthermo.zip
    10.9 KB · Aufrufe: 27

Ü-Ei_Fetischist

New member
Hi @lutz.diemer,

vielen, vielen herzlichen Dank schon einmal! Scheint bisher zu funktionieren.
Ich habe testweise erstmal alles so wie du beschrieben hast bei mir eingefügt, inklusive deiner Ordnerstruktur. Den Dashboard Code wollte ich ins Dashboard kopieren, aber genau da bekomme ich ein Fehler.
Fehler: YAMLException: end of the stream or a document separator is expected (615:1) 612 | - 10 613 | chart: 614 | height: 350px 615 | badges: [] -------^
Ist das badge[] am Ende dort richtig platziert? Dort schmeißt er mir nämlich auch eine Fehlermeldung, sobald ich den Code ins Dashboard kopiere. Sobald ich den Befehl weglasse, kommen wieder neue Fehlermeldungen.

Danke und schöne Feiertage!
LG
 

lutz.diemer

New member
Hi @Ü-Ei_Fetischist,

ich bin mir nicht mehr so sicher, ob die dashboard.yaml korrekt war, hier nochmal live der Code aus HA als Anhang... Das ist ein Reiter in meinem Standard-Dashboard, kein eigenständiges Dashboard. Hier die Struktur meines gesamten Dashboards:

1703599786791.png

Und all das, was in dem ZIP aus dem Anhang drin ist, kommt unter die Abteilung "-title: Grill". Und ja, Du hast Recht, das "badges []" ist da tatsächlich falsch reingerutscht...

Ich hoffe, das hilft. bei mir zumindest läuft es... Viel Spass beim Basteln...

LG
Lutz
 

Anhänge

  • ks_wlanthermo_dashboard.zip
    4.2 KB · Aufrufe: 18
Oben Unten