Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. MQTT Fehler bei meinen Shellys

NEWS

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    7
    1
    191

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    14
    1
    2.5k

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    2.8k

MQTT Fehler bei meinen Shellys

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
67 Beiträge 9 Kommentatoren 893 Aufrufe 7 Beobachtet
  • Ä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.
  • HomoranH Homoran

    Ich hab nur testweise 2 shellies und den Adapter installiert.

    Was ist denn das hier?
    1394.jpg

    da_WoodyD Offline
    da_WoodyD Offline
    da_Woody
    Most Active
    schrieb am zuletzt editiert von
    #37

    @Homoran
    ok, steht bei mir auf 10 sekunden, ohne probleme.
    glaub auch nicht, daß das mit mqtt zu tun hat...
    bei coap ist da sogar nur 5 sekunden.
    würde sagen, das hat nur mit den beiden möglichkeiten darunter zu tun.
    automatisches firmware aktualisieren ist eh quatsch. genauso wie objekte aktualisieren.
    somit ist die zeit irrelevant, sofern nix angehakt ist.

    gruß vom Woody
    HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

    1 Antwort Letzte Antwort
    0
    • KusselinK Kusselin

      Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

      Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!
      Dies führt am Ende zum Offline Status sowie Absturz
      

      Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)
      Wenn Ja wo mach ich das.

      Über ne Info herzlichen Dank.

      mcm1957M Online
      mcm1957M Online
      mcm1957
      schrieb am zuletzt editiert von mcm1957
      #38

      @Kusselin sagte:

      #29
      Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

      Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!

      Woher nimmt Shelly an dass der Adapter via MQTT polled? Das tut er definitiv nicht.

      Dies führt am Ende zum Offline Status sowie Absturz
      Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)

      Nein kannst du nicht da etwas nicht vorhandenes nicht einstellbar ist :-)


      WELCHES Problem hast du? Das geht aus dem Topic für mich nicht mehr klar hervor.
      WELCHE Fragestellung hast du an Shelly gesendet?

      Die Aussage vom Shelly ist - sagen wir mal - zweifelhaft. Der Adapter sendet keine poll requests an den Shelly. Daher kannst du keine Intervalle dafür einstellen. Mqtt Daten sendet der Shelly von sich aus wenn sich was ändert am shelly ändert. Der Adapter sendet nur dann mqtt Pakete an den Shelly wenn du Einstellungen änderst. Sollten da wirklich unmengen an Daten in Richtung Shelly gesendet werden, dann hast du irgendeinen Script-Irrläufer der ununterbrochen was umstellt ....

      Ich sehe in diesem Topic nur eine Meldung vom Shelly Adapter:

      shelly.1
      2026-05-24 09:33:30.542 error [MQTT] Unable to get mqttprefix of client with id "shellypro3em-34987a467c54"

      Dazu gibt es ein Issue. Dieses Problem würde ich in diesem Topic in dem es gemischt um Shelly, Update Unify, Fehlerlog des Sonoffs, geht nicht weiter diskutieren. Dazu gibt es den zentralen Shelly Support topic (wo andrerseits keine Sonoff Fhlerlogs passen ...) https://forum.iobroker.net/topic/81297/shelly-adapter-genereller-support

      Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
      Support Repositoryverwaltung.

      Wer 'nen Kaffee spendieren will: https://paypal.me

      LESEN - gute Forenbeitrage

      KusselinK 1 Antwort Letzte Antwort
      0
      • R reutli

        Ich habe meine UDM SE vor einigen Tagen ohne jegliche Auffälligkeiten auf aktuelles OS (5.1.15) und network (10.4.57) gebracht.
        Insofern würde ich jetzt eher auch auf Ungereimthaiten RIchtung IP Adressen oder WLAN tippen.
        Hast VLANs am Start, verschiedene WLANs, .... , ggf. eine Firewalleinstellung in der UDM, die jetzt greift, ....

        Wir haben hier noch keinen Auszug aus der UDM (Clients) gesehen. Ist dort alles "roger"?

        KusselinK Offline
        KusselinK Offline
        Kusselin
        schrieb am zuletzt editiert von Kusselin
        #39

        @reutli sagte:

        Ich habe meine UDM SE vor einigen Tagen ohne jegliche Auffälligkeiten auf aktuelles OS (5.1.15) und network (10.4.57) gebracht.
        Insofern würde ich jetzt eher auch auf Ungereimthaiten RIchtung IP Adressen oder WLAN tippen.
        Hast VLANs am Start, verschiedene WLANs, .... , ggf. eine Firewalleinstellung in der UDM, die jetzt greift, ....

        Wir haben hier noch keinen Auszug aus der UDM (Clients) gesehen. Ist dort alles "roger"?

        Hi, ich hab auch unifi und u.a. UDMPro..auch hab ich VLANs ..extra für meine IoT Devices..aber da ist alles ok jetzt..bin auch auf aktueller Firmware OS und Network…

        Da werde ich dem Shelly Support mal den Threadlink senden..

        Ich probier mal den Intervall hochzustellen oder?

        mcm1957M 1 Antwort Letzte Antwort
        0
        • mcm1957M mcm1957

          @Kusselin sagte:

          #29
          Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

          Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!

          Woher nimmt Shelly an dass der Adapter via MQTT polled? Das tut er definitiv nicht.

          Dies führt am Ende zum Offline Status sowie Absturz
          Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)

          Nein kannst du nicht da etwas nicht vorhandenes nicht einstellbar ist :-)


          WELCHES Problem hast du? Das geht aus dem Topic für mich nicht mehr klar hervor.
          WELCHE Fragestellung hast du an Shelly gesendet?

          Die Aussage vom Shelly ist - sagen wir mal - zweifelhaft. Der Adapter sendet keine poll requests an den Shelly. Daher kannst du keine Intervalle dafür einstellen. Mqtt Daten sendet der Shelly von sich aus wenn sich was ändert am shelly ändert. Der Adapter sendet nur dann mqtt Pakete an den Shelly wenn du Einstellungen änderst. Sollten da wirklich unmengen an Daten in Richtung Shelly gesendet werden, dann hast du irgendeinen Script-Irrläufer der ununterbrochen was umstellt ....

          Ich sehe in diesem Topic nur eine Meldung vom Shelly Adapter:

          shelly.1
          2026-05-24 09:33:30.542 error [MQTT] Unable to get mqttprefix of client with id "shellypro3em-34987a467c54"

          Dazu gibt es ein Issue. Dieses Problem würde ich in diesem Topic in dem es gemischt um Shelly, Update Unify, Fehlerlog des Sonoffs, geht nicht weiter diskutieren. Dazu gibt es den zentralen Shelly Support topic (wo andrerseits keine Sonoff Fhlerlogs passen ...) https://forum.iobroker.net/topic/81297/shelly-adapter-genereller-support

          KusselinK Offline
          KusselinK Offline
          Kusselin
          schrieb am zuletzt editiert von
          #40

          @mcm1957 sagte:

          @Kusselin sagte:

          #29
          Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

          Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!

          Woher nimmt Shelly an dass der Adapter via MQTT polled? Das tut er definitiv nicht.

          Dies führt am Ende zum Offline Status sowie Absturz
          Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)

          Nein kannst du nicht da etwas nicht vorhandenes nicht einstellbar ist :-)


          WELCHES Problem hast du? Das geht aus dem Topic für mich nicht mehr klar hervor.
          WELCHE Fragestellung hast du an Shelly gesendet?

          Die Aussage vom Shelly ist - sagen wir mal - zweifelhaft. Der Adapter sendet keine poll requests an den Shelly. Daher kannst du keine Intervalle dafür einstellen. Mqtt Daten sendet der Shelly von sich aus wenn sich was ändert am shelly ändert. Der Adapter sendet nur dann mqtt Pakete an den Shelly wenn du Einstellungen änderst. Sollten da wirklich unmengen an Daten in Richtung Shelly gesendet werden, dann hast du irgendeinen Script-Irrläufer der ununterbrochen was umstellt ....

          Ich sehe in diesem Topic nur eine Meldung vom Shelly Adapter:

          shelly.1
          2026-05-24 09:33:30.542 error [MQTT] Unable to get mqttprefix of client with id "shellypro3em-34987a467c54"

          Dazu gibt es ein Issue. Dieses Problem würde ich in diesem Topic in dem es gemischt um Shelly, Update Unify, Fehlerlog des Sonoffs, geht nicht weiter diskutieren. Dazu gibt es den zentralen Shelly Support topic (wo andrerseits keine Sonoff Fhlerlogs passen ...) https://forum.iobroker.net/topic/81297/shelly-adapter-genereller-support

          Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

          Samson71S mcm1957M 2 Antworten Letzte Antwort
          0
          • KusselinK Kusselin

            @reutli sagte:

            Ich habe meine UDM SE vor einigen Tagen ohne jegliche Auffälligkeiten auf aktuelles OS (5.1.15) und network (10.4.57) gebracht.
            Insofern würde ich jetzt eher auch auf Ungereimthaiten RIchtung IP Adressen oder WLAN tippen.
            Hast VLANs am Start, verschiedene WLANs, .... , ggf. eine Firewalleinstellung in der UDM, die jetzt greift, ....

            Wir haben hier noch keinen Auszug aus der UDM (Clients) gesehen. Ist dort alles "roger"?

            Hi, ich hab auch unifi und u.a. UDMPro..auch hab ich VLANs ..extra für meine IoT Devices..aber da ist alles ok jetzt..bin auch auf aktueller Firmware OS und Network…

            Da werde ich dem Shelly Support mal den Threadlink senden..

            Ich probier mal den Intervall hochzustellen oder?

            mcm1957M Online
            mcm1957M Online
            mcm1957
            schrieb am zuletzt editiert von mcm1957
            #41

            @Kusselin sagte:

            Ich probier mal den Intervall hochzustellen oder?

            Welches Intervall?

            Es gibt kein Intervall dass den mqtt Verkehr steuert.
            Und alle 10s einen http Request muss das Shelly locker vertragen - und tut das normalerweise auch.

            Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
            Support Repositoryverwaltung.

            Wer 'nen Kaffee spendieren will: https://paypal.me

            LESEN - gute Forenbeitrage

            1 Antwort Letzte Antwort
            0
            • KusselinK Kusselin

              @mcm1957 sagte:

              @Kusselin sagte:

              #29
              Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

              Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!

              Woher nimmt Shelly an dass der Adapter via MQTT polled? Das tut er definitiv nicht.

              Dies führt am Ende zum Offline Status sowie Absturz
              Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)

              Nein kannst du nicht da etwas nicht vorhandenes nicht einstellbar ist :-)


              WELCHES Problem hast du? Das geht aus dem Topic für mich nicht mehr klar hervor.
              WELCHE Fragestellung hast du an Shelly gesendet?

              Die Aussage vom Shelly ist - sagen wir mal - zweifelhaft. Der Adapter sendet keine poll requests an den Shelly. Daher kannst du keine Intervalle dafür einstellen. Mqtt Daten sendet der Shelly von sich aus wenn sich was ändert am shelly ändert. Der Adapter sendet nur dann mqtt Pakete an den Shelly wenn du Einstellungen änderst. Sollten da wirklich unmengen an Daten in Richtung Shelly gesendet werden, dann hast du irgendeinen Script-Irrläufer der ununterbrochen was umstellt ....

              Ich sehe in diesem Topic nur eine Meldung vom Shelly Adapter:

              shelly.1
              2026-05-24 09:33:30.542 error [MQTT] Unable to get mqttprefix of client with id "shellypro3em-34987a467c54"

              Dazu gibt es ein Issue. Dieses Problem würde ich in diesem Topic in dem es gemischt um Shelly, Update Unify, Fehlerlog des Sonoffs, geht nicht weiter diskutieren. Dazu gibt es den zentralen Shelly Support topic (wo andrerseits keine Sonoff Fhlerlogs passen ...) https://forum.iobroker.net/topic/81297/shelly-adapter-genereller-support

              Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

              Samson71S Offline
              Samson71S Offline
              Samson71
              Global Moderator
              schrieb am zuletzt editiert von
              #42

              @Kusselin
              Hast Du den Shelly mal aus dem VLAN raus und ins gleiche IP-Segment gehängt wo auch der ioBroker mit dem Shelly Adapter läuft? Wenn das am Ende doch an Deiner VLAN-Konfig liegt, suchen wir uns hier sonst noch Jahre einen Wolf.

              Markus

              Bitte beachten:
              Hinweise für gute Forenbeiträge
              Maßnahmen zum Schutz des Forums

              1 Antwort Letzte Antwort
              1
              • KusselinK Kusselin

                @mcm1957 sagte:

                @Kusselin sagte:

                #29
                Guten Tag Zusammen, ich habe vom Shelly Support nun nach verschiedenen mail eine Info erhalten wie folgt:

                Bitte verringern Sie das MQTT Polling, der Shelly wird mit Anfragen Ihres Brokers überflutet und kann entsprechend nicht mehr reagieren!

                Woher nimmt Shelly an dass der Adapter via MQTT polled? Das tut er definitiv nicht.

                Dies führt am Ende zum Offline Status sowie Absturz
                Nun meine Frage an Euch...kann ich das im iobroker wo einstellen? (Im Shelly Adapter direkt? - ich will nix faslch machen, deshalb die Frage wieder.)

                Nein kannst du nicht da etwas nicht vorhandenes nicht einstellbar ist :-)


                WELCHES Problem hast du? Das geht aus dem Topic für mich nicht mehr klar hervor.
                WELCHE Fragestellung hast du an Shelly gesendet?

                Die Aussage vom Shelly ist - sagen wir mal - zweifelhaft. Der Adapter sendet keine poll requests an den Shelly. Daher kannst du keine Intervalle dafür einstellen. Mqtt Daten sendet der Shelly von sich aus wenn sich was ändert am shelly ändert. Der Adapter sendet nur dann mqtt Pakete an den Shelly wenn du Einstellungen änderst. Sollten da wirklich unmengen an Daten in Richtung Shelly gesendet werden, dann hast du irgendeinen Script-Irrläufer der ununterbrochen was umstellt ....

                Ich sehe in diesem Topic nur eine Meldung vom Shelly Adapter:

                shelly.1
                2026-05-24 09:33:30.542 error [MQTT] Unable to get mqttprefix of client with id "shellypro3em-34987a467c54"

                Dazu gibt es ein Issue. Dieses Problem würde ich in diesem Topic in dem es gemischt um Shelly, Update Unify, Fehlerlog des Sonoffs, geht nicht weiter diskutieren. Dazu gibt es den zentralen Shelly Support topic (wo andrerseits keine Sonoff Fhlerlogs passen ...) https://forum.iobroker.net/topic/81297/shelly-adapter-genereller-support

                Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

                mcm1957M Online
                mcm1957M Online
                mcm1957
                schrieb am zuletzt editiert von
                #43

                @Kusselin sagte:

                Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

                Was verstehst du unter "Offline Aussetzer"?
                Anzeige Status online/offline im Adapter wechselt ?
                Daten Aktualisierungen unregelmäßig?
                Verbindungsabbrüche?
                ... anderes ?

                Wenn Shelly sagt dass der 3EM PRO reboote ist das am Shelly nachvollziehbar?
                Passen die Reboot Zeiten zu Problemen im ioBroker?

                Zeig mal ein vollständiges ioBroker.shelly Log im DEBUG Modus.
                Und wenn der Shelly die Verbindung trennt, dann ist eher - aber natürlich nicht gesichert - was in deinem Netz faul. Also am besten den Shelly mal direkt in das gelcihe Segment des ioBroker hosts hängen (wie schon empfohlen) ohne VLAN und ähnliches.

                Gibts noch andere Shellies in deinem Netz? Zeigen die auch Probleme?
                Was sagt 'iob diag' zu deinem System?

                Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                Support Repositoryverwaltung.

                Wer 'nen Kaffee spendieren will: https://paypal.me

                LESEN - gute Forenbeitrage

                KusselinK 1 Antwort Letzte Antwort
                0
                • mcm1957M mcm1957

                  @Kusselin sagte:

                  Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

                  Was verstehst du unter "Offline Aussetzer"?
                  Anzeige Status online/offline im Adapter wechselt ?
                  Daten Aktualisierungen unregelmäßig?
                  Verbindungsabbrüche?
                  ... anderes ?

                  Wenn Shelly sagt dass der 3EM PRO reboote ist das am Shelly nachvollziehbar?
                  Passen die Reboot Zeiten zu Problemen im ioBroker?

                  Zeig mal ein vollständiges ioBroker.shelly Log im DEBUG Modus.
                  Und wenn der Shelly die Verbindung trennt, dann ist eher - aber natürlich nicht gesichert - was in deinem Netz faul. Also am besten den Shelly mal direkt in das gelcihe Segment des ioBroker hosts hängen (wie schon empfohlen) ohne VLAN und ähnliches.

                  Gibts noch andere Shellies in deinem Netz? Zeigen die auch Probleme?
                  Was sagt 'iob diag' zu deinem System?

                  KusselinK Offline
                  KusselinK Offline
                  Kusselin
                  schrieb am zuletzt editiert von Kusselin
                  #44

                  @mcm1957 sagte:

                  @Kusselin sagte:

                  Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

                  Was verstehst du unter "Offline Aussetzer"?
                  Anzeige Status online/offline im Adapter wechselt ?
                  Daten Aktualisierungen unregelmäßig?
                  Verbindungsabbrüche?
                  ... anderes ?

                  Wenn Shelly sagt dass der 3EM PRO reboote ist das am Shelly nachvollziehbar?
                  Passen die Reboot Zeiten zu Problemen im ioBroker?

                  Zeig mal ein vollständiges ioBroker.shelly Log im DEBUG Modus.
                  Und wenn der Shelly die Verbindung trennt, dann ist eher - aber natürlich nicht gesichert - was in deinem Netz faul. Also am besten den Shelly mal direkt in das gelcihe Segment des ioBroker hosts hängen (wie schon empfohlen) ohne VLAN und ähnliches.

                  Gibts noch andere Shellies in deinem Netz? Zeigen die auch Probleme?
                  Was sagt 'iob diag' zu deinem System?

                  Ja, ich hab noch mehrer Shellys der Gen1 und Gen2...hier bestehn keine Probleme..

                  Aber wartet mal....ich habe für meine PV einen Script erstellt das kann natürlich sein das der zu oft abfragt..ich sehe das im Log als...ich glaubewir kommen der Sache näher...ich wurde das Script heute nach der Arbeit mal posten..eventuell sieht man da schon was..

                  eh...danke Euch vielmals für den Einsatz wiedermal!!

                  mcm1957M 1 Antwort Letzte Antwort
                  0
                  • KusselinK Kusselin

                    @mcm1957 sagte:

                    @Kusselin sagte:

                    Ich habe das Problem das mein Shelly 3EM pro trotz LAN Verbindung Offline Aussetzer hat!

                    Was verstehst du unter "Offline Aussetzer"?
                    Anzeige Status online/offline im Adapter wechselt ?
                    Daten Aktualisierungen unregelmäßig?
                    Verbindungsabbrüche?
                    ... anderes ?

                    Wenn Shelly sagt dass der 3EM PRO reboote ist das am Shelly nachvollziehbar?
                    Passen die Reboot Zeiten zu Problemen im ioBroker?

                    Zeig mal ein vollständiges ioBroker.shelly Log im DEBUG Modus.
                    Und wenn der Shelly die Verbindung trennt, dann ist eher - aber natürlich nicht gesichert - was in deinem Netz faul. Also am besten den Shelly mal direkt in das gelcihe Segment des ioBroker hosts hängen (wie schon empfohlen) ohne VLAN und ähnliches.

                    Gibts noch andere Shellies in deinem Netz? Zeigen die auch Probleme?
                    Was sagt 'iob diag' zu deinem System?

                    Ja, ich hab noch mehrer Shellys der Gen1 und Gen2...hier bestehn keine Probleme..

                    Aber wartet mal....ich habe für meine PV einen Script erstellt das kann natürlich sein das der zu oft abfragt..ich sehe das im Log als...ich glaubewir kommen der Sache näher...ich wurde das Script heute nach der Arbeit mal posten..eventuell sieht man da schon was..

                    eh...danke Euch vielmals für den Einsatz wiedermal!!

                    mcm1957M Online
                    mcm1957M Online
                    mcm1957
                    schrieb am zuletzt editiert von
                    #45

                    @Kusselin sagte:

                    Aber wartet mal....ich habe für meine PV einen Script erstellt das kann natürlich sein das der zu oft abfragt..ich sehe das im Log als...ich glaubewir kommen der Sache näher...ich wurde das Script heute nach der Arbeit mal posten..eventuell sieht man da schon was..

                    Fragt das Skript States des Shelly Adapters ab oder kommuniziert es direkt mit dem Shelly Device (z.B. via http/rpc) ?

                    Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                    Support Repositoryverwaltung.

                    Wer 'nen Kaffee spendieren will: https://paypal.me

                    LESEN - gute Forenbeitrage

                    1 Antwort Letzte Antwort
                    0
                    • KusselinK Offline
                      KusselinK Offline
                      Kusselin
                      schrieb am zuletzt editiert von Kusselin
                      #46

                      Hi, ich habe mir das Script über die KI erstellen lassen. Ich lasse mir einmal am Tag per telegram ne Nachricht senden....er speichert unter "0_userdata" jeweils imer den Tag udn dann das jahr_euro und jahr_kWh.

                      So wie ich das sehe fragt er direkt den 3EMpro ab!

                      Und unter Protokolle sehe ich oft das das javascript sich meldet..

                      ich würde das heute abend mal posten...wäre das O.K.?

                      Hier das javascript....:

                      // ═══════════════════════════════════════════════════════════════
                      // Einspeisung – Tageswerte + robuste Jahressumme
                      // ═══════════════════════════════════════════════════════════════
                      
                      // ── Deine vorhandenen Datenpunkte ──────────────────────────────
                      const DP_HEUTE_KWH  = '0_userdata.0.Einspeisung.heute_kWh';
                      const DP_HEUTE_EURO = '0_userdata.0.Einspeisung.heute_euro';
                      
                      // ── Zielstruktur ───────────────────────────────────────────────
                      const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                      const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                      const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                      
                      // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
                      createState(DP_JAHR_KWH, {
                          name: 'Einspeisung Jahr gesamt',
                          type: 'number',
                          role: 'value.energy',
                          unit: 'kWh',
                          read: true,
                          write: true,
                          def: 0
                      });
                      
                      createState(DP_JAHR_EURO, {
                          name: 'Einspeisung Jahr gesamt (€)',
                          type: 'number',
                          role: 'value.money',
                          unit: '€',
                          read: true,
                          write: true,
                          def: 0
                      });
                      
                      // ═══════════════════════════════════════════════════════════════
                      // Datum erzeugen → 2026-04-09
                      // ═══════════════════════════════════════════════════════════════
                      function getDatum() {
                          const d = new Date();
                          return d.getFullYear() + '-' +
                              String(d.getMonth() + 1).padStart(2, '0') + '-' +
                              String(d.getDate()).padStart(2, '0');
                      }
                      
                      // ═══════════════════════════════════════════════════════════════
                      // Tageswerte speichern
                      // ═══════════════════════════════════════════════════════════════
                      function speichereTag() {
                      
                          const datum = getDatum();
                      
                          const kwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                          const euro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                      
                          const dpKwh  = DP_PREFIX + datum + '_kWh';
                          const dpEuro = DP_PREFIX + datum + '_euro';
                      
                          createState(dpKwh, {
                              name: 'Einspeisung ' + datum,
                              type: 'number',
                              role: 'value.energy',
                              unit: 'kWh',
                              read: true,
                              write: false
                          }, () => setState(dpKwh, kwh, true));
                      
                          createState(dpEuro, {
                              name: 'Vergütung ' + datum,
                              type: 'number',
                              role: 'value.money',
                              unit: '€',
                              read: true,
                              write: false
                          }, () => setState(dpEuro, euro, true));
                      
                          log(`📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert`, 'info');
                      
                          jahressummeNeuBerechnen();
                      }
                      
                      // ═══════════════════════════════════════════════════════════════
                      // ROBUSTE Jahressumme (aus allen Tagen neu berechnet)
                      // ═══════════════════════════════════════════════════════════════
                      function jahressummeNeuBerechnen() {
                      
                          const jahr = new Date().getFullYear();
                          const states = $('state[id=' + DP_PREFIX + '*]');
                      
                          let sumKwh = 0;
                          let sumEuro = 0;
                      
                          states.each(function (id) {
                      
                              if (!id.includes(jahr)) return;
                      
                              const val = parseFloat(getState(id).val) || 0;
                      
                              if (id.endsWith('_kWh')) {
                                  sumKwh += val;
                              } else if (id.endsWith('_euro')) {
                                  sumEuro += val;
                              }
                          });
                      
                          sumKwh  = Math.round(sumKwh * 100) / 100;
                          sumEuro = Math.round(sumEuro * 100) / 100;
                      
                          setState(DP_JAHR_KWH, sumKwh, true);
                          setState(DP_JAHR_EURO, sumEuro, true);
                      
                          log(`📊 Jahr ${jahr}: ${sumKwh} kWh | ${sumEuro} €`, 'info');
                      }
                      
                      // ═══════════════════════════════════════════════════════════════
                      // Täglich ausführen (23:55 Uhr)
                      // ═══════════════════════════════════════════════════════════════
                      schedule('55 23 * * *', speichereTag);
                      
                      // Beim Start einmal berechnen (wichtig!)
                      jahressummeNeuBerechnen();
                      
                      log('✅ Einspeisungs-Script aktiv', 'info');
                      

                      da fehlt noch was...kommt dann..

                      Das kommt im Log immer mal wieder:

                      KusselinK HomoranH 2 Antworten Letzte Antwort
                      0
                      • KusselinK Kusselin

                        Hi, ich habe mir das Script über die KI erstellen lassen. Ich lasse mir einmal am Tag per telegram ne Nachricht senden....er speichert unter "0_userdata" jeweils imer den Tag udn dann das jahr_euro und jahr_kWh.

                        So wie ich das sehe fragt er direkt den 3EMpro ab!

                        Und unter Protokolle sehe ich oft das das javascript sich meldet..

                        ich würde das heute abend mal posten...wäre das O.K.?

                        Hier das javascript....:

                        // ═══════════════════════════════════════════════════════════════
                        // Einspeisung – Tageswerte + robuste Jahressumme
                        // ═══════════════════════════════════════════════════════════════
                        
                        // ── Deine vorhandenen Datenpunkte ──────────────────────────────
                        const DP_HEUTE_KWH  = '0_userdata.0.Einspeisung.heute_kWh';
                        const DP_HEUTE_EURO = '0_userdata.0.Einspeisung.heute_euro';
                        
                        // ── Zielstruktur ───────────────────────────────────────────────
                        const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                        const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                        const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                        
                        // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
                        createState(DP_JAHR_KWH, {
                            name: 'Einspeisung Jahr gesamt',
                            type: 'number',
                            role: 'value.energy',
                            unit: 'kWh',
                            read: true,
                            write: true,
                            def: 0
                        });
                        
                        createState(DP_JAHR_EURO, {
                            name: 'Einspeisung Jahr gesamt (€)',
                            type: 'number',
                            role: 'value.money',
                            unit: '€',
                            read: true,
                            write: true,
                            def: 0
                        });
                        
                        // ═══════════════════════════════════════════════════════════════
                        // Datum erzeugen → 2026-04-09
                        // ═══════════════════════════════════════════════════════════════
                        function getDatum() {
                            const d = new Date();
                            return d.getFullYear() + '-' +
                                String(d.getMonth() + 1).padStart(2, '0') + '-' +
                                String(d.getDate()).padStart(2, '0');
                        }
                        
                        // ═══════════════════════════════════════════════════════════════
                        // Tageswerte speichern
                        // ═══════════════════════════════════════════════════════════════
                        function speichereTag() {
                        
                            const datum = getDatum();
                        
                            const kwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                            const euro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                        
                            const dpKwh  = DP_PREFIX + datum + '_kWh';
                            const dpEuro = DP_PREFIX + datum + '_euro';
                        
                            createState(dpKwh, {
                                name: 'Einspeisung ' + datum,
                                type: 'number',
                                role: 'value.energy',
                                unit: 'kWh',
                                read: true,
                                write: false
                            }, () => setState(dpKwh, kwh, true));
                        
                            createState(dpEuro, {
                                name: 'Vergütung ' + datum,
                                type: 'number',
                                role: 'value.money',
                                unit: '€',
                                read: true,
                                write: false
                            }, () => setState(dpEuro, euro, true));
                        
                            log(`📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert`, 'info');
                        
                            jahressummeNeuBerechnen();
                        }
                        
                        // ═══════════════════════════════════════════════════════════════
                        // ROBUSTE Jahressumme (aus allen Tagen neu berechnet)
                        // ═══════════════════════════════════════════════════════════════
                        function jahressummeNeuBerechnen() {
                        
                            const jahr = new Date().getFullYear();
                            const states = $('state[id=' + DP_PREFIX + '*]');
                        
                            let sumKwh = 0;
                            let sumEuro = 0;
                        
                            states.each(function (id) {
                        
                                if (!id.includes(jahr)) return;
                        
                                const val = parseFloat(getState(id).val) || 0;
                        
                                if (id.endsWith('_kWh')) {
                                    sumKwh += val;
                                } else if (id.endsWith('_euro')) {
                                    sumEuro += val;
                                }
                            });
                        
                            sumKwh  = Math.round(sumKwh * 100) / 100;
                            sumEuro = Math.round(sumEuro * 100) / 100;
                        
                            setState(DP_JAHR_KWH, sumKwh, true);
                            setState(DP_JAHR_EURO, sumEuro, true);
                        
                            log(`📊 Jahr ${jahr}: ${sumKwh} kWh | ${sumEuro} €`, 'info');
                        }
                        
                        // ═══════════════════════════════════════════════════════════════
                        // Täglich ausführen (23:55 Uhr)
                        // ═══════════════════════════════════════════════════════════════
                        schedule('55 23 * * *', speichereTag);
                        
                        // Beim Start einmal berechnen (wichtig!)
                        jahressummeNeuBerechnen();
                        
                        log('✅ Einspeisungs-Script aktiv', 'info');
                        

                        da fehlt noch was...kommt dann..

                        Das kommt im Log immer mal wieder:

                        KusselinK Offline
                        KusselinK Offline
                        Kusselin
                        schrieb am zuletzt editiert von Kusselin
                        #47

                        Das kommt im Log immer mal wieder:

                        javascript.0
                        	2026-06-16 15:27:00.877	info	script.js.Keller.Einspeisung-PV: [Einspeisung] Heute: 13.49 kWh | A: 4.69 | B: 5.61 | C: 3.15 | Vergütung: 0.92 €
                        javascript.0
                        	2026-06-16 15:26:56.964	info	script.js.Keller.Einspeisung-PV: [Einspeisung] Heute: 13.44 kWh | A: 4.69 | B: 5.61 | C: 3.15 | Vergütung: 0.91 €
                        shelly.1
                        	2026-06-16 15:26:56.793	info	[MQTT] Device with client id "shellypro3em-34987a467c54" initialized.
                        shelly.1
                        	2026-06-16 15:26:55.006	info	[MQTT] Device with client id "shellypro3em-34987a467c54" connected from 10.10.10.205!
                        shelly.1
                        	2026-06-16 15:26:52.805	info	[MQTT] Client Close: 10.10.10.205 (shellypro3em / shellypro3em-34987a467c54 / shellypro3em#34987a467c54#1) (false)
                        javascript.0
                        	2026-06-16 15:26:00.976	info	script.js.Keller.Einspeisung-PV: [Einspeisung] Heute: 13.44 kWh | A: 4.66 | B: 5.59 | C: 3.13 | Vergütung: 0.91 €
                        

                        sorry...ich mach das mit den Scripten heute abend in Ruhe...ich habe auf jeden fall zwei scripte...ich poste die in Ruhe heute abend...

                        1 Antwort Letzte Antwort
                        0
                        • KusselinK Kusselin

                          Hi, ich habe mir das Script über die KI erstellen lassen. Ich lasse mir einmal am Tag per telegram ne Nachricht senden....er speichert unter "0_userdata" jeweils imer den Tag udn dann das jahr_euro und jahr_kWh.

                          So wie ich das sehe fragt er direkt den 3EMpro ab!

                          Und unter Protokolle sehe ich oft das das javascript sich meldet..

                          ich würde das heute abend mal posten...wäre das O.K.?

                          Hier das javascript....:

                          // ═══════════════════════════════════════════════════════════════
                          // Einspeisung – Tageswerte + robuste Jahressumme
                          // ═══════════════════════════════════════════════════════════════
                          
                          // ── Deine vorhandenen Datenpunkte ──────────────────────────────
                          const DP_HEUTE_KWH  = '0_userdata.0.Einspeisung.heute_kWh';
                          const DP_HEUTE_EURO = '0_userdata.0.Einspeisung.heute_euro';
                          
                          // ── Zielstruktur ───────────────────────────────────────────────
                          const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                          const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                          const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                          
                          // ── Jahres-Datenpunkte anlegen (falls nicht vorhanden) ─────────
                          createState(DP_JAHR_KWH, {
                              name: 'Einspeisung Jahr gesamt',
                              type: 'number',
                              role: 'value.energy',
                              unit: 'kWh',
                              read: true,
                              write: true,
                              def: 0
                          });
                          
                          createState(DP_JAHR_EURO, {
                              name: 'Einspeisung Jahr gesamt (€)',
                              type: 'number',
                              role: 'value.money',
                              unit: '€',
                              read: true,
                              write: true,
                              def: 0
                          });
                          
                          // ═══════════════════════════════════════════════════════════════
                          // Datum erzeugen → 2026-04-09
                          // ═══════════════════════════════════════════════════════════════
                          function getDatum() {
                              const d = new Date();
                              return d.getFullYear() + '-' +
                                  String(d.getMonth() + 1).padStart(2, '0') + '-' +
                                  String(d.getDate()).padStart(2, '0');
                          }
                          
                          // ═══════════════════════════════════════════════════════════════
                          // Tageswerte speichern
                          // ═══════════════════════════════════════════════════════════════
                          function speichereTag() {
                          
                              const datum = getDatum();
                          
                              const kwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                              const euro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                          
                              const dpKwh  = DP_PREFIX + datum + '_kWh';
                              const dpEuro = DP_PREFIX + datum + '_euro';
                          
                              createState(dpKwh, {
                                  name: 'Einspeisung ' + datum,
                                  type: 'number',
                                  role: 'value.energy',
                                  unit: 'kWh',
                                  read: true,
                                  write: false
                              }, () => setState(dpKwh, kwh, true));
                          
                              createState(dpEuro, {
                                  name: 'Vergütung ' + datum,
                                  type: 'number',
                                  role: 'value.money',
                                  unit: '€',
                                  read: true,
                                  write: false
                              }, () => setState(dpEuro, euro, true));
                          
                              log(`📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert`, 'info');
                          
                              jahressummeNeuBerechnen();
                          }
                          
                          // ═══════════════════════════════════════════════════════════════
                          // ROBUSTE Jahressumme (aus allen Tagen neu berechnet)
                          // ═══════════════════════════════════════════════════════════════
                          function jahressummeNeuBerechnen() {
                          
                              const jahr = new Date().getFullYear();
                              const states = $('state[id=' + DP_PREFIX + '*]');
                          
                              let sumKwh = 0;
                              let sumEuro = 0;
                          
                              states.each(function (id) {
                          
                                  if (!id.includes(jahr)) return;
                          
                                  const val = parseFloat(getState(id).val) || 0;
                          
                                  if (id.endsWith('_kWh')) {
                                      sumKwh += val;
                                  } else if (id.endsWith('_euro')) {
                                      sumEuro += val;
                                  }
                              });
                          
                              sumKwh  = Math.round(sumKwh * 100) / 100;
                              sumEuro = Math.round(sumEuro * 100) / 100;
                          
                              setState(DP_JAHR_KWH, sumKwh, true);
                              setState(DP_JAHR_EURO, sumEuro, true);
                          
                              log(`📊 Jahr ${jahr}: ${sumKwh} kWh | ${sumEuro} €`, 'info');
                          }
                          
                          // ═══════════════════════════════════════════════════════════════
                          // Täglich ausführen (23:55 Uhr)
                          // ═══════════════════════════════════════════════════════════════
                          schedule('55 23 * * *', speichereTag);
                          
                          // Beim Start einmal berechnen (wichtig!)
                          jahressummeNeuBerechnen();
                          
                          log('✅ Einspeisungs-Script aktiv', 'info');
                          

                          da fehlt noch was...kommt dann..

                          Das kommt im Log immer mal wieder:

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #48

                          @Kusselin sagte:

                          Das kommt im Log immer mal wieder:

                          Hast du ja auch so programmiert

                          @Kusselin sagte:

                          log(📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert, 'info');

                          kein Support per PN! - Fragen im Forum stellen -
                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                          Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          KusselinK 1 Antwort Letzte Antwort
                          0
                          • mcm1957M Online
                            mcm1957M Online
                            mcm1957
                            schrieb am zuletzt editiert von mcm1957
                            #49

                            Ein Ansatz zur Fehlersuche wär mal deine scripte zu stoppen jnd dann in Ruhe zu schaun ob der Shelly stabil läuft.

                            Alternativ bau ein log ein bei allen Zugriffen deiner Scripte auf den Shelly. Da sirht man dann ob do alle Stunden oder alle ms zugreifst ....

                            Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                            Support Repositoryverwaltung.

                            Wer 'nen Kaffee spendieren will: https://paypal.me

                            LESEN - gute Forenbeitrage

                            1 Antwort Letzte Antwort
                            1
                            • mcm1957M Online
                              mcm1957M Online
                              mcm1957
                              schrieb am zuletzt editiert von
                              #50

                              Verwendung der Stste Role value.* mit write true ist übrigenfs falsch. Role value verlangt read only.

                              Ist aber für den Shelly Absturz irrelevant. Nur sags deine KI dass sie Fehler macht.

                              Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                              Support Repositoryverwaltung.

                              Wer 'nen Kaffee spendieren will: https://paypal.me

                              LESEN - gute Forenbeitrage

                              1 Antwort Letzte Antwort
                              1
                              • mcm1957M Online
                                mcm1957M Online
                                mcm1957
                                schrieb am zuletzt editiert von
                                #51

                                Noch ein Hinweis:
                                Du verwendest die States offensichtlich als History:
                                createState(dpKwh, {
                                name: 'Einspeisung ' + datum,
                                ...
                                Ich hoffe du hast auch irgendeinen Algorithmus um das aufzuräumen. Zur Hiostorsierung gibts normalerweise dedizierte Adapter. Bei einem State pro Tag ists nicht so kritisch - aber wenn deien KI auch z.B. stündliche Werte so anlegt dann wird dir dein System in die Knie gehn....

                                Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                                Support Repositoryverwaltung.

                                Wer 'nen Kaffee spendieren will: https://paypal.me

                                LESEN - gute Forenbeitrage

                                1 Antwort Letzte Antwort
                                0
                                • KusselinK Offline
                                  KusselinK Offline
                                  Kusselin
                                  schrieb am zuletzt editiert von Kusselin
                                  #52

                                  so, hier jetzt nochmal die Scripts die ich benutze:

                                  // ============================================================
                                  //  Shelly Pro 3EM – Tägliche Einspeisung & Vergütung
                                  //  ioBroker JavaScript Adapter + Source Analytics Adapter
                                  // ============================================================
                                  //
                                  //  Voraussetzungen:
                                  //  - JavaScript Adapter
                                  //  - ioBroker.source-analytics Adapter (oder history/influxdb)
                                  //
                                  //  Objekt-Pfade – ggf. an eigene Instanz anpassen:
                                  //  z.B. shelly.0.SHEM-3EM#<MAC>#1 → hier: shelly.0.shellyem3pro-...
                                  //
                                  //  ANPASSEN: Den Instanz-Präfix auf deine Installation setzen
                                  // ============================================================
                                  
                                  const SHELLY_PREFIX = 'shelly.1.shellypro3em#34987a467c54#1';
                                  // Beispiel: 'shelly.0.shellypro3em-aabbccddeeff'
                                  
                                  const OBJ_RETURN_TOTAL = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergy`;
                                  const OBJ_RETURN_A     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyA`;
                                  const OBJ_RETURN_B     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyB`;
                                  const OBJ_RETURN_C     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyC`;
                                  
                                  // Vergütung je kWh in €
                                  const VERGUETUNG_PRO_KWH = 0.068;
                                  
                                  // Ziel-Datenpunkt für das Ergebnis (wird automatisch erzeugt)
                                  const DP_HEUTE_KWH       = 'javascript.0.Einspeisung.heute_kWh';
                                  const DP_HEUTE_EURO      = 'javascript.0.Einspeisung.heute_euro';
                                  const DP_HEUTE_KWH_A     = 'javascript.0.Einspeisung.heute_kWh_PhaseA';
                                  const DP_HEUTE_KWH_B     = 'javascript.0.Einspeisung.heute_kWh_PhaseB';
                                  const DP_HEUTE_KWH_C     = 'javascript.0.Einspeisung.heute_kWh_PhaseC';
                                  const DP_TAGESBEGINN_WH  = 'javascript.0.Einspeisung.tagesbeginn_Wh';
                                  const DP_TAGESBEGINN_A   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseA';
                                  const DP_TAGESBEGINN_B   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseB';
                                  const DP_TAGESBEGINN_C   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseC';
                                  
                                  // ─── Datenpunkte anlegen ────────────────────────────────────
                                  createState(DP_HEUTE_KWH,      0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute gesamt' });
                                  createState(DP_HEUTE_EURO,     0, { unit: '€',   type: 'number', name: 'Einspeisevergütung heute' });
                                  createState(DP_HEUTE_KWH_A,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase A' });
                                  createState(DP_HEUTE_KWH_B,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase B' });
                                  createState(DP_HEUTE_KWH_C,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase C' });
                                  createState(DP_TAGESBEGINN_WH, 0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn gesamt' });
                                  createState(DP_TAGESBEGINN_A,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase A' });
                                  createState(DP_TAGESBEGINN_B,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase B' });
                                  createState(DP_TAGESBEGINN_C,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase C' });
                                  
                                  // ─── Hilfsfunktion: Tagesdifferenz berechnen ────────────────
                                  function berechneEinspeisung() {
                                      const aktuellerWert   = getState(OBJ_RETURN_TOTAL).val || 0;
                                      const aktuellerWert_A = getState(OBJ_RETURN_A).val     || 0;
                                      const aktuellerWert_B = getState(OBJ_RETURN_B).val     || 0;
                                      const aktuellerWert_C = getState(OBJ_RETURN_C).val     || 0;
                                  
                                      const tagesbeginn   = getState(DP_TAGESBEGINN_WH).val || aktuellerWert;
                                      const tagesbeginn_A = getState(DP_TAGESBEGINN_A).val  || aktuellerWert_A;
                                      const tagesbeginn_B = getState(DP_TAGESBEGINN_B).val  || aktuellerWert_B;
                                      const tagesbeginn_C = getState(DP_TAGESBEGINN_C).val  || aktuellerWert_C;
                                  
                                      // Differenz in Wh → kWh (auf 3 Dezimalstellen)
                                      const diff_kWh   = Math.round((aktuellerWert   - tagesbeginn)   / 10) / 100;
                                      const diff_kWh_A = Math.round((aktuellerWert_A - tagesbeginn_A) / 10) / 100;
                                      const diff_kWh_B = Math.round((aktuellerWert_B - tagesbeginn_B) / 10) / 100;
                                      const diff_kWh_C = Math.round((aktuellerWert_C - tagesbeginn_C) / 10) / 100;
                                  
                                      const verguetung = Math.round(diff_kWh * VERGUETUNG_PRO_KWH * 100) / 100;
                                  
                                  
                                      setState(DP_HEUTE_KWH,   diff_kWh   < 0 ? 0 : diff_kWh,   true);
                                      setState(DP_HEUTE_KWH_A, diff_kWh_A < 0 ? 0 : diff_kWh_A, true);
                                      setState(DP_HEUTE_KWH_B, diff_kWh_B < 0 ? 0 : diff_kWh_B, true);
                                      setState(DP_HEUTE_KWH_C, diff_kWh_C < 0 ? 0 : diff_kWh_C, true);
                                      setState(DP_HEUTE_EURO,  verguetung  < 0 ? 0 : verguetung,  true);
                                  
                                      log(`[Einspeisung] Heute: ${diff_kWh} kWh | A: ${diff_kWh_A} | B: ${diff_kWh_B} | C: ${diff_kWh_C} | Vergütung: ${verguetung.toFixed(2)} €`);
                                  }
                                  
                                  // ─── Tagesbeginn um Mitternacht speichern ───────────────────
                                  schedule('0 0 * * *', function () {
                                      const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                      const val_A = getState(OBJ_RETURN_A).val     || 0;
                                      const val_B = getState(OBJ_RETURN_B).val     || 0;
                                      const val_C = getState(OBJ_RETURN_C).val     || 0;
                                  
                                      setState(DP_TAGESBEGINN_WH, val,   true);
                                      setState(DP_TAGESBEGINN_A,  val_A, true);
                                      setState(DP_TAGESBEGINN_B,  val_B, true);
                                      setState(DP_TAGESBEGINN_C,  val_C, true);
                                  
                                      log(`[Einspeisung] Tagesbeginn gesetzt: ${val} Wh (A:${val_A} B:${val_B} C:${val_C})`);
                                  });
                                  
                                  // ─── Bei jeder Änderung des Shelly-Zählers neu berechnen ───
                                  on({ id: OBJ_RETURN_TOTAL, change: 'any' }, berechneEinspeisung);
                                  
                                  // ─── Beim Skriptstart einmalig berechnen ───────────────────
                                  // Tagesbeginn-Initialisierung: Nur setzen wenn noch 0
                                  setTimeout(function () {
                                      if (getState(DP_TAGESBEGINN_WH).val === 0) {
                                          const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                          const val_A = getState(OBJ_RETURN_A).val     || 0;
                                          const val_B = getState(OBJ_RETURN_B).val     || 0;
                                          const val_C = getState(OBJ_RETURN_C).val     || 0;
                                          setState(DP_TAGESBEGINN_WH, val,   true);
                                          setState(DP_TAGESBEGINN_A,  val_A, true);
                                          setState(DP_TAGESBEGINN_B,  val_B, true);
                                          setState(DP_TAGESBEGINN_C,  val_C, true);
                                          log('[Einspeisung] Erstinitialisierung Tagesbeginn gesetzt.');
                                      }
                                      berechneEinspeisung();
                                  }, 2000);
                                  
                                  // ─── SOURCE ANALYTICS Adapter Integration ──────────────────
                                  // Der source-analytics Adapter liest automatisch aus dem Datenpunkt
                                  // wenn dieser in der Instanzkonfiguration eingetragen ist.
                                  //
                                  // Alternativ: history-Adapter aktivieren auf:
                                  //   javascript.0.Einspeisung.heute_kWh
                                  //   javascript.0.Einspeisung.heute_euro
                                  //
                                  // Für Tageshistorie via Source Analytics:
                                  // - Datenpunkt: javascript.0.Einspeisung.heute_kWh
                                  // - Aggregation: last (letzter Wert des Tages)
                                  // - Anzeige: Balkendiagramm (Tagesansicht)
                                  //
                                  // ──────────────────────────────────────────────────────────
                                  // ERGEBNIS-DATENPUNKTE (für VIS / Jarvis / Material UI):
                                  //
                                  //   javascript.0.Einspeisung.heute_kWh       → Einspeisung heute in kWh
                                  //   javascript.0.Einspeisung.heute_euro      → Vergütung heute in €
                                  //   javascript.0.Einspeisung.heute_kWh_PhaseA/B/C → je Phase
                                  // ──────────────────────────────────────────────────────────
                                  
                                  

                                  und

                                  // ═══════════════════════════════════════════════════════════════
                                  //  Einspeisung – Tägliche Aufsummierung (kWh + €)
                                  //  Speichert jeden Tag einen eigenen Eintrag im Format:
                                  //  0_userdata.0.Einspeisung.Tage.2025-04-09_kWh
                                  //  0_userdata.0.Einspeisung.Tage.2025-04-09_euro
                                  // ═══════════════════════════════════════════════════════════════
                                  
                                  // ── Quell-Datenpunkte ──────────────────────────────────────────
                                  // ⚠️ ID-Präfix aus ioBroker Objekte-Baum kopieren und anpassen!
                                  const DP_HEUTE_KWH  = 'javascript.0.Einspeisung.heute_kWh';
                                  const DP_HEUTE_EURO = 'javascript.0.Einspeisung.heute_euro';
                                  
                                  // ── Ziel-Ordner für Tagesdaten ─────────────────────────────────
                                  const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                                  
                                  // ── Jahressummen ───────────────────────────────────────────────
                                  const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                                  const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                                  
                                  // ═══════════════════════════════════════════════════════════════
                                  //  Jahressummen-Datenpunkte anlegen
                                  // ═══════════════════════════════════════════════════════════════
                                  createState(DP_JAHR_KWH, 0, {
                                      name:  'Einspeisung Jahr gesamt',
                                      unit:  'kWh',
                                      type:  'number',
                                      role:  'value.energy',
                                      read:  true,
                                      write: true
                                  });
                                  
                                  createState(DP_JAHR_EURO, 0, {
                                      name:  'Einspeisung Jahr gesamt (€)',
                                      unit:  '€',
                                      type:  'number',
                                      role:  'value.money',
                                      read:  true,
                                      write: true
                                  });
                                  
                                  // ═══════════════════════════════════════════════════════════════
                                  //  Hilfsfunktion: Datum als String  →  "2025-04-09"
                                  // ═══════════════════════════════════════════════════════════════
                                  function datumHeute() {
                                      const d = new Date();
                                      const yyyy = d.getFullYear();
                                      const mm   = String(d.getMonth() + 1).padStart(2, '0');
                                      const dd   = String(d.getDate()).padStart(2, '0');
                                      return `${yyyy}-${mm}-${dd}`;
                                  }
                                  
                                  // ═══════════════════════════════════════════════════════════════
                                  //  Hilfsfunktion: Tagesdatenpunkte speichern
                                  // ═══════════════════════════════════════════════════════════════
                                  function tageswertSpeichern() {
                                      const datum     = datumHeute();
                                      const tagesKwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                                      const tagesEuro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                                  
                                      const dpKwh  = DP_PREFIX + datum + '_kWh';
                                      const dpEuro = DP_PREFIX + datum + '_euro';
                                  
                                      // ── Tagesdatenpunkt anlegen und befüllen ───────────────────
                                      createState(dpKwh, tagesKwh, {
                                          name:  'Einspeisung ' + datum,
                                          unit:  'kWh',
                                          type:  'number',
                                          role:  'value.energy',
                                          read:  true,
                                          write: false
                                      }, () => {
                                          setState(dpKwh, tagesKwh, true);
                                      });
                                  
                                      createState(dpEuro, tagesEuro, {
                                          name:  'Einspeisevergütung ' + datum,
                                          unit:  '€',
                                          type:  'number',
                                          role:  'value.money',
                                          read:  true,
                                          write: false
                                      }, () => {
                                          setState(dpEuro, tagesEuro, true);
                                      });
                                  
                                      // ── Jahreswechsel: Jahressummen zurücksetzen ───────────────
                                      const jetzt = new Date();
                                      if (jetzt.getDate() === 1 && jetzt.getMonth() === 0) {
                                          setState(DP_JAHR_KWH,  0, true);
                                          setState(DP_JAHR_EURO, 0, true);
                                          log('🔄 Jahreswechsel: Jahressummen zurückgesetzt.', 'info');
                                      }
                                  
                                      // ── Jahressummen aktualisieren ─────────────────────────────
                                      const jahrKwh  = parseFloat(getState(DP_JAHR_KWH).val)  || 0;
                                      const jahrEuro = parseFloat(getState(DP_JAHR_EURO).val) || 0;
                                  
                                      const neueKwh  = Math.round((jahrKwh  + tagesKwh)  * 100) / 100;
                                      const neueEuro = Math.round((jahrEuro + tagesEuro) * 100) / 100;
                                  
                                      setState(DP_JAHR_KWH,  neueKwh,  true);
                                      setState(DP_JAHR_EURO, neueEuro, true);
                                  
                                      log(`✅ Tag ${datum}: ${tagesKwh} kWh / ${tagesEuro} € gespeichert`, 'info');
                                      log(`📊 Jahressumme: ${neueKwh} kWh / ${neueEuro} €`, 'info');
                                  }
                                  
                                  // ═══════════════════════════════════════════════════════════════
                                  //  Täglich um 23:55 Uhr ausführen
                                  //  (kurz vor Mitternacht – Tageswert ist vollständig)
                                  // ═══════════════════════════════════════════════════════════════
                                  schedule('55 23 * * *', () => {
                                      tageswertSpeichern();
                                  });
                                  
                                  log('📋 Script "Einspeisung Tagesspeicherung" gestartet – läuft täglich um 23:55 Uhr.', 'info');
                                  

                                  Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                  HomoranH mcm1957M 2 Antworten Letzte Antwort
                                  0
                                  • KusselinK Kusselin

                                    so, hier jetzt nochmal die Scripts die ich benutze:

                                    // ============================================================
                                    //  Shelly Pro 3EM – Tägliche Einspeisung & Vergütung
                                    //  ioBroker JavaScript Adapter + Source Analytics Adapter
                                    // ============================================================
                                    //
                                    //  Voraussetzungen:
                                    //  - JavaScript Adapter
                                    //  - ioBroker.source-analytics Adapter (oder history/influxdb)
                                    //
                                    //  Objekt-Pfade – ggf. an eigene Instanz anpassen:
                                    //  z.B. shelly.0.SHEM-3EM#<MAC>#1 → hier: shelly.0.shellyem3pro-...
                                    //
                                    //  ANPASSEN: Den Instanz-Präfix auf deine Installation setzen
                                    // ============================================================
                                    
                                    const SHELLY_PREFIX = 'shelly.1.shellypro3em#34987a467c54#1';
                                    // Beispiel: 'shelly.0.shellypro3em-aabbccddeeff'
                                    
                                    const OBJ_RETURN_TOTAL = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergy`;
                                    const OBJ_RETURN_A     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyA`;
                                    const OBJ_RETURN_B     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyB`;
                                    const OBJ_RETURN_C     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyC`;
                                    
                                    // Vergütung je kWh in €
                                    const VERGUETUNG_PRO_KWH = 0.068;
                                    
                                    // Ziel-Datenpunkt für das Ergebnis (wird automatisch erzeugt)
                                    const DP_HEUTE_KWH       = 'javascript.0.Einspeisung.heute_kWh';
                                    const DP_HEUTE_EURO      = 'javascript.0.Einspeisung.heute_euro';
                                    const DP_HEUTE_KWH_A     = 'javascript.0.Einspeisung.heute_kWh_PhaseA';
                                    const DP_HEUTE_KWH_B     = 'javascript.0.Einspeisung.heute_kWh_PhaseB';
                                    const DP_HEUTE_KWH_C     = 'javascript.0.Einspeisung.heute_kWh_PhaseC';
                                    const DP_TAGESBEGINN_WH  = 'javascript.0.Einspeisung.tagesbeginn_Wh';
                                    const DP_TAGESBEGINN_A   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseA';
                                    const DP_TAGESBEGINN_B   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseB';
                                    const DP_TAGESBEGINN_C   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseC';
                                    
                                    // ─── Datenpunkte anlegen ────────────────────────────────────
                                    createState(DP_HEUTE_KWH,      0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute gesamt' });
                                    createState(DP_HEUTE_EURO,     0, { unit: '€',   type: 'number', name: 'Einspeisevergütung heute' });
                                    createState(DP_HEUTE_KWH_A,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase A' });
                                    createState(DP_HEUTE_KWH_B,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase B' });
                                    createState(DP_HEUTE_KWH_C,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase C' });
                                    createState(DP_TAGESBEGINN_WH, 0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn gesamt' });
                                    createState(DP_TAGESBEGINN_A,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase A' });
                                    createState(DP_TAGESBEGINN_B,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase B' });
                                    createState(DP_TAGESBEGINN_C,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase C' });
                                    
                                    // ─── Hilfsfunktion: Tagesdifferenz berechnen ────────────────
                                    function berechneEinspeisung() {
                                        const aktuellerWert   = getState(OBJ_RETURN_TOTAL).val || 0;
                                        const aktuellerWert_A = getState(OBJ_RETURN_A).val     || 0;
                                        const aktuellerWert_B = getState(OBJ_RETURN_B).val     || 0;
                                        const aktuellerWert_C = getState(OBJ_RETURN_C).val     || 0;
                                    
                                        const tagesbeginn   = getState(DP_TAGESBEGINN_WH).val || aktuellerWert;
                                        const tagesbeginn_A = getState(DP_TAGESBEGINN_A).val  || aktuellerWert_A;
                                        const tagesbeginn_B = getState(DP_TAGESBEGINN_B).val  || aktuellerWert_B;
                                        const tagesbeginn_C = getState(DP_TAGESBEGINN_C).val  || aktuellerWert_C;
                                    
                                        // Differenz in Wh → kWh (auf 3 Dezimalstellen)
                                        const diff_kWh   = Math.round((aktuellerWert   - tagesbeginn)   / 10) / 100;
                                        const diff_kWh_A = Math.round((aktuellerWert_A - tagesbeginn_A) / 10) / 100;
                                        const diff_kWh_B = Math.round((aktuellerWert_B - tagesbeginn_B) / 10) / 100;
                                        const diff_kWh_C = Math.round((aktuellerWert_C - tagesbeginn_C) / 10) / 100;
                                    
                                        const verguetung = Math.round(diff_kWh * VERGUETUNG_PRO_KWH * 100) / 100;
                                    
                                    
                                        setState(DP_HEUTE_KWH,   diff_kWh   < 0 ? 0 : diff_kWh,   true);
                                        setState(DP_HEUTE_KWH_A, diff_kWh_A < 0 ? 0 : diff_kWh_A, true);
                                        setState(DP_HEUTE_KWH_B, diff_kWh_B < 0 ? 0 : diff_kWh_B, true);
                                        setState(DP_HEUTE_KWH_C, diff_kWh_C < 0 ? 0 : diff_kWh_C, true);
                                        setState(DP_HEUTE_EURO,  verguetung  < 0 ? 0 : verguetung,  true);
                                    
                                        log(`[Einspeisung] Heute: ${diff_kWh} kWh | A: ${diff_kWh_A} | B: ${diff_kWh_B} | C: ${diff_kWh_C} | Vergütung: ${verguetung.toFixed(2)} €`);
                                    }
                                    
                                    // ─── Tagesbeginn um Mitternacht speichern ───────────────────
                                    schedule('0 0 * * *', function () {
                                        const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                        const val_A = getState(OBJ_RETURN_A).val     || 0;
                                        const val_B = getState(OBJ_RETURN_B).val     || 0;
                                        const val_C = getState(OBJ_RETURN_C).val     || 0;
                                    
                                        setState(DP_TAGESBEGINN_WH, val,   true);
                                        setState(DP_TAGESBEGINN_A,  val_A, true);
                                        setState(DP_TAGESBEGINN_B,  val_B, true);
                                        setState(DP_TAGESBEGINN_C,  val_C, true);
                                    
                                        log(`[Einspeisung] Tagesbeginn gesetzt: ${val} Wh (A:${val_A} B:${val_B} C:${val_C})`);
                                    });
                                    
                                    // ─── Bei jeder Änderung des Shelly-Zählers neu berechnen ───
                                    on({ id: OBJ_RETURN_TOTAL, change: 'any' }, berechneEinspeisung);
                                    
                                    // ─── Beim Skriptstart einmalig berechnen ───────────────────
                                    // Tagesbeginn-Initialisierung: Nur setzen wenn noch 0
                                    setTimeout(function () {
                                        if (getState(DP_TAGESBEGINN_WH).val === 0) {
                                            const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                            const val_A = getState(OBJ_RETURN_A).val     || 0;
                                            const val_B = getState(OBJ_RETURN_B).val     || 0;
                                            const val_C = getState(OBJ_RETURN_C).val     || 0;
                                            setState(DP_TAGESBEGINN_WH, val,   true);
                                            setState(DP_TAGESBEGINN_A,  val_A, true);
                                            setState(DP_TAGESBEGINN_B,  val_B, true);
                                            setState(DP_TAGESBEGINN_C,  val_C, true);
                                            log('[Einspeisung] Erstinitialisierung Tagesbeginn gesetzt.');
                                        }
                                        berechneEinspeisung();
                                    }, 2000);
                                    
                                    // ─── SOURCE ANALYTICS Adapter Integration ──────────────────
                                    // Der source-analytics Adapter liest automatisch aus dem Datenpunkt
                                    // wenn dieser in der Instanzkonfiguration eingetragen ist.
                                    //
                                    // Alternativ: history-Adapter aktivieren auf:
                                    //   javascript.0.Einspeisung.heute_kWh
                                    //   javascript.0.Einspeisung.heute_euro
                                    //
                                    // Für Tageshistorie via Source Analytics:
                                    // - Datenpunkt: javascript.0.Einspeisung.heute_kWh
                                    // - Aggregation: last (letzter Wert des Tages)
                                    // - Anzeige: Balkendiagramm (Tagesansicht)
                                    //
                                    // ──────────────────────────────────────────────────────────
                                    // ERGEBNIS-DATENPUNKTE (für VIS / Jarvis / Material UI):
                                    //
                                    //   javascript.0.Einspeisung.heute_kWh       → Einspeisung heute in kWh
                                    //   javascript.0.Einspeisung.heute_euro      → Vergütung heute in €
                                    //   javascript.0.Einspeisung.heute_kWh_PhaseA/B/C → je Phase
                                    // ──────────────────────────────────────────────────────────
                                    
                                    

                                    und

                                    // ═══════════════════════════════════════════════════════════════
                                    //  Einspeisung – Tägliche Aufsummierung (kWh + €)
                                    //  Speichert jeden Tag einen eigenen Eintrag im Format:
                                    //  0_userdata.0.Einspeisung.Tage.2025-04-09_kWh
                                    //  0_userdata.0.Einspeisung.Tage.2025-04-09_euro
                                    // ═══════════════════════════════════════════════════════════════
                                    
                                    // ── Quell-Datenpunkte ──────────────────────────────────────────
                                    // ⚠️ ID-Präfix aus ioBroker Objekte-Baum kopieren und anpassen!
                                    const DP_HEUTE_KWH  = 'javascript.0.Einspeisung.heute_kWh';
                                    const DP_HEUTE_EURO = 'javascript.0.Einspeisung.heute_euro';
                                    
                                    // ── Ziel-Ordner für Tagesdaten ─────────────────────────────────
                                    const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                                    
                                    // ── Jahressummen ───────────────────────────────────────────────
                                    const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                                    const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                                    
                                    // ═══════════════════════════════════════════════════════════════
                                    //  Jahressummen-Datenpunkte anlegen
                                    // ═══════════════════════════════════════════════════════════════
                                    createState(DP_JAHR_KWH, 0, {
                                        name:  'Einspeisung Jahr gesamt',
                                        unit:  'kWh',
                                        type:  'number',
                                        role:  'value.energy',
                                        read:  true,
                                        write: true
                                    });
                                    
                                    createState(DP_JAHR_EURO, 0, {
                                        name:  'Einspeisung Jahr gesamt (€)',
                                        unit:  '€',
                                        type:  'number',
                                        role:  'value.money',
                                        read:  true,
                                        write: true
                                    });
                                    
                                    // ═══════════════════════════════════════════════════════════════
                                    //  Hilfsfunktion: Datum als String  →  "2025-04-09"
                                    // ═══════════════════════════════════════════════════════════════
                                    function datumHeute() {
                                        const d = new Date();
                                        const yyyy = d.getFullYear();
                                        const mm   = String(d.getMonth() + 1).padStart(2, '0');
                                        const dd   = String(d.getDate()).padStart(2, '0');
                                        return `${yyyy}-${mm}-${dd}`;
                                    }
                                    
                                    // ═══════════════════════════════════════════════════════════════
                                    //  Hilfsfunktion: Tagesdatenpunkte speichern
                                    // ═══════════════════════════════════════════════════════════════
                                    function tageswertSpeichern() {
                                        const datum     = datumHeute();
                                        const tagesKwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                                        const tagesEuro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                                    
                                        const dpKwh  = DP_PREFIX + datum + '_kWh';
                                        const dpEuro = DP_PREFIX + datum + '_euro';
                                    
                                        // ── Tagesdatenpunkt anlegen und befüllen ───────────────────
                                        createState(dpKwh, tagesKwh, {
                                            name:  'Einspeisung ' + datum,
                                            unit:  'kWh',
                                            type:  'number',
                                            role:  'value.energy',
                                            read:  true,
                                            write: false
                                        }, () => {
                                            setState(dpKwh, tagesKwh, true);
                                        });
                                    
                                        createState(dpEuro, tagesEuro, {
                                            name:  'Einspeisevergütung ' + datum,
                                            unit:  '€',
                                            type:  'number',
                                            role:  'value.money',
                                            read:  true,
                                            write: false
                                        }, () => {
                                            setState(dpEuro, tagesEuro, true);
                                        });
                                    
                                        // ── Jahreswechsel: Jahressummen zurücksetzen ───────────────
                                        const jetzt = new Date();
                                        if (jetzt.getDate() === 1 && jetzt.getMonth() === 0) {
                                            setState(DP_JAHR_KWH,  0, true);
                                            setState(DP_JAHR_EURO, 0, true);
                                            log('🔄 Jahreswechsel: Jahressummen zurückgesetzt.', 'info');
                                        }
                                    
                                        // ── Jahressummen aktualisieren ─────────────────────────────
                                        const jahrKwh  = parseFloat(getState(DP_JAHR_KWH).val)  || 0;
                                        const jahrEuro = parseFloat(getState(DP_JAHR_EURO).val) || 0;
                                    
                                        const neueKwh  = Math.round((jahrKwh  + tagesKwh)  * 100) / 100;
                                        const neueEuro = Math.round((jahrEuro + tagesEuro) * 100) / 100;
                                    
                                        setState(DP_JAHR_KWH,  neueKwh,  true);
                                        setState(DP_JAHR_EURO, neueEuro, true);
                                    
                                        log(`✅ Tag ${datum}: ${tagesKwh} kWh / ${tagesEuro} € gespeichert`, 'info');
                                        log(`📊 Jahressumme: ${neueKwh} kWh / ${neueEuro} €`, 'info');
                                    }
                                    
                                    // ═══════════════════════════════════════════════════════════════
                                    //  Täglich um 23:55 Uhr ausführen
                                    //  (kurz vor Mitternacht – Tageswert ist vollständig)
                                    // ═══════════════════════════════════════════════════════════════
                                    schedule('55 23 * * *', () => {
                                        tageswertSpeichern();
                                    });
                                    
                                    log('📋 Script "Einspeisung Tagesspeicherung" gestartet – läuft täglich um 23:55 Uhr.', 'info');
                                    

                                    Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                    HomoranH Nicht stören
                                    HomoranH Nicht stören
                                    Homoran
                                    Global Moderator Administrators
                                    schrieb am zuletzt editiert von
                                    #53

                                    @Kusselin sagte:

                                    so, hier jetzt nochmal die Scripts die ich benutze:

                                    Hast du alles von @mcm1957 gelesen und umgesetzt?

                                    kein Support per PN! - Fragen im Forum stellen -
                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                    Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    1 Antwort Letzte Antwort
                                    0
                                    • HomoranH Homoran

                                      @Kusselin sagte:

                                      Das kommt im Log immer mal wieder:

                                      Hast du ja auch so programmiert

                                      @Kusselin sagte:

                                      log(📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert, 'info');

                                      KusselinK Offline
                                      KusselinK Offline
                                      Kusselin
                                      schrieb am zuletzt editiert von
                                      #54

                                      @Homoran sagte:

                                      @Kusselin sagte:

                                      Das kommt im Log immer mal wieder:

                                      Hast du ja auch so programmiert

                                      @Kusselin sagte:

                                      log(📅 ${datum}: ${kwh} kWh | ${euro} € gespeichert, 'info');

                                      Das ist aber nicht schlimm...das hat nichts mit dem zu tun das zu viele Anfragen sind?

                                      @mcm1957 sagte:

                                      Ein Ansatz zur Fehlersuche wär mal deine scripte zu stoppen jnd dann in Ruhe zu schaun ob der Shelly stabil läuft.

                                      Alternativ bau ein log ein bei allen Zugriffen deiner Scripte auf den Shelly. Da sirht man dann ob do alle Stunden oder alle ms zugreifst ....

                                      sorry @mcm1957 das kann ich nicht....also so drinn im thema bin ich da leider nicht.

                                      @mcm1957 sagte:

                                      Noch ein Hinweis:
                                      Du verwendest die States offensichtlich als History:
                                      createState(dpKwh, {
                                      name: 'Einspeisung ' + datum,
                                      ...
                                      Ich hoffe du hast auch irgendeinen Algorithmus um das aufzuräumen. Zur Hiostorsierung gibts normalerweise dedizierte Adapter. Bei einem State pro Tag ists nicht so kritisch - aber wenn deien KI auch z.B. stündliche Werte so anlegt dann wird dir dein System in die Knie gehn....

                                      genau so ein Algorytmus habe ich nicht. das hab ich auch schon gesehen...in den Objekten wird da täglich jeder Tag angelegt. Ist halt schwierig wenn man nicht scripten kann das zu realisieren??

                                      was ist das "Zur Hiostorsierung gibts normalerweise dedizierte Adapter?" was müsste ich da unternehmen um das das System in den Objekten nicht überläuft?
                                      Aber es wird nicht stündlich angelegt...er macht es für die € udn kWh einmal am Tag um 23:55 aber das dann 365 mal...
                                      Image 001.png

                                      HomoranH NegaleinN 2 Antworten Letzte Antwort
                                      0
                                      • KusselinK Kusselin

                                        so, hier jetzt nochmal die Scripts die ich benutze:

                                        // ============================================================
                                        //  Shelly Pro 3EM – Tägliche Einspeisung & Vergütung
                                        //  ioBroker JavaScript Adapter + Source Analytics Adapter
                                        // ============================================================
                                        //
                                        //  Voraussetzungen:
                                        //  - JavaScript Adapter
                                        //  - ioBroker.source-analytics Adapter (oder history/influxdb)
                                        //
                                        //  Objekt-Pfade – ggf. an eigene Instanz anpassen:
                                        //  z.B. shelly.0.SHEM-3EM#<MAC>#1 → hier: shelly.0.shellyem3pro-...
                                        //
                                        //  ANPASSEN: Den Instanz-Präfix auf deine Installation setzen
                                        // ============================================================
                                        
                                        const SHELLY_PREFIX = 'shelly.1.shellypro3em#34987a467c54#1';
                                        // Beispiel: 'shelly.0.shellypro3em-aabbccddeeff'
                                        
                                        const OBJ_RETURN_TOTAL = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergy`;
                                        const OBJ_RETURN_A     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyA`;
                                        const OBJ_RETURN_B     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyB`;
                                        const OBJ_RETURN_C     = `${SHELLY_PREFIX}.EMData0.TotalActiveReturnEnergyC`;
                                        
                                        // Vergütung je kWh in €
                                        const VERGUETUNG_PRO_KWH = 0.068;
                                        
                                        // Ziel-Datenpunkt für das Ergebnis (wird automatisch erzeugt)
                                        const DP_HEUTE_KWH       = 'javascript.0.Einspeisung.heute_kWh';
                                        const DP_HEUTE_EURO      = 'javascript.0.Einspeisung.heute_euro';
                                        const DP_HEUTE_KWH_A     = 'javascript.0.Einspeisung.heute_kWh_PhaseA';
                                        const DP_HEUTE_KWH_B     = 'javascript.0.Einspeisung.heute_kWh_PhaseB';
                                        const DP_HEUTE_KWH_C     = 'javascript.0.Einspeisung.heute_kWh_PhaseC';
                                        const DP_TAGESBEGINN_WH  = 'javascript.0.Einspeisung.tagesbeginn_Wh';
                                        const DP_TAGESBEGINN_A   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseA';
                                        const DP_TAGESBEGINN_B   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseB';
                                        const DP_TAGESBEGINN_C   = 'javascript.0.Einspeisung.tagesbeginn_Wh_PhaseC';
                                        
                                        // ─── Datenpunkte anlegen ────────────────────────────────────
                                        createState(DP_HEUTE_KWH,      0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute gesamt' });
                                        createState(DP_HEUTE_EURO,     0, { unit: '€',   type: 'number', name: 'Einspeisevergütung heute' });
                                        createState(DP_HEUTE_KWH_A,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase A' });
                                        createState(DP_HEUTE_KWH_B,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase B' });
                                        createState(DP_HEUTE_KWH_C,    0, { unit: 'kWh', type: 'number', name: 'Einspeisung heute Phase C' });
                                        createState(DP_TAGESBEGINN_WH, 0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn gesamt' });
                                        createState(DP_TAGESBEGINN_A,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase A' });
                                        createState(DP_TAGESBEGINN_B,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase B' });
                                        createState(DP_TAGESBEGINN_C,  0, { unit: 'Wh',  type: 'number', name: 'Zählerstand Tagesbeginn Phase C' });
                                        
                                        // ─── Hilfsfunktion: Tagesdifferenz berechnen ────────────────
                                        function berechneEinspeisung() {
                                            const aktuellerWert   = getState(OBJ_RETURN_TOTAL).val || 0;
                                            const aktuellerWert_A = getState(OBJ_RETURN_A).val     || 0;
                                            const aktuellerWert_B = getState(OBJ_RETURN_B).val     || 0;
                                            const aktuellerWert_C = getState(OBJ_RETURN_C).val     || 0;
                                        
                                            const tagesbeginn   = getState(DP_TAGESBEGINN_WH).val || aktuellerWert;
                                            const tagesbeginn_A = getState(DP_TAGESBEGINN_A).val  || aktuellerWert_A;
                                            const tagesbeginn_B = getState(DP_TAGESBEGINN_B).val  || aktuellerWert_B;
                                            const tagesbeginn_C = getState(DP_TAGESBEGINN_C).val  || aktuellerWert_C;
                                        
                                            // Differenz in Wh → kWh (auf 3 Dezimalstellen)
                                            const diff_kWh   = Math.round((aktuellerWert   - tagesbeginn)   / 10) / 100;
                                            const diff_kWh_A = Math.round((aktuellerWert_A - tagesbeginn_A) / 10) / 100;
                                            const diff_kWh_B = Math.round((aktuellerWert_B - tagesbeginn_B) / 10) / 100;
                                            const diff_kWh_C = Math.round((aktuellerWert_C - tagesbeginn_C) / 10) / 100;
                                        
                                            const verguetung = Math.round(diff_kWh * VERGUETUNG_PRO_KWH * 100) / 100;
                                        
                                        
                                            setState(DP_HEUTE_KWH,   diff_kWh   < 0 ? 0 : diff_kWh,   true);
                                            setState(DP_HEUTE_KWH_A, diff_kWh_A < 0 ? 0 : diff_kWh_A, true);
                                            setState(DP_HEUTE_KWH_B, diff_kWh_B < 0 ? 0 : diff_kWh_B, true);
                                            setState(DP_HEUTE_KWH_C, diff_kWh_C < 0 ? 0 : diff_kWh_C, true);
                                            setState(DP_HEUTE_EURO,  verguetung  < 0 ? 0 : verguetung,  true);
                                        
                                            log(`[Einspeisung] Heute: ${diff_kWh} kWh | A: ${diff_kWh_A} | B: ${diff_kWh_B} | C: ${diff_kWh_C} | Vergütung: ${verguetung.toFixed(2)} €`);
                                        }
                                        
                                        // ─── Tagesbeginn um Mitternacht speichern ───────────────────
                                        schedule('0 0 * * *', function () {
                                            const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                            const val_A = getState(OBJ_RETURN_A).val     || 0;
                                            const val_B = getState(OBJ_RETURN_B).val     || 0;
                                            const val_C = getState(OBJ_RETURN_C).val     || 0;
                                        
                                            setState(DP_TAGESBEGINN_WH, val,   true);
                                            setState(DP_TAGESBEGINN_A,  val_A, true);
                                            setState(DP_TAGESBEGINN_B,  val_B, true);
                                            setState(DP_TAGESBEGINN_C,  val_C, true);
                                        
                                            log(`[Einspeisung] Tagesbeginn gesetzt: ${val} Wh (A:${val_A} B:${val_B} C:${val_C})`);
                                        });
                                        
                                        // ─── Bei jeder Änderung des Shelly-Zählers neu berechnen ───
                                        on({ id: OBJ_RETURN_TOTAL, change: 'any' }, berechneEinspeisung);
                                        
                                        // ─── Beim Skriptstart einmalig berechnen ───────────────────
                                        // Tagesbeginn-Initialisierung: Nur setzen wenn noch 0
                                        setTimeout(function () {
                                            if (getState(DP_TAGESBEGINN_WH).val === 0) {
                                                const val   = getState(OBJ_RETURN_TOTAL).val || 0;
                                                const val_A = getState(OBJ_RETURN_A).val     || 0;
                                                const val_B = getState(OBJ_RETURN_B).val     || 0;
                                                const val_C = getState(OBJ_RETURN_C).val     || 0;
                                                setState(DP_TAGESBEGINN_WH, val,   true);
                                                setState(DP_TAGESBEGINN_A,  val_A, true);
                                                setState(DP_TAGESBEGINN_B,  val_B, true);
                                                setState(DP_TAGESBEGINN_C,  val_C, true);
                                                log('[Einspeisung] Erstinitialisierung Tagesbeginn gesetzt.');
                                            }
                                            berechneEinspeisung();
                                        }, 2000);
                                        
                                        // ─── SOURCE ANALYTICS Adapter Integration ──────────────────
                                        // Der source-analytics Adapter liest automatisch aus dem Datenpunkt
                                        // wenn dieser in der Instanzkonfiguration eingetragen ist.
                                        //
                                        // Alternativ: history-Adapter aktivieren auf:
                                        //   javascript.0.Einspeisung.heute_kWh
                                        //   javascript.0.Einspeisung.heute_euro
                                        //
                                        // Für Tageshistorie via Source Analytics:
                                        // - Datenpunkt: javascript.0.Einspeisung.heute_kWh
                                        // - Aggregation: last (letzter Wert des Tages)
                                        // - Anzeige: Balkendiagramm (Tagesansicht)
                                        //
                                        // ──────────────────────────────────────────────────────────
                                        // ERGEBNIS-DATENPUNKTE (für VIS / Jarvis / Material UI):
                                        //
                                        //   javascript.0.Einspeisung.heute_kWh       → Einspeisung heute in kWh
                                        //   javascript.0.Einspeisung.heute_euro      → Vergütung heute in €
                                        //   javascript.0.Einspeisung.heute_kWh_PhaseA/B/C → je Phase
                                        // ──────────────────────────────────────────────────────────
                                        
                                        

                                        und

                                        // ═══════════════════════════════════════════════════════════════
                                        //  Einspeisung – Tägliche Aufsummierung (kWh + €)
                                        //  Speichert jeden Tag einen eigenen Eintrag im Format:
                                        //  0_userdata.0.Einspeisung.Tage.2025-04-09_kWh
                                        //  0_userdata.0.Einspeisung.Tage.2025-04-09_euro
                                        // ═══════════════════════════════════════════════════════════════
                                        
                                        // ── Quell-Datenpunkte ──────────────────────────────────────────
                                        // ⚠️ ID-Präfix aus ioBroker Objekte-Baum kopieren und anpassen!
                                        const DP_HEUTE_KWH  = 'javascript.0.Einspeisung.heute_kWh';
                                        const DP_HEUTE_EURO = 'javascript.0.Einspeisung.heute_euro';
                                        
                                        // ── Ziel-Ordner für Tagesdaten ─────────────────────────────────
                                        const DP_PREFIX     = '0_userdata.0.Einspeisung.Tage.';
                                        
                                        // ── Jahressummen ───────────────────────────────────────────────
                                        const DP_JAHR_KWH   = '0_userdata.0.Einspeisung.jahr_kWh';
                                        const DP_JAHR_EURO  = '0_userdata.0.Einspeisung.jahr_euro';
                                        
                                        // ═══════════════════════════════════════════════════════════════
                                        //  Jahressummen-Datenpunkte anlegen
                                        // ═══════════════════════════════════════════════════════════════
                                        createState(DP_JAHR_KWH, 0, {
                                            name:  'Einspeisung Jahr gesamt',
                                            unit:  'kWh',
                                            type:  'number',
                                            role:  'value.energy',
                                            read:  true,
                                            write: true
                                        });
                                        
                                        createState(DP_JAHR_EURO, 0, {
                                            name:  'Einspeisung Jahr gesamt (€)',
                                            unit:  '€',
                                            type:  'number',
                                            role:  'value.money',
                                            read:  true,
                                            write: true
                                        });
                                        
                                        // ═══════════════════════════════════════════════════════════════
                                        //  Hilfsfunktion: Datum als String  →  "2025-04-09"
                                        // ═══════════════════════════════════════════════════════════════
                                        function datumHeute() {
                                            const d = new Date();
                                            const yyyy = d.getFullYear();
                                            const mm   = String(d.getMonth() + 1).padStart(2, '0');
                                            const dd   = String(d.getDate()).padStart(2, '0');
                                            return `${yyyy}-${mm}-${dd}`;
                                        }
                                        
                                        // ═══════════════════════════════════════════════════════════════
                                        //  Hilfsfunktion: Tagesdatenpunkte speichern
                                        // ═══════════════════════════════════════════════════════════════
                                        function tageswertSpeichern() {
                                            const datum     = datumHeute();
                                            const tagesKwh  = parseFloat(getState(DP_HEUTE_KWH).val)  || 0;
                                            const tagesEuro = parseFloat(getState(DP_HEUTE_EURO).val) || 0;
                                        
                                            const dpKwh  = DP_PREFIX + datum + '_kWh';
                                            const dpEuro = DP_PREFIX + datum + '_euro';
                                        
                                            // ── Tagesdatenpunkt anlegen und befüllen ───────────────────
                                            createState(dpKwh, tagesKwh, {
                                                name:  'Einspeisung ' + datum,
                                                unit:  'kWh',
                                                type:  'number',
                                                role:  'value.energy',
                                                read:  true,
                                                write: false
                                            }, () => {
                                                setState(dpKwh, tagesKwh, true);
                                            });
                                        
                                            createState(dpEuro, tagesEuro, {
                                                name:  'Einspeisevergütung ' + datum,
                                                unit:  '€',
                                                type:  'number',
                                                role:  'value.money',
                                                read:  true,
                                                write: false
                                            }, () => {
                                                setState(dpEuro, tagesEuro, true);
                                            });
                                        
                                            // ── Jahreswechsel: Jahressummen zurücksetzen ───────────────
                                            const jetzt = new Date();
                                            if (jetzt.getDate() === 1 && jetzt.getMonth() === 0) {
                                                setState(DP_JAHR_KWH,  0, true);
                                                setState(DP_JAHR_EURO, 0, true);
                                                log('🔄 Jahreswechsel: Jahressummen zurückgesetzt.', 'info');
                                            }
                                        
                                            // ── Jahressummen aktualisieren ─────────────────────────────
                                            const jahrKwh  = parseFloat(getState(DP_JAHR_KWH).val)  || 0;
                                            const jahrEuro = parseFloat(getState(DP_JAHR_EURO).val) || 0;
                                        
                                            const neueKwh  = Math.round((jahrKwh  + tagesKwh)  * 100) / 100;
                                            const neueEuro = Math.round((jahrEuro + tagesEuro) * 100) / 100;
                                        
                                            setState(DP_JAHR_KWH,  neueKwh,  true);
                                            setState(DP_JAHR_EURO, neueEuro, true);
                                        
                                            log(`✅ Tag ${datum}: ${tagesKwh} kWh / ${tagesEuro} € gespeichert`, 'info');
                                            log(`📊 Jahressumme: ${neueKwh} kWh / ${neueEuro} €`, 'info');
                                        }
                                        
                                        // ═══════════════════════════════════════════════════════════════
                                        //  Täglich um 23:55 Uhr ausführen
                                        //  (kurz vor Mitternacht – Tageswert ist vollständig)
                                        // ═══════════════════════════════════════════════════════════════
                                        schedule('55 23 * * *', () => {
                                            tageswertSpeichern();
                                        });
                                        
                                        log('📋 Script "Einspeisung Tagesspeicherung" gestartet – läuft täglich um 23:55 Uhr.', 'info');
                                        

                                        Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                        mcm1957M Online
                                        mcm1957M Online
                                        mcm1957
                                        schrieb am zuletzt editiert von
                                        #55

                                        @Kusselin sagte:

                                        Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                        In welchem Script liest du daten vom Shelly?

                                        Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                                        Support Repositoryverwaltung.

                                        Wer 'nen Kaffee spendieren will: https://paypal.me

                                        LESEN - gute Forenbeitrage

                                        KusselinK 1 Antwort Letzte Antwort
                                        0
                                        • mcm1957M mcm1957

                                          @Kusselin sagte:

                                          Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                          In welchem Script liest du daten vom Shelly?

                                          KusselinK Offline
                                          KusselinK Offline
                                          Kusselin
                                          schrieb am zuletzt editiert von
                                          #56

                                          @mcm1957 sagte:

                                          @Kusselin sagte:

                                          Könnt Ihr Experts da was erkennen, ob da was zu oft abgerufen wird??

                                          In welchem Script liest du daten vom Shelly?

                                          im ersten Script hier:

                                          const SHELLY_PREFIX = 'shelly.1.shellypro3em#34987a467c54#1';
                                          // Beispiel: 'shelly.0.shellypro3em-aabbccddeeff'
                                          
                                          mcm1957M 1 Antwort Letzte Antwort
                                          0

                                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                          Registrieren Anmelden
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          646

                                          Online

                                          33.0k

                                          Benutzer

                                          83.2k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2026
                                          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