Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. dragst3r

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    D
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 55
    • Best 8
    • Groups 1

    dragst3r

    @dragst3r

    8
    Reputation
    16
    Profile views
    55
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    dragst3r Follow
    Starter

    Best posts made by dragst3r

    • RE: Frigate Adapter für ioBroker

      Hallo,

      keine Ahnung ob es gewollt ist oder nicht, aber wenn bei Frigate die Snapshots deaktivuert sind für camX, aktualisiert der Adapter trotzdem das Objekt: frigate.0.camX.objects.person.web.clip.clip_0, da scheinbar was getriggert wurde. In Frigate wird ja auch immer ein Thumbnail generiert des letztens Objekt.

      Öffnet man aber die Url ist kein Event verfügbar, da die Funktion Snapshots ja auch aus war und somit kein JPG erzeugt wurde.

      Ein Idee daher meinerseits, das Objekt erst zu aktualisieren, wenn auch die Funktion in Frigate überhaupt aktiviert ist.

      Grüße
      dragst3r

      posted in Tester
      D
      dragst3r
    • RE: Frigate Adapter für ioBroker

      @wal
      Genau so ist, ich hatte bei meinem Test ursprünglich einen Gedanken Fehler in der Abfrage, da ich die camid zusätzlich auf Veränderung abfrage. Die aktualisiert sich aber immer, egal ob Snap oder Clip.
      Clip und Snap URL werden nur dann aktualisiert wenn diese auch an sind. Kann so bleiben mMn.

      posted in Tester
      D
      dragst3r
    • RE: Frigate Adapter für ioBroker

      @wal ,
      falls meine Änderungen in Github nicht abgeschickt worden sind, reicht schon folgendes, markiert mit // NEU bzw. anders

       async onEventChange(obj) {
              const extractedJSON = JSON.parse(obj.val);
              const beforecamera = extractedJSON.before.camera;
              const before = extractedJSON.before; // NEU 
              const beforelabel = extractedJSON.before.label;
              const afterid = extractedJSON.after.id;
              const topscore = extractedJSON.after.top_score;
              const eventtype = extractedJSON.type;
              const id1 = beforecamera + '.event';
              const id2 = beforecamera + '.objects.' + beforelabel;
              const websnap = weburl + '/api/events/' + afterid + '/snapshot.jpg';
              const webclip = weburl + '/api/events/' + afterid + '/clip.mp4';
      
      
              const bsnap = before.has_snapshot; // NEU bzw. anders
              const bclip = before.has_clip; // NEU bzw. anders
              if ((bsnap == null) || (bclip == null)) {
                  this.log.info('restart MQTT Broker please !!!');
                  return;
              }
              this.log.debug(`Snap: ${bsnap}`);
              this.log.debug(`Clip: ${bclip}`);
              this.log.debug(`changed: ${obj.val}`);
              try {
                  if (eventtype == 'new') {
                      //------------------------------
                      //      Bewegung erkannt
                      //------------------------------
                      this.setState('event', { val: true, ack: true });
                      //------------------------------
                      //       Kamera erkannt
                      //------------------------------
                      await this.setObjectNotExistsAsync(id1, {
                          type: 'state',
                          common: {
                              name: 'Camera detected',
                              type: 'boolean',
                              role: 'indicator',
                              read: true,
                              write: false,
                              def: false
                          },
                          native: {},
                      });
                      this.setState(id1, { val: true, ack: true });
                      //------------------------------
                      //       Objekt erkannt
                      //------------------------------
                      await this.setObjectNotExistsAsync(id2 + '.event', {
                          type: 'state',
                          common: {
                              name: beforelabel + ' detected',
                              type: 'boolean',
                              role: 'indicator',
                              read: true,
                              write: false,
                              def: false
                          },
                          native: {},
                      });
                      this.setState(id2 + '.event', { val: true, ack: true });
                  } else if (eventtype == 'end') {
                      //------------------------------
                      //         Event ID
                      //------------------------------
                      await this.setObjectNotExistsAsync(id2 + '.id', {
                          type: 'state',
                          common: {
                              name: 'Event ID',
                              type: 'string',
                              role: 'value',
                              read: true,
                              write: false,
                              def: 'none'
                          },
                          native: {},
                      });
                      this.setState(id2 + '.id', { val: afterid, ack: true });
                      //------------------------------
                      //         Cam + Event ID
                      //------------------------------
                      await this.setObjectNotExistsAsync(id2 + '.camid', {
                          type: 'state',
                          common: {
                              name: 'Cam ID',
                              type: 'string',
                              role: 'value',
                              read: true,
                              write: false,
                              def: 'none'
                          },
                          native: {},
                      });
                      this.setState(id2 + '.camid', { val: beforecamera + '-' + afterid, ack: true });
                      this.setState('lastcamid', { val: beforecamera + '-' + afterid, ack: true });
                      this.setState('lastidurl', { val: websnap, ack: true });
                      //------------------------------
                      //           WebURL
                      //------------------------------
                      const anz = this.config.webnum;
                      if (bsnap == true) { // NEU bzw. anders
                          for (let i = 0; i < anz; i++)
                              await this.setObjectNotExistsAsync(id2 + '.web.snap.snap_' + i.toString(), {
                                  type: 'state',
                                  common: {
                                      name: 'Snapshot WebUrl ' + i.toString(),
                                      type: 'string',
                                      role: 'value',
                                      read: true,
                                      write: false,
                                      def: ''
                                  },
                                  native: {},
                              });
      
                          for (let i = anz - 1; i > -1; i--) {
                              if (i == 0) {
                                  this.setState(id2 + '.web.snap.snap_' + i.toString(), { val: websnap, ack: true });
                              } else {
                                  const str = await this.getStateAsync(id2 + '.web.snap.snap_' + (i - 1).toString());
                                  if (str != null)
                                      this.setState(id2 + '.web.snap.snap_' + i.toString(), { val: str.val, ack: true });
                              }
                          }
                      }
                      if (bclip == true) { // NEU bzw. anders
                          for (let i = 0; i < anz; i++)
                              await this.setObjectNotExistsAsync(id2 + '.web.clip.clip_' + i.toString(), {
                                  type: 'state',
                                  common: {
                                      name: 'Clip WebUrl ' + i.toString(),
                                      type: 'string',
                                      role: 'value',
                                      read: true,
                                      write: false,
                                      def: ''
                                  },
                                  native: {},
                              });
      
                          for (let i = anz - 1; i > -1; i--) {
                              if (i == 0) {
                                  this.setState(id2 + '.web.clip.clip_' + i.toString(), { val: webclip, ack: true });
                              } else {
                                  const str = await this.getStateAsync(id2 + '.web.clip.clip_' + (i - 1).toString());
                                  if (str != null)
                                      this.setState(id2 + '.web.clip.clip_' + i.toString(), { val: str.val, ack: true });
                              }
                          }
                      }
                      //------------------------------
                      //       Erkennungsrate
                      //------------------------------
                      await this.setObjectNotExistsAsync(id2 + '.score', {
                          type: 'state',
                          common: {
                              type: 'number',
                              read: true,
                              write: false,
                              name: 'detection rate',
                              role: 'value.score',
                              unit: '%',
                              def: 0
                          },
                          native: {},
                      });
                      this.setState(id2 + '.score', { val: Math.round(topscore * 100), ack: true });
                      //------------------------------
                      //      Reset Event States
                      //------------------------------
                      this.setState('event', { val: false, ack: true });
                      this.setState(id1, { val: false, ack: true });
                      this.setState(id2 + '.event', { val: false, ack: true });
                  }
              } catch (error) {
                  this.log.error(error);
              }
          }
      
      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @bolliy ups... sorry. Hatte ich nicht richtig gelesen. Ich teste es erneut. Dank dir.

      EDIT: Es war ein Fehler meinerseits. Durch eine falsche Berechnung in einem Skript hatte er die InfluxDB ausgelastet.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @lars10 Ich bin grad auch dabei eine Logik zu entwerfen. Außerdem hatte ich hier mal eine Dikussion angefangen.

      Es gibt aber tausend Fälle die man beachten muss. Hier im Thread wird ähnliches aufgebaut. Durch einen dynamischen Stromtarif wird die Sache für mich nochmal komplizierter. An deiner Stelle würde ich aber einfach die Batterie sperren, da gibt es verschiedene Optionen. Ideen findest du auch bei EVCC, da diese das auch so machen. Z.B. so:

          setState('sun2000.0.inverter.0.control.battery.forcibleChargeOrDischarge' /* Forcible charge/discharge (0: Stop,1: Charge, 2: Discharge) */, 2);
          setState('sun2000.0.inverter.0.control.battery.forcibleChargeOrDischargeSettingMode' /* Forcible charge/discharge setting mode (0: Duration,1: until SOC) */, 0);
          setState('sun2000.0.inverter.0.control.battery.forcedChargingAndDischargingPeriod' /* Forced charging and discharging period */, 1);
          setState('sun2000.0.inverter.0.control.battery.forcibleDischargePower' /* Forcible discharge power */, 0);
      
      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @bolliy die Idee ist sicherlich nicht verkehrt, ist aber bestimmt nur schwer umsetzbar. In den Monaten mit wenig Sonne wird doch keiner drauf verzichten wollen seinen Speicher zu laden. Kommt noch ein eine Wallbox hinzu wird nichts übrig bleiben.

      Ich finde neben den bestehenden Wetterdaten und deren Abweichungen müsste unbedingt ein Hausprofil erstellt werden. Ähnlich wie es Tools beim Planen einer PV Anlage anbieten. Sodass hier definiert wird, welche Verbraucher existieren und ggfs. priosiert werden müssten.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      Kleine Info, die Firmware V200R022C10SPC200 für den Sdongle macht Probleme. Dieser friert irgendwann ein und ist dann offline. Im PV Forum ist es auch Thema.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @cyberbob einfach einen Trigger auf das Objekt vom Ladepunkt setzen (true/false) und entsprechend die Batterie dann entsperren/sperren. Das Thema hatte ich bereits hier oder auch auf Github angerissen, da dies auch gerne so EVCC macht. Dort wird auch beschrieben welche Objekte du ansteuern musst. Ich empfehle aber erstmal das alles zu simulieren und das Verhalten zu prüfen.

      EDIT:
      https://github.com/bolliy/ioBroker.sun2000/wiki/Battery-control
      https://github.com/bolliy/ioBroker.sun2000/wiki/Erzwungenes-Laden-und-Entladen-der-Batterie-(Force-charge-discharge-battery)

      Gruß
      Steffen

      posted in Tester
      D
      dragst3r

    Latest posts made by dragst3r

    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @chenda wieviele SDongle im Einsatz? Ich habe auch 2 WR mit einem Dongle in Master/Slave Kaskade, daher auch nur eine IP. Wenn du zwei haben solltest, müssten die Dongles auch jeweils eine eigene IP haben.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @bolliy das weiß ich doch 🙂 man sollte aber die Fehlersuche mal eingrenzen. In FusionSolar gibt es ja auch so einige Parameter und viele Setups, wie du weißt 😄

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      Ich würde auch mal in FusionSolar schauen, ob dort die Werte angenommen worden sind und ggfs. erst mal dort die gewünschten Einstellungen setzen, bevor der Adapter seine Arbeit machen soll.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @baerengraben chargingCutoffCapacity war glaube ich, dass er dann AC laden deaktiviert, wenn er den angegebenen Wert erreicht hat. Bin mir aber nicht mehr nicht sicher.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @cyberbob einfach einen Trigger auf das Objekt vom Ladepunkt setzen (true/false) und entsprechend die Batterie dann entsperren/sperren. Das Thema hatte ich bereits hier oder auch auf Github angerissen, da dies auch gerne so EVCC macht. Dort wird auch beschrieben welche Objekte du ansteuern musst. Ich empfehle aber erstmal das alles zu simulieren und das Verhalten zu prüfen.

      EDIT:
      https://github.com/bolliy/ioBroker.sun2000/wiki/Battery-control
      https://github.com/bolliy/ioBroker.sun2000/wiki/Erzwungenes-Laden-und-Entladen-der-Batterie-(Force-charge-discharge-battery)

      Gruß
      Steffen

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      Ich habe nun (denke seit letzter Version) wieder einige Warnungen im Log, wenn der WR2 offline ist.

      
      sun2000.0
      2025-02-06 06:34:18.098	warn	Error while reading from 192.168.2.16 [Reg: 32000, Len: 11, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:15.993	warn	Error while reading from 192.168.2.16 [Reg: 32064, Len: 2, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:15.988	warn	Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:07.908	warn	Error while reading from 192.168.2.16 [Reg: 32066, Len: 50, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:07.903	warn	Error while reading from 192.168.2.16 [Reg: 32089, Len: 1, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:07.898	warn	Error while reading from 192.168.2.16 [Reg: 32016, Len: 8, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      
      sun2000.0
      2025-02-06 06:34:07.893	warn	Error while reading from 192.168.2.16 [Reg: 32000, Len: 11, modbusID: 2] with: Modbus exception 4: Slave device failure (device reports internal error)
      

      Der Status von sun2000.0.inverter.1.deviceStatus ist hierbei 2. Im Anhang mal der Verlauf. Könnte man dadurch vielleicht die Abfrage anpassen und pausieren?

      Screenshot 06.02.2025 um 06.37.21 AM.png

      VG
      Steffen

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      Kleine Info, die Firmware V200R022C10SPC200 für den Sdongle macht Probleme. Dieser friert irgendwann ein und ist dann offline. Im PV Forum ist es auch Thema.

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      Auch wenn es mittlerweile ein wenig zu viel Offtopic hier ist, gebe ich noch meinen Kommentar ab. Ich habe auch eine Kaskade mit 2 Wechselrichtern. Einen 10KTL und einen 15KTL, gesamt 30kWp Ost/West mit 7kWh Batterie. Ich würde jetzt auch nicht den Vorteil erkennen, beide WR zu trennen. Ich hätte es eher als Nachteil empfunden ein parallel System je WR+Dongle aufzubauen, desweiteren muss der Energiezähler im richtigen Moment mit jedem Dongle kommunzieren. Hierbei kann je nach Abfragezeit natürlich eine falsche Berechnung entstehen und damit eine falsche Überschussrechnung.

      Wie eben schon beschrieben worden ist. Außerdem gibt es gesetztlich je nach Ausgangslage noch teils Rundsteuerempfänger die Pflicht sind, dass eine Anlage vom Netzbetreiber gedrosselt werden kann.

      PS: In evcc wurde das Thema für Huawei Kaskade verändert

      Viele Grüße
      Steffen

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @bolliy konnte keinerlei Probleme feststellen. Jedoch möchte ich nicht die Log vorenthalten, als der Slave WR Offline gegangen ist kam:

      2025-01-09 08:18:19.596 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 2] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:19.607 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 1] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:19.616 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 2] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:19.621 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 38229, Len: 13, modbusID: 1] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:19.627 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32000, Len: 11, modbusID: 2] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:20.006 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 1] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:20.011 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32080, Len: 2, modbusID: 2] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:20.016 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 38229, Len: 13, modbusID: 1] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:18:20.026 - warn: sun2000.0 (333) Error while reading from 192.168.2.16 [Reg: 32000, Len: 11, modbusID: 2] with: Modbus exception 6: Slave device busy (retry request again later)
      2025-01-09 08:19:56.757 - info: sun2000.0 (333) The Inverter with modbus ID 2 switches to Shutdown: fault mode.
      2025-01-09 08:19:56.757 - info: sun2000.0 (333) The inverter with modbus ID 2 is no longer accessible. That is why the logs are minimized.
      

      Mehr aber auch nicht. Unter 17.1 hatte ich nur die Meldung von Register 32000, so meine ich.

      btw: Das Aufwecken meines Speichers durch den Schalter sun2000.0.inverter.0.control.battery.chargeFromGridFunction klappt leider nicht bzw. hat scheinbar noch nie funktioniert. Hast du einen Tipp für mich? Ich möchte ungern AC-laden dauerhaft aktiviert lassen. WR2 ist offline, WR1 ist im standby. Dongle ist Online aber der Speicher bleibt offline.

      Viele Grüße
      Steffen

      posted in Tester
      D
      dragst3r
    • RE: Test Adapter sun2000 v0.1.x - Huawei Wechselrichter

      @bolliy ok... ich werde es auch mal versuchen.

      posted in Tester
      D
      dragst3r
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo