Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Betatest Adapter NSPanel-lovelace-ui v0.13.x

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    426

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Betatest Adapter NSPanel-lovelace-ui v0.13.x

Geplant Angeheftet Gesperrt Verschoben Tester
980 Beiträge 30 Kommentatoren 168.4k Aufrufe 35 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • T Nicht stören
    T Nicht stören
    ticaki
    schrieb am zuletzt editiert von ticaki
    #941

    Dazu gilt dann noch wiederholtes Drücken startet den Timer neu

    Außerdem gibts noch states, die für detached Buttons erstellt werden, um die Buttonfunktion auch durch ein externes Skript / VIS / whatever schalten zu lassen.

    Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

    Spenden

    1 Antwort Letzte Antwort
    1
    • T ticaki

      Das hier ist zwar genau genommen Breaking da die Funktion aber erste letztes Patch reingekommen ist, mach ich da keinen Major change draus.

      0.13.4 (2026-03-07)

      • (ticaki) added: buttonOnDelayOff / buttonOffDelayOn / buttonDelayOn / buttonDelayOff modes for HW button actions
      • (ticaki) removed: buttonBackFlip

      Neue HW-Button-Modi für Datenpunkte

      Es gibt vier neue Modi, um einen HW-Button-Datenpunkt zeitgesteuert zu schalten:

      • buttonOnDelayOff – Setzt den Datenpunkt sofort auf true und wechselt nach der eingestellten Verzögerung automatisch zurück auf false.
      • buttonOffDelayOn – Setzt den Datenpunkt sofort auf false und wechselt nach der Verzögerung automatisch zurück auf true.
      • buttonDelayOn – Setzt den Datenpunkt erst nach Ablauf der Verzögerung auf true.
      • buttonDelayOff – Setzt den Datenpunkt erst nach Ablauf der Verzögerung auf false.

      Die Verzögerung (delay) wird in Sekunden angegeben. Der Standardwert beträgt 0,25 s. Gültige Werte liegen zwischen 0,001 s und 2.147.483 s (ca. 24 Tage).

      Über den Parameter state wird der Datenpunkt angegeben, der geschaltet werden soll.

      Beispiel:

              buttonLeft: {
                  mode: 'buttonOnDelayOff',
                  delay: 3,
                  state: '0_userdata.0.example_state',
              },
      
      1 Offline
      1 Offline
      13patrick37
      schrieb am zuletzt editiert von
      #942

      @ticaki Hi Tim, funktioniert wunderbar. Also wenn ich "delay" weglassen, dann nimmt es automatisch die 0,25?

      1 Antwort Letzte Antwort
      0
      • 1 Offline
        1 Offline
        13patrick37
        schrieb am zuletzt editiert von
        #943

        b4af192a-2149-4214-b277-cb7c9147d37f-image.png

        Wollte die Zeit bei delay auf 0,3sek setzen.
        Bringt mir allerdings einen Fehler:

        ERROR: Expression expected.
        
                    delay: 0, 3: ,
                              ^
        ERROR: Object literal may only specify known properties, and '3' does not exist in type '{ mode: "buttonOnDelayOff" | "buttonOffDelayOn" | "buttonDelayOn" | "buttonDelayOff"; delay?: number; state: string; }'.
        
        
        T 1 Antwort Letzte Antwort
        0
        • 1 13patrick37

          b4af192a-2149-4214-b277-cb7c9147d37f-image.png

          Wollte die Zeit bei delay auf 0,3sek setzen.
          Bringt mir allerdings einen Fehler:

          ERROR: Expression expected.
          
                      delay: 0, 3: ,
                                ^
          ERROR: Object literal may only specify known properties, and '3' does not exist in type '{ mode: "buttonOnDelayOff" | "buttonOffDelayOn" | "buttonDelayOn" | "buttonDelayOff"; delay?: number; state: string; }'.
          
          
          T Offline
          T Offline
          TT-Tom
          schrieb am zuletzt editiert von
          #944

          @13patrick37

          Englisch, da kommt ein Punkt hin.

          Gruß Tom
          https://github.com/tt-tom17
          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

          NSPanel Script Wiki
          https://github.com/joBr99/nspanel-lovelace-ui/wiki

          NSPanel Adapter Wiki
          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

          1 1 Antwort Letzte Antwort
          0
          • T TT-Tom

            @13patrick37

            Englisch, da kommt ein Punkt hin.

            1 Offline
            1 Offline
            13patrick37
            schrieb am zuletzt editiert von
            #945

            @TT-Tom Das war zu einfach. :D Danke

            1 Antwort Letzte Antwort
            0
            • 1 Offline
              1 Offline
              13patrick37
              schrieb am zuletzt editiert von 13patrick37
              #946

              Hallo zusammen,
              habe gerade ein riesen Problem. Bei uns war zum wiederholten Male Stromausfall.

              Und seitdem zweiten Abschalten vom Strom sind meine Panels alle tot.

              Hatte jemand mal ähnliches Problem?

              Display zeigt nichts mehr an.
              Lt. Tasmota alle im Safeboot.

              T 1 Antwort Letzte Antwort
              0
              • lobomauL Offline
                lobomauL Offline
                lobomau
                schrieb am zuletzt editiert von lobomau
                #947

                Ich habe den Adapter paar Wochen auf einem NSPanel am Laufen.
                Nun wollte ich gerne das zweite NSPanel ebenfalls vom reinen Script zum Adapter wechseln. Der Anfang hat soweit geklappt. Das zweite NSPanel startet und der Standardbildschirm kommt mit dem Wetter und es gibt die andere Seite "Leere". Ebenfalls wurde ein neues Script angelegt für das zweite NSPanel. Nun möchte erstmal das das zweite Panel den gleichen Inhalt zeigt wie das erste Panel. Ich habe den ersten Abschnitt des ersten Scripts (vom NSPanel, das mit dem Adapter läuft) kopiert und in das neue Script des zweiten Panels eingesetzt. Wenn ich das Script starte läuft es ohne nennenswerte Fehler durch, aber beim Panel ändert sich nichts. Habe ich irgendwas dabei vergessen?

                Host: NUC8i3 mit Proxmox:

                • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                • Slave: Pi4
                T 1 Antwort Letzte Antwort
                0
                • lobomauL lobomau

                  Ich habe den Adapter paar Wochen auf einem NSPanel am Laufen.
                  Nun wollte ich gerne das zweite NSPanel ebenfalls vom reinen Script zum Adapter wechseln. Der Anfang hat soweit geklappt. Das zweite NSPanel startet und der Standardbildschirm kommt mit dem Wetter und es gibt die andere Seite "Leere". Ebenfalls wurde ein neues Script angelegt für das zweite NSPanel. Nun möchte erstmal das das zweite Panel den gleichen Inhalt zeigt wie das erste Panel. Ich habe den ersten Abschnitt des ersten Scripts (vom NSPanel, das mit dem Adapter läuft) kopiert und in das neue Script des zweiten Panels eingesetzt. Wenn ich das Script starte läuft es ohne nennenswerte Fehler durch, aber beim Panel ändert sich nichts. Habe ich irgendwas dabei vergessen?

                  T Offline
                  T Offline
                  TT-Tom
                  schrieb am zuletzt editiert von
                  #948

                  @lobomau
                  Das Script gestartet? Hast du alles kopiert oder nur die Seiten. Nicht das jetzt das falsche Topic und Panel drin steht.

                  Bitte das log vom Script nach dem Start zeigen.

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  lobomauL 1 Antwort Letzte Antwort
                  0
                  • 1 13patrick37

                    Hallo zusammen,
                    habe gerade ein riesen Problem. Bei uns war zum wiederholten Male Stromausfall.

                    Und seitdem zweiten Abschalten vom Strom sind meine Panels alle tot.

                    Hatte jemand mal ähnliches Problem?

                    Display zeigt nichts mehr an.
                    Lt. Tasmota alle im Safeboot.

                    T Offline
                    T Offline
                    TT-Tom
                    schrieb am zuletzt editiert von
                    #949

                    @13patrick37
                    Ich würde Tasmota wieder rauf spielen. Hoffentlich hat sich nicht alles zerschossen

                    Gruß Tom
                    https://github.com/tt-tom17
                    Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                    NSPanel Script Wiki
                    https://github.com/joBr99/nspanel-lovelace-ui/wiki

                    NSPanel Adapter Wiki
                    https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                    1 Antwort Letzte Antwort
                    0
                    • T TT-Tom

                      @lobomau
                      Das Script gestartet? Hast du alles kopiert oder nur die Seiten. Nicht das jetzt das falsche Topic und Panel drin steht.

                      Bitte das log vom Script nach dem Start zeigen.

                      lobomauL Offline
                      lobomauL Offline
                      lobomau
                      schrieb am zuletzt editiert von
                      #950

                      @TT-Tom sagte in Betatest Adapter NSPanel-lovelace-ui v0.13.x:

                      falsche Topic und Panel drin steh

                      irgendsowas vermute ich auch. Ich habe den Anhaltspunkt nicht im Script gefunden. Zumal ich nur oben den Kopf geändert habe... oder habe ich diese topic übersehen.
                      Aber ok, ich schicke danach das log.

                      Host: NUC8i3 mit Proxmox:

                      • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                      • Slave: Pi4
                      T 1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        muuulle
                        schrieb am zuletzt editiert von
                        #951

                        Moin,
                        ich bin von einem Raspberry auf eine Synology umgezogen. Ich habe das Panel aus den NSPanel-Einstellungen herausgelöscht und auf dem Panel reset 4 in die Konsole eingegeben.
                        Beim erneuten hinzufügen des Panels wird mir nun diese Fehlermeldung angezeigt. Ich habe in der Dokumentation keinen Hinweis auf die Ursache hierfür gefunden. Kann mir jemand helfen?

                        Bildschirmfoto 2026-03-13 um 15.21.42.png

                        Nach einem verzweifelten Versuch auch die Objekte zu löschen, variiert die Meldung zu sendToRequetFail2.

                        Vielen Dank
                        Christopher

                        T 1 Antwort Letzte Antwort
                        0
                        • T Nicht stören
                          T Nicht stören
                          ticaki
                          schrieb am zuletzt editiert von
                          #952

                          Die Fehlermeldung aus dem Log hilft mir den Fehler einzugrenzen.

                          Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                          Spenden

                          1 Antwort Letzte Antwort
                          0
                          • lobomauL lobomau

                            @TT-Tom sagte in Betatest Adapter NSPanel-lovelace-ui v0.13.x:

                            falsche Topic und Panel drin steh

                            irgendsowas vermute ich auch. Ich habe den Anhaltspunkt nicht im Script gefunden. Zumal ich nur oben den Kopf geändert habe... oder habe ich diese topic übersehen.
                            Aber ok, ich schicke danach das log.

                            T Offline
                            T Offline
                            TT-Tom
                            schrieb am zuletzt editiert von
                            #953

                            @lobomau

                            du kannst eigentlich das komplette Script kopieren, du musst nur hier ganz am Anfang die Daten anpassen, ganz wichtig panelTopic richtig setzen. Mit overrideConfig werden die Einstellungen weiter unten überschrieben.

                                const overrideConfig: Partial<ScriptConfig.Config> = {
                                    // hier kann man die Werte von unten überschreiben bzw nicht ewig im Skript suchen wo nochmal die Farbe steht :)
                                    // pages und subpages geht hier nicht, weil die Seiten ja erst später angelegt werden. Bei const gehts nach Reihenfolge.
                                    panelTopic: 'nspanel/ns_panel4',
                                    weatherEntity: 'pirate-weather.0.',
                                    defaultOffColor: Off,
                                    defaultOnColor: On,
                            
                                    // weatherAddDefaultItems:
                                    // - true  => alle Standard-Wetterelemente hinzufügen
                                    // - false => keine hinzufügen
                                    // - { ... } => selektiv per Schlüssel aktivieren:
                                    //   sunriseSet, forecastDay1, forecastDay2, forecastDay3, forecastDay4, forecastDay5, forecastDay6,
                                    //   windSpeed, windGust, windDirection, uvIndex, solar
                                    // Hinweis: Die einzelnen Schlüssel funktionieren nur, wenn der gewählte Wetteranbieter
                                    // die entsprechenden Daten liefert und diese im Adapter vorbereitet wurden
                                    "weatherAddDefaultItems": false
                            
                                }
                            

                            Gruß Tom
                            https://github.com/tt-tom17
                            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                            NSPanel Script Wiki
                            https://github.com/joBr99/nspanel-lovelace-ui/wiki

                            NSPanel Adapter Wiki
                            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                            lobomauL 1 Antwort Letzte Antwort
                            0
                            • M muuulle

                              Moin,
                              ich bin von einem Raspberry auf eine Synology umgezogen. Ich habe das Panel aus den NSPanel-Einstellungen herausgelöscht und auf dem Panel reset 4 in die Konsole eingegeben.
                              Beim erneuten hinzufügen des Panels wird mir nun diese Fehlermeldung angezeigt. Ich habe in der Dokumentation keinen Hinweis auf die Ursache hierfür gefunden. Kann mir jemand helfen?

                              Bildschirmfoto 2026-03-13 um 15.21.42.png

                              Nach einem verzweifelten Versuch auch die Objekte zu löschen, variiert die Meldung zu sendToRequetFail2.

                              Vielen Dank
                              Christopher

                              T Offline
                              T Offline
                              TT-Tom
                              schrieb am zuletzt editiert von
                              #954

                              @muuulle

                              welche Version hast du im Einsatz?

                              Gruß Tom
                              https://github.com/tt-tom17
                              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                              NSPanel Script Wiki
                              https://github.com/joBr99/nspanel-lovelace-ui/wiki

                              NSPanel Adapter Wiki
                              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                              1 Antwort Letzte Antwort
                              0
                              • T Nicht stören
                                T Nicht stören
                                ticaki
                                schrieb am zuletzt editiert von ticaki
                                #955

                                0.14.0 (2026-03-14)

                                • (tt-tom17) refactored: timezone selection code moved from adapter to admin handler (internal, no UI changes)
                                • (ticaki) added: TempOffset configurable in objects and admin tab (#629)
                                • (ticaki) added: "Update scripts for all panels" button in Maintain tab

                                Anmerkung

                                Vorab ist nicht vollständig getestet - zumindest der Kram den ich gerade eben eingebaut habe :)

                                Um die Temperatur zu verwenden müssen die Panels per Aktualisieren auf den neuesten Konfigurationsstand gebracht werden:

                                Bildschirmfoto 2026-03-14 um 06.41.01.png

                                Auf den Stift klicken und dann oben auf nspanelkonfiguration aktualisieren - dann dauerts 30 Sekunden und dann das nächste.

                                Alternativ auf der Tasmota Konsole folgendes eingeben

                                AdcParam 2,14600,10000,3950
                                

                                Bei der Alternative am Ende den Adapter neustarten - sicher ist sicher.

                                Temperatur einstellen

                                Das geht dann am einfachsten hier:

                                Bildschirmfoto_2026-03-14_um_06.22.49.png Bildschirmfoto 2026-03-14 um 07.11.54.png

                                Bei 4k wird wirklich alles riesig :D


                                @muuulle
                                Ich hab ein hoffentlich besseres error log eingefügt für dein Problem - Die Adminfehlermeldungen werden aber nie genug infos enthalten, dass es mehr als ein "da läuft was schief" geben kann. Daher bitte IMMER im Protokoll gucken.

                                Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                Spenden

                                M 1 Antwort Letzte Antwort
                                0
                                • T Nicht stören
                                  T Nicht stören
                                  ticaki
                                  schrieb am zuletzt editiert von ticaki
                                  #956

                                  Mein aktuelles Dauerprojekt

                                  Roborock-Adapter (Saugroboter)

                                  Ich bastel da immer wieder dran rum, weil der Roborock Adapter nicht so will wie ich, oder ich schnell was rein baue, was aber nicht optimal ist.

                                  Übersichtsseite:

                                  IMG_1262.jpeg
                                  Favoriten: Sind die gespeicherten Programme
                                  Raumreinigung: Multiselekt-Seite für die Räume s.u.
                                  Lädt: Status - adapter interne Funktion - angepasste icons und text zu dem jeweiligen Status
                                  Mop: hab ich vergessen :D
                                  Im Dock: ist er unterwegs oder im dock
                                  Alles: Ist eine Funktion für mein Automatikscript ob nur saugen oder halt alles

                                      const Saugroboter: PageType = {
                                          'type': 'cardGrid',
                                          uniqueName: 'Saugroboter',
                                          'heading': 'Saugroboter',
                                          parent: 'main',
                                          'items': [
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Favorite', name: 'Favoriten', onColor: MSGreen, icon: 'select-multiple-marker' },
                                              { navigate: true, name: 'Raumreinigung', icon: 'play-speed', targetPage: 'Saugroboter-Rooms' },
                                              {
                                                  native: {
                                                      dpInit: 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr',
                                                      template: 'text.roborock.status',
                                                  }
                                              },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Trocken', icon: 'hair-dryer-outline', icon2: 'check-outline', name: 'Mop', onColor: Red, offColor: Blue , enabled:'alias.0.zuhause.og.Technik.Saugroboter.Trocken'},
                                              {id: 'alias.0.zuhause.og.Technik.Saugroboter.Home', icon: 'home', icon2: 'home-export-outline', onColor: Green, offColor: Red},
                                              {id: 'alias.0.zuhause.og.Technik.Saugroboter.nextRunWipeState', icon: 'water', icon2: 'water-off', buttonText: 'Alles', buttonTextOff: 'Nur Saugen'}
                                          ]
                                      };
                                  


                                  Favoriten:
                                  Bildschirmfoto 2026-03-14 um 07.37.09.png

                                  "common": {
                                      "name": "select",
                                      "desc": "Manuell erzeugt",
                                      "role": "level.mode.select",
                                      "type": "string",
                                      "read": true,
                                      "write": true,
                                      "def": "",
                                      "states": null,
                                      "alias": {
                                        "id": "roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.programs.startProgram"
                                      }
                                  

                                  Raumreinigung:

                                  IMG_1263.jpeg

                                  Reinigung s: Multifuktionaler Button mit short und longpress

                                      const Saugroboter2: PageType = {
                                          'type': 'cardGrid2',
                                          uniqueName: 'Saugroboter-Rooms',
                                          'heading': 'Raumreinigung',
                                          parent: 'Saugroboter',
                                          'items': [
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Reinigung', icon: 'restart', targetPageLongPress: 'Saugroboter-CleanDetails', offColor: Gray, targetPage:'Saugroboter' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Kueche', icon: 'cookie-outline' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Badezimmer', icon: 'bathtub-outline' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Flur', icon: 'floor-plan' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Sarah', icon: 'teddy-bear' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Schlafzimmer', icon: 'sleep' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Wohnzimmer', icon: 'youtube-tv' },
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.Raeme.Ankleidezimmer', icon: 'tshirt-v-outline' },
                                          ]
                                      };
                                  
                                      const SaugroboterCleanDetails: PageType = {
                                          'type': 'cardGrid2',
                                          uniqueName: 'Saugroboter-CleanDetails',
                                          'heading': 'Reinigungsoptionen',
                                          parent: 'Saugroboter-Rooms',
                                          'items': [
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.customModeWaterBox', icon: 'water', name: 'wischen', onColor: Blue, offColor: Gray},
                                              { id: 'alias.0.zuhause.og.Technik.Saugroboter.customMode', icon: 'broom', name: 'saugen' , onColor: Green, offColor: Gray},
                                          ]
                                      };
                                  

                                  SaugroboterCleanDetails ist das was erscheint wenn man auf Reinigung s lange drückt.

                                  So schauen die Alias aus:
                                  Bildschirmfoto 2026-03-14 um 07.43.40.png

                                  und so die für die CleanDetails:
                                  Bildschirmfoto 2026-03-14 um 07.50.57.png

                                  Und hier das aussehen von CleanDetails also wenn man auf Reinigung s lange drückt
                                  IMG_1264.jpeg

                                  und hier wenn man auf saugen klickt:
                                  IMG_1265.jpeg

                                  Mein persönliches Automatikscript (für leutz die es sehen wollen)

                                  Mein Automatik-, Nachricht- und alles mögliche was mit Saugroboter zu tun hat Skript
                                  Bei Verwendung müssen die Datenpunkte angepasst werden und die raumsteuerung gelöscht oder auf verhandene Datenpunkte gelegt werden.

                                  export { };
                                  
                                  // ── Datenpunkte – Gerätestatus ────────────────────────────────────────────────
                                  // Datenpunkt: aktueller Gerätestatus des Saugroboters (Zahlenwert)
                                  const currentStateDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.deviceStatus.state';
                                  // Datenpunkt: Reinigungsstatus (0 = inaktiv, sonst aktiv)
                                  const cleaningState = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.deviceStatus.in_cleaning';
                                  // Datenpunkt: Frischzustand (Roboter auf der Basis und einsatzbereit)
                                  const freshState = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.deviceStatus.in_fresh_state';
                                  // Datenpunkt: Akkustand des Saugroboters in Prozent
                                  const batteryState = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.deviceStatus.battery';
                                  // Datenpunkt: Fehlercode des Saugroboters
                                  const errorCodeDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.deviceStatus.error_code';
                                  
                                  // ── Datenpunkte – Befehle & Programme ────────────────────────────────────────
                                  // Datenpunkt: Reinigungsprogramm starten
                                  const startProgramDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.programs.startProgram';
                                  // Datenpunkt: Reinigung stoppen und zur Basis zurückkehren
                                  const stopCommandDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.commands.app_stop';
                                  
                                  // ── Datenpunkte – Dockingstation ─────────────────────────────────────────────
                                  // Datenpunkt: Status des Frischwassertanks (1 = leer, nachfüllen)
                                  const clearWaterBoxDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.dockingStationStatus.clearWaterBoxStatus';
                                  // Datenpunkt: Status des Schmutzwassertanks (1 = voll, leeren)
                                  const dirtyWaterBoxDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.dockingStationStatus.dirtyWaterBoxStatus';
                                  // Datenpunkt: Status des Staubbeutels (1 = voll, wechseln)
                                  const dustBagDP = 'roborock.0.Devices.2LF69GkMA1fMm7kfa4Grr.dockingStationStatus.dustBagStatus';
                                  
                                  // ── Datenpunkte – Automation & Anwesenheit ────────────────────────────────────
                                  // Datenpunkt: Soll beim nächsten Durchlauf auch gewischt werden?
                                  const nextRunWipeState = '0_userdata.0.Automation.Saugroboter.nextRunWipe';
                                  // Datenpunkt: Automatische Reinigung aktiviert/deaktiviert
                                  const automaticDP = '0_userdata.0.Automation.Saugroboter.automatic';
                                  // Datenpunkt: Aktueller Reinigungsauftrag (0 = kein Auftrag)
                                  const currentWorkDP = '0_userdata.0.Automation.Saugroboter.CurrentWork';
                                  // Datenpunkt: Ist jemand zu Hause?
                                  const anyoneDP = '0_userdata.0.Sensoren.Anwesenheit.Anyone';
                                  // Datenpunkt: Ist der Besuchermodus aktiv?
                                  const besuchermodusDP = '0_userdata.0.Kontrollzentrum.Anwesenheit.Besuchermodus';
                                  
                                  // ── Datenpunkte – NsPanel ─────────────────────────────────────────────────────
                                  // Basispfad des NsPanel-Screensaver-Datenpunkts
                                  const panelScreensaverDP = 'nspanel-lovelace-ui.0.panels.C0_49_EF_FA_69_38.cmd.screenSaver';
                                  
                                  // ── Programm-IDs (Roborock) ───────────────────────────────────────────────────
                                  // Programm-ID: Küche reinigen
                                  const programmKueche = '8580588';
                                  // Programm-ID: Bad reinigen
                                  const programmBad = '8580579';
                                  // Programm-ID: Wohnung saugen und wischen
                                  const programmWohnungSaugenWischen = '8580560';
                                  // Programm-ID: Wohnung nur saugen (ohne Wischen)
                                  const programmWohnungSaugen = '8580573';
                                  
                                  // ── Zeitkonstanten ────────────────────────────────────────────────────────────
                                  // Pausezeit in Millisekunden (3 Stunden) – reserviert für spätere Nutzung
                                  const pauseTime = 180 * 60 * 1000;
                                  // Cron-Ausdruck: täglich um 01:00:10 – setzt den Tagesauftrag
                                  const zeitplanTagesreset = '10 0 1 * * *';
                                  // Cron-Ausdruck: alle 15 Minuten zwischen 9 und 19 Uhr – prüft auf Reinigungsbedarf
                                  const zeitplanReinigungscheck = '10 */15 9-19 * * *';
                                  
                                  // ── Reinigungsparameter ───────────────────────────────────────────────────────
                                  // Wochentage, an denen zusätzlich gewischt wird (0=So, 1=Mo, ..., 6=Sa)
                                  const wischTage = [0, 3, 5, 6];
                                  // Mindestakkustand in Prozent, ab dem die automatische Reinigung startet
                                  const minAkkustand = 80;
                                  
                                  // ── Laufzeitvariablen ─────────────────────────────────────────────────────────
                                  let autoStart = false;
                                  // Merker: soll der Roboter nach Beendigung erneut automatisch starten?
                                  let targetAutoStart = autoStart;
                                  // Zähler für aufeinanderfolgende Prüfintervalle ohne Anwesenheit
                                  let counter = 0;
                                  // Aktuell gemeldeter Gerätestatus
                                  let currentState = getState(currentStateDP).val
                                  // Letzter bekannter Zustand war ein Fehler
                                  let lastError = false;
                                  // Ist der Roboter gerade in Betrieb?
                                  let isCleaning = getState(cleaningState).val != 0;
                                  // Ist der Roboter auf der Basis und frisch bereit?
                                  let isFresh = getState(freshState).val != 0;
                                  // Aktueller Akkustand
                                  let battery = getState(batteryState).val;
                                  // Ist die automatische Reinigung aktiviert?
                                  let automaticOn = getState(automaticDP).val;
                                  // Ist jemand da?
                                  let anyone = getState(anyoneDP).val;
                                  
                                  // ── Raumsteuerung ─────────────────────────────────────────────────────────────
                                  
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Wohnzimmer', val: true, ack: false }, function (obj) {
                                     //    _helper('mihome-vacuum.0.rooms.414001031069.roomClean', true, obj);
                                  })
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Küche', val: true, ack: false }, function (obj) {
                                     _helper(startProgramDP, programmKueche, obj);
                                  })
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Flur', val: true, ack: false }, function (obj) {
                                     //    _helper('mihome-vacuum.0.rooms.414001031075.roomClean', true, obj);
                                  })
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Schlafzimmer', val: true, ack: false }, function (obj) {
                                     log('sauge Schlafzimmer');
                                     //    _helper('mihome-vacuum.0.rooms.414001031074.roomClean', true, obj);
                                  })
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Bad', val: true, ack: false }, function (obj) {
                                     _helper(startProgramDP, programmBad, obj);
                                  })
                                  
                                  //Wohnung saugen
                                  on({ id: '0_userdata.0.Automation.Saugroboter.Wohnung_saugen', val: true, ack: false }, function (obj) {
                                     _helper(startProgramDP, programmWohnungSaugenWischen, obj);
                                  })
                                  
                                  // nach Hause
                                  on({ id: '0_userdata.0.Automation.Saugroboter.home', val: true, ack: false }, function (obj) {
                                     targetAutoStart = true;
                                     _helper(stopCommandDP, true, obj);
                                  })
                                  
                                  /** 
                                  * Ab hier sollte alles passen
                                  */
                                  
                                  on({ id: currentStateDP, change: 'ne' }, function (obj) {
                                     currentState = obj.state.val;
                                     // Error
                                     if (currentState === 12) {
                                         lastError = true;
                                     }
                                     // ignore sleeping and idle
                                     else if (currentState != 2 && currentState != 3) {
                                         lastError = false;
                                     }
                                  })
                                  
                                  on({ id: clearWaterBoxDP, change: 'ne' }, function (dp) {
                                     alert()
                                  })
                                  
                                  
                                  on({ id: dirtyWaterBoxDP, change: 'ne' }, function (dp) {
                                     alert()
                                  })
                                  
                                  on({ id: dustBagDP, change: 'ne' }, function (dp) {
                                     alert()
                                  })
                                  function alert() {
                                     let itemAlert = getState(clearWaterBoxDP).val === 1
                                     let alert = itemAlert
                                     if (itemAlert) sendToPanel(itemAlert, 'Saugroboter-Service', 'Wasser nachfüllen');
                                  
                                     itemAlert = getState(dustBagDP).val === 1
                                     if (itemAlert && !alert) sendToPanel(itemAlert, 'Saugroboter-Service', 'Staubsaugerbeutel wechseln');
                                     alert = alert || itemAlert
                                  
                                     itemAlert = getState(dirtyWaterBoxDP).val === 1
                                     if (itemAlert && !alert) sendToPanel(itemAlert, 'Saugroboter-Service', 'Schutzwasser entleeren');
                                     alert = alert || itemAlert
                                  
                                     if (!alert) sendToPanel(false, '', '');
                                  }
                                  alert()
                                  
                                  function sendToPanel(val: boolean, headline: string, text: string): void {
                                     if (val) {
                                         sendTo('nspanel-lovelace-ui.0', 'setPopupNotification', { id: 'RoboterService', headline, text })
                                  
                                         setState(`${panelScreensaverDP}.headingNotification`, headline)
                                         setState(`${panelScreensaverDP}.textNotification`, text)
                                         setState(`${panelScreensaverDP}.activateNotification`, true);
                                     } else {
                                         sendTo('nspanel-lovelace-ui.0', 'setPopupNotification', { id: 'RoboterService', priority: -1 })
                                         setState(`${panelScreensaverDP}.activateNotification`, false);
                                     }
                                  }
                                  
                                  
                                  on({ id: cleaningState, change: 'ne' }, (obj) => {
                                     isCleaning = obj.state.val != 0;
                                  })
                                  on({ id: freshState, change: 'ne' }, (obj) => {
                                     isFresh = obj.state.val != 0;
                                     if (isFresh && targetAutoStart) {
                                         setState(currentWorkDP, 0, true);
                                         setState(nextRunWipeState, false, true);
                                         targetAutoStart = false;
                                     }
                                  })
                                  on({ id: batteryState, change: 'ne' }, (obj) => {
                                     battery = obj.state.val;
                                  })
                                  
                                  function _helper(id, value, obj) {
                                     setState(id, value);
                                     setState(obj.id, true, true);
                                     setStateDelayed(obj.id, false, true, 3000);
                                  }
                                  
                                  on({ id: errorCodeDP, change: 'ne' }, (obj) => {
                                     errorMsg(obj.state.val);
                                  })
                                  errorMsg(getState(errorCodeDP).val)
                                  
                                  function errorMsg(code: number): void {
                                     const messages = {
                                         "0": "Kein Fehler",
                                         "1": "Lasersensorfehler",
                                         "2": "Kollisionssensorfehler",
                                         "3": "Rad schwebt",
                                         "4": "Abgrundsensorfehler",
                                         "5": "Hauptbürste blockiert",
                                         "6": "Seitenbürste blockiert",
                                         "7": "Rad blockiert",
                                         "8": "Gerät festgefahren",
                                         "9": "Staubbehälter fehlt",
                                         "10": "Filter blockiert",
                                         "11": "Magnetfeld erkannt",
                                         "12": "Niedriger Akkustand",
                                         "13": "Ladeproblem",
                                         "14": "Batteriefehler",
                                         "15": "Wandsensorfehler",
                                         "16": "Unebene Oberfläche",
                                         "17": "Seitenbürstenfehler",
                                         "18": "Sauggebläsefehler",
                                         "19": "Ladestation ohne Strom",
                                         "20": "Unbekannter Fehler",
                                         "21": "Laser-Drucksensorproblem",
                                         "22": "Ladesensorproblem",
                                         "23": "Dockproblem",
                                         "24": "No-Go-Zone oder unsichtbare Wand erkannt",
                                         "254": "Behälter voll",
                                         "255": "Interner Fehler",
                                         "-1": "Unbekannter Fehler"
                                     }
                                     if (code > 0) sendTo('nspanel-lovelace-ui.0', 'setPopupNotification', { id: 'RoboterFehler', headline: 'Saugroboterfehler', text: messages[String(code)], priority: 40, colorHeadline: '#FF0000', textSize: 3, type: 'acknowledge', buttonRight: 'Ok' })
                                     else sendTo('nspanel-lovelace-ui.0', 'setPopupNotification', { id: 'RoboterFehler', headline: 'Saugroboterfehler', text: messages[String(code)], priority: -1 })
                                  }
                                  
                                  schedule(zeitplanTagesreset, setCurrentWork);
                                  
                                  schedule(zeitplanReinigungscheck, startCurrentWork);
                                  
                                  
                                  function checkAndSendMsg() {
                                     let msg = 'Saugroboterservice nötig: - Staubbehälter leeren ';
                                     if (getState('mihome-vacuum.0.consumable.filter').val <= 0) msg += '- Filter austauschen '
                                     if (getState('mihome-vacuum.0.consumable.main_brush').val <= 0) msg += '- Bodenbürste austauschen '
                                     if (getState('mihome-vacuum.0.consumable.sensors').val <= 0) msg += '- Sensoren reinigen '
                                     if (getState('mihome-vacuum.0.consumable.side_brush').val <= 0) msg += '- Seitenbürste austauschen '
                                     //sendTo('telegram', {user: 'Tim', text: msg }); 
                                  }
                                  
                                  function setCurrentWork() {
                                     setState(currentWorkDP, 1, true);
                                     setState(nextRunWipeState, getState(nextRunWipeState).val || wischTage.includes(new Date().getDay()), true)
                                  }
                                  
                                  function isReady(): boolean {
                                     if (isCleaning) return false;
                                     if (battery < minAkkustand) return false
                                     if (lastError) return false;
                                     return true;
                                  }
                                  
                                  function startCurrentWork(anyone?: boolean) {
                                     if (!automaticOn) return;
                                     if ((anyone === undefined ? getState(anyoneDP).val : anyone)) {
                                         counter = 0;
                                         return;
                                     }
                                     if (getState(currentWorkDP).val <= 0) return;
                                     if (getState(besuchermodusDP).val) return;
                                     //log('targetAutoStart: ' + targetAutoStart + ' - isReady(): ' + isReady()) + ' - dontStartNewWork: ' + dontStartNewWork;
                                     if ( !isReady() || targetAutoStart) return;
                                     if (counter++ < 2) return;
                                     targetAutoStart = true;
                                     log('Starte automatische Reinigung')
                                     setState(startProgramDP, (getState(nextRunWipeState).val ? programmWohnungSaugenWischen : programmWohnungSaugen));
                                     setState(currentWorkDP, 0, true);
                                  }
                                  
                                  on({ id: anyoneDP, change: 'ne' }, function (obj) {
                                     anyone = obj.state.val
                                     if (!automaticOn) return;
                                     if (obj.state.val) {
                                         if ( targetAutoStart && !isReady && isCleaning) {
                                             setState(stopCommandDP, true);
                                             targetAutoStart = false;
                                             autoStart = false;
                                         }
                                     }
                                  });
                                  on({ id: automaticDP, change: 'ne' }, function (obj) {
                                     automaticOn = obj.state.val;
                                     setState(obj.id, obj.state.val, true);
                                  })
                                  
                                  
                                  

                                  Zur Funktionsweise:

                                  Automatikkram:
                                  Das Skript prüft alle 15 Minuten zwischen 9-19 Uhr ob die Bedingungen erfüllt sind. Bei 2 mal hinter einander wird die Reinigung gestartet

                                  Bedingungen:

                                  • ist es aktiviert
                                  • ist keiner da
                                  • ist es noch nicht heute gelaufen
                                  • ist der besuchermodus aus
                                  • ist der roboter bereit (läuft nicht, batterie voll genug, kein fehler) und soll er lt. Skript gerade nicht laufen.
                                  • sind alle bedingungen 2 mal erfüllt wärend niemand da war.

                                  Rücksetzen:
                                  Um 01:00 täglich wird das "heute nicht gelaufen" zurück gesetzt und ermittelt ob heute wischen auf true gesetzt werden soll. Wischen wird nach erfolgreichem durchführen vom automatikteil auf false gesetzt. Heißt wenn Montag gewischt werden soll, aber keine autoreinigung surchgeführt wurde, wird am Dienstag gewischt.

                                  Vorbeitungen:
                                  Es müssen 2 Programme angelegt werden ich hab dafür 1 mal nur saugen und 1 mal saugen dann wischen in der app angelegt - alle States die oben im Skript stehen müssen angepasst oder angelegt werden.

                                  Nachrichten:
                                  Ich hab für Probleme mit Schmutzwasser, Wischwasser und Staubbeutel eine Benachrichtigung fürs panel drin - das wird sowohl als Popup und als Screensaver Benachrichtigung angezeigt - denke das ist doppelgemoppelt aber wurscht. :D

                                  Raumsteuerung:
                                  Hab auf 2 shellys den longpress verwendet fürs aktivieren der Raumreinigung - das muß dann natürlich angepasst werden und entsprechende Programme müssen eingerichtet werden.

                                  Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                                  Spenden

                                  1 Antwort Letzte Antwort
                                  2
                                  • T TT-Tom

                                    @lobomau

                                    du kannst eigentlich das komplette Script kopieren, du musst nur hier ganz am Anfang die Daten anpassen, ganz wichtig panelTopic richtig setzen. Mit overrideConfig werden die Einstellungen weiter unten überschrieben.

                                        const overrideConfig: Partial<ScriptConfig.Config> = {
                                            // hier kann man die Werte von unten überschreiben bzw nicht ewig im Skript suchen wo nochmal die Farbe steht :)
                                            // pages und subpages geht hier nicht, weil die Seiten ja erst später angelegt werden. Bei const gehts nach Reihenfolge.
                                            panelTopic: 'nspanel/ns_panel4',
                                            weatherEntity: 'pirate-weather.0.',
                                            defaultOffColor: Off,
                                            defaultOnColor: On,
                                    
                                            // weatherAddDefaultItems:
                                            // - true  => alle Standard-Wetterelemente hinzufügen
                                            // - false => keine hinzufügen
                                            // - { ... } => selektiv per Schlüssel aktivieren:
                                            //   sunriseSet, forecastDay1, forecastDay2, forecastDay3, forecastDay4, forecastDay5, forecastDay6,
                                            //   windSpeed, windGust, windDirection, uvIndex, solar
                                            // Hinweis: Die einzelnen Schlüssel funktionieren nur, wenn der gewählte Wetteranbieter
                                            // die entsprechenden Daten liefert und diese im Adapter vorbereitet wurden
                                            "weatherAddDefaultItems": false
                                    
                                        }
                                    
                                    lobomauL Offline
                                    lobomauL Offline
                                    lobomau
                                    schrieb am zuletzt editiert von lobomau
                                    #957

                                    @TT-Tom ja, so hat es funktioniert. Bei dem ersten Script und auch beim zweiten Script ist jeweils standarmäßig auskommentiert. Habe da nie hingeschaut.
                                    Warum funktioniert es beim ersten Script obwohl es auskommentiert ist?

                                    //panelTopic: 'nspanel/ns_panel4',

                                    Host: NUC8i3 mit Proxmox:

                                    • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                                    • Slave: Pi4
                                    T 1 Antwort Letzte Antwort
                                    0
                                    • T ticaki

                                      0.14.0 (2026-03-14)

                                      • (tt-tom17) refactored: timezone selection code moved from adapter to admin handler (internal, no UI changes)
                                      • (ticaki) added: TempOffset configurable in objects and admin tab (#629)
                                      • (ticaki) added: "Update scripts for all panels" button in Maintain tab

                                      Anmerkung

                                      Vorab ist nicht vollständig getestet - zumindest der Kram den ich gerade eben eingebaut habe :)

                                      Um die Temperatur zu verwenden müssen die Panels per Aktualisieren auf den neuesten Konfigurationsstand gebracht werden:

                                      Bildschirmfoto 2026-03-14 um 06.41.01.png

                                      Auf den Stift klicken und dann oben auf nspanelkonfiguration aktualisieren - dann dauerts 30 Sekunden und dann das nächste.

                                      Alternativ auf der Tasmota Konsole folgendes eingeben

                                      AdcParam 2,14600,10000,3950
                                      

                                      Bei der Alternative am Ende den Adapter neustarten - sicher ist sicher.

                                      Temperatur einstellen

                                      Das geht dann am einfachsten hier:

                                      Bildschirmfoto_2026-03-14_um_06.22.49.png Bildschirmfoto 2026-03-14 um 07.11.54.png

                                      Bei 4k wird wirklich alles riesig :D


                                      @muuulle
                                      Ich hab ein hoffentlich besseres error log eingefügt für dein Problem - Die Adminfehlermeldungen werden aber nie genug infos enthalten, dass es mehr als ein "da läuft was schief" geben kann. Daher bitte IMMER im Protokoll gucken.

                                      M Offline
                                      M Offline
                                      muuulle
                                      schrieb am zuletzt editiert von muuulle
                                      #958

                                      @muuulle
                                      Ich hab ein hoffentlich besseres error log eingefügt für dein Problem - Die Adminfehlermeldungen werden aber nie genug infos enthalten, dass es mehr als ein "da läuft was schief" geben kann. Daher bitte IMMER im Protokoll gucken.

                                      Hallo,
                                      ich habe Version 0.14 installiert; hier ist der entsprechende Auszug als Bildschirmfoto:

                                      Bildschirmfoto 2026-03-14 um 14.02.29.png

                                      Vielen Dank für eure Arbeit!

                                      Edit:
                                      Es wird mit sendToRequestFail2 quittiert.

                                      T 1 Antwort Letzte Antwort
                                      0
                                      • lobomauL lobomau

                                        @TT-Tom ja, so hat es funktioniert. Bei dem ersten Script und auch beim zweiten Script ist jeweils standarmäßig auskommentiert. Habe da nie hingeschaut.
                                        Warum funktioniert es beim ersten Script obwohl es auskommentiert ist?

                                        //panelTopic: 'nspanel/ns_panel4',

                                        T Offline
                                        T Offline
                                        TT-Tom
                                        schrieb am zuletzt editiert von
                                        #959

                                        @lobomau

                                        Die original Einstellung wird in const config bei der Panel Initialisierung gemacht. Zu finden am Ende der Seiten Konfiguration. Mit der „overrideConfig“ kann man das Script auch dann für andere Panels nutzen und muss nicht die Parameter im Script suchen.

                                        Gruß Tom
                                        https://github.com/tt-tom17
                                        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                        NSPanel Script Wiki
                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                        NSPanel Adapter Wiki
                                        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                        1 Antwort Letzte Antwort
                                        1
                                        • M muuulle

                                          @muuulle
                                          Ich hab ein hoffentlich besseres error log eingefügt für dein Problem - Die Adminfehlermeldungen werden aber nie genug infos enthalten, dass es mehr als ein "da läuft was schief" geben kann. Daher bitte IMMER im Protokoll gucken.

                                          Hallo,
                                          ich habe Version 0.14 installiert; hier ist der entsprechende Auszug als Bildschirmfoto:

                                          Bildschirmfoto 2026-03-14 um 14.02.29.png

                                          Vielen Dank für eure Arbeit!

                                          Edit:
                                          Es wird mit sendToRequestFail2 quittiert.

                                          T Offline
                                          T Offline
                                          TT-Tom
                                          schrieb am zuletzt editiert von
                                          #960

                                          @muuulle
                                          Muss @ticaki nachsehen.

                                          Bitte keine Screenshot machen vom log, sonder kopieren. Am besten das Log runterladen und den Auszug hier in die CodeTags </> packen.

                                          Gruß Tom
                                          https://github.com/tt-tom17
                                          Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                          NSPanel Script Wiki
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          NSPanel Adapter Wiki
                                          https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                          M 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          352

                                          Online

                                          32.7k

                                          Benutzer

                                          82.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe