Navigation

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

    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

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

    alk

    @alk

    10
    Reputation
    28
    Profile views
    55
    Posts
    1
    Followers
    0
    Following
    Joined Last Online
    Location Munich

    alk Follow
    Starter

    Best posts made by alk

    • Synology NAS und EATON USV via SNMP Protokoll anbinden

      Anwendungsbeschreibung
      Begrifssklärung
      NAS: Network Attached Storage https://de.wikipedia.org/wiki/Network_Attached_Storage
      USV: Unterbrechungsfreie Stromversorgung https://de.wikipedia.org/wiki/Unterbrechungsfreie_Stromversorgung
      USP: Uninterruptible power supply https://en.wikipedia.org/wiki/Uninterruptible_power_supply

      Komponenten

      iobroker RasPi 4
      (keine SD-Karte, kein USB Stick)

      • Plattform linux, Betriebssystem linux

        • Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
        • OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
        • ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
        • Node.js v18.15.0, NPM 9.5.0
        • USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
        • log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
        • Aktive Instanzen 19
      • Instanzen

        • Admin v6.3.5
        • snmp.0 v2.4.5

      NAS Synology

      • modelName: DS214
      • version: DSM 6.2-25556
      • Volume 1: Storage Pool 1
        • Drive 1: WD30EFRX
        • Drive 2: ST3000VN007

      USV

      • EATON
        • Ellipse ECO 650, Battery chemistry PbAc
        • Anbindung der USV an das NAS, USB B --> USB A Kabel (NAS)

      Ziel
      Ich möchte das NAS mit einer USV vor Stromausfällen sichern und auch die verwendete iobroker hardware mit einbinden. Sodass auch der raspberry pi bei einem Stromausfall in einen sicheren Betrieb schaltet.
      Das NAS habe ich schon einige Jahre im Betrieb. Bisher hat eine Festplatte im Raid frühzeitig IO Fehler gemeldet. Diese habe ich dann getauscht, seitdem keine weiteren Problem mehr. Außerdem kann man über die snmp.0 Instanz noch weitere Daten des NAS und der USV lesen um den Zustand beider Geräte aufzuzeichnen.

      Priorität:

      1. das NAS in einen sicheren Zustand schalten
      2. den RasPi in einen sicheren Zustand schalten
      3. alle weiteren Daten aufzeichnen.

      Kurzbeschreibung der Lösung

      Priorität1:
      Die USV ist per USB Kabel mit dem NAS verbunden, meldet jegliche Stromschwankungen und bietet einen Puffer für einen Stromausfall. Damit ist erstmal sichergestellt, dass sich das NAS absichert. Komplexität reduzieren: Das NAS regaiert mit dem USV ohne jegliche andere Komponente, wie z.B. Netzwerkserver, Router, Switch, DNS etc.

      Priorität2:
      Die USV ist per USB Kabel mit dem NAS verbunden und das NAS liefert über das Netzwerk per SNMP Daten über den USV Zustand. Bei einem Event über die snmp.0 Instanz schaltet der RasPi in einen sicheren Zustand oder fährt sich komplett herunter. Diese Daten der USV mögen bei einem Stromausfall nicht mehr verfügbar sein, weil das Netzwerk eventuell nicht mehr korrekt funktioniert.

      Priorität3:
      Das NAS ist im Netzwerk und liefert per SNMP Daten über den eigenen Zustand.
      Zusätzlich: Lese ich die Daten per iobroker SNMP Instanz und Protokoll vom NAS. Weitere Daten können auch gelesen werden, z.b. Systemzustand, Raiddaten, Diskdaten, Temperaturen, Fan Status etc. Diese zusätzlichen Daten mögen bei einem Stromausfall nicht mehr verfügbar sein, weil das Netzwerk eventuell nicht mehr korrekt funktioniert.

      Warum denn nicht das NUT nutzen?
      Ich vertraue nicht darauf, dass das Heim-Netzwerk bei einem Stromausfall noch richtig funktioniert. Eventuell führt das Problem des Stromausfalls noch weiter und mein DSL Router funktioniert nicht richtig.

      Quellen
      Characteristics of the ups information: https://mibs.observium.org/mib/SYNOLOGY-UPS-MIB/
      iobroker - Temperaturen von Synology auslesen https://www.synology-forum.de/threads/iobroker-temperaturen-von-synology-auslesen.117282/

      Warum habe ich die EATON Ellipse ECO 650 gewählt?
      War auf der Kompatibilitätsliste des NAS und hatte mir einen einfachen Eindruck gemacht. Auf einem Windows PC erscheint die USV als Batterie, wie bei einem Laptop. Auf dem Synology NAS war die Anbindung leicht und einfach, siehe hier unten.

      Verbindung
      An der Synology DS214 einen USB A Anschluß wählen und Kabel einstecken. Kabel mit USB A am USV einstecken. Das USV wurde gleich vom NAS erkannt, siehe "Benachrichtigungen".

      Konfiguration an der USV

      • keine

      Konfiguration des NAS Synology DS214

      Systemsteuerung

      • Terminal & SNMP
        • TAB: SNMP
          • ON:SNMP-Service aktivieren
            • ON:SNMPv1, SNMPv2 Dienst
              • Community: public
            • OFF:SNMPv3 Dienst

      Hilfe:
      Link1: https://global.synologydownload.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
      Link2: https://kb.synology.com/en-us/DSM/help/DSM/AdminCenter/system_snmp?version=7

      Systemsteuerung

      • Hardware und Energie
        • TAB: USV
          • ON:USV-Unterstützung aktivieren
            • ON: Zeit, ehe die DiskStation in den Sicheren Modus wechselt
              • 10 Minuten
            • OFF: USV herunterfahren, wenn das System in den Sicheren Modus geht.
            • OFF: Netzwerk-USV-Server aktivieren

      Button: Geräteinformationen --> erkannte USV wird angezeigt

      Konfiguration des iobroker SNMP Adapter (snmp.0)

      • Im iobroker unter "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel), Einträge der TAB's von rechts nach links:

      OPTIONEN

      • Paketgröße: 20
        • OFF: Kompatibilitätsmodus - Verwenden Sie die IP-Adresse für Zustands-IDs
        • OFF: Rohzustände hinzufügen
        • OFF: Typzustände hinzufügen

      AUTORISIERUNG (SNMP V3)

      • kein Eintrag

      GERÄTE

      | Name         | IP-Adresse      |  IPv6  |  OID-Gruppe  |   SNMP-Version  | Community   |  Zeitüberschreitung  |   erneut versuchen  |  Abfrage |
      | YourNASName  | YourNasIPAdress |  OFF   |   nas        |    SNMP v1      | public      |  5                   |   5                 | 30       |
      
      

      OID-SETS

      
      | aktiv         | OID-Gruppe      |  OID-Name           |  OID                        |   Format  | beschreibbar   | Optional  |  
      | ON            | nas             |  ups.upsDeviceModel |  .1.3.6.1.4.1.6574.4.1.1.0  |   Text    | OFF            | OFF       |  
      
      

      Format

      • Text = 0
      • Number = 1

      Hilfe
      Link1: [https://github.com/iobroker-community-adapters/ioBroker.snmp/blob/master/docs/de/snmp.md]
      Link2: https://www.smarthome-tricks.de/software-iobroker/iobroker-snmp-adapter/

      Konfiguration über eine Datei in die snmp.0 Instanz laden
      Meine lokale static NAS IP Adresse: 192.168.178.7
      --> Bitte ganz am Ende des JSON files noch an Eure IP anpassen!
      --> devIpAddr": "192.168.178.7",
      Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden 😉

      • Instanzen
        • snmp.0
          • Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
            • Klick: oben rechts den markierten Upload Knopf.
              • Dann die JSON Datei auswählen

      instanzen_snmp0_Settings.PNG

      JSON Datei meiner UPS Konfiguration

      {
        "oids": [
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDeviceModel",
            "oidOid": ".1.3.6.1.4.1.6574.4.1.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDeviceManufacturer",
            "oidOid": ".1.3.6.1.4.1.6574.4.1.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDeviceSerial",
            "oidOid": ".1.3.6.1.4.1.6574.4.1.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDeviceType",
            "oidOid": ".1.3.6.1.4.1.6574.4.1.4.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoStatus",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoModel",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.5.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoMfrName",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.6.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoSerial",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.7.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoVendorID",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.8.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoProductID",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.9.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoFirmwareName",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.10.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoLoadValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.12.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoDelayStart",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.14.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoDelayShutdown",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.14.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoTimerStart",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.15.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoTimerShutdown",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.15.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoPowerValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.20.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInfoBeeperStatus",
            "oidOid": ".1.3.6.1.4.1.6574.4.2.22.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsBatteryChargeValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.3.1.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsBatteryChargeLow",
            "oidOid": ".1.3.6.1.4.1.6574.4.3.1.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsBatteryRuntimeValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.3.6.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsBatteryType",
            "oidOid": ".1.3.6.1.4.1.6574.4.3.12.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInputTransferLow",
            "oidOid": ".1.3.6.1.4.1.6574.4.4.2.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsInputTransferHigh",
            "oidOid": ".1.3.6.1.4.1.6574.4.4.2.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsOutputVoltageValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.5.1.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsOutputVoltageNominal",
            "oidOid": ".1.3.6.1.4.1.6574.4.5.1.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsOutputFrequencyValue",
            "oidOid": ".1.3.6.1.4.1.6574.4.5.2.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      	
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverName",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverVersion",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverVersionData",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverVersionInternal",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.4.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverPollInterval",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.5.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
      
      	    {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverPort",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.6.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "ups.upsDriverPollFrequency",
            "oidOid": ".1.3.6.1.4.1.6574.4.7.7.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          }
        ],
        "devs": [
          {
            "devAct": true,
            "devName": "ortler",
            "devIpAddr": "192.168.178.7",
            "devIp6": false,
            "devOidGroup": "nas",
            "devSnmpVers": "1",
            "devAuthId": "",
            "devTimeout": "5",
            "devRetryIntvl": "5",
            "devPollIntvl": "30"
          }
        ],
        "cfgVers": "2.0",
        "optChunkSize": "20",
        "optUseName": false,
        "optRawStates": false,
        "optTypeStates": false
      }
      
      

      Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
      (Ausschnitt aus dem Objektbaum)

      • snmp
        • 0
          • MeinNasName
            • ups
              • upsDeviceManufacturer
              • etc...
                objekte_snmp0_upsDeviceManufcturer.PNG

      Fehlerbehebung
      Eventuell haben unterschiedliche NAS System unterschiedliche SNMP Konfigurationen. Ich kann hier nur meine Konfiguration für ein DS214 anbieten, die funktioniert. Habt Ihr andere Geräte im Einsatz? Dann einfach als Kommentar anhängen. Damit ist dann auch Anderen geholfen. Gerne auch als JSON Konfiguration zum laden 😉

      Sollten im iobroker unter "Protokolle" beim starten des snmp.0 Adapter Fehler auftauchen?

      • Dann im iobroker untern "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel)
        • "OID-SETS" den Schalter am Anfang der entsprechende Zeile abschalten (OFF).
          • Damit wird die fehlerhafte OID ausgeschaltet.

      z.B.

      | aktiv          | OID-Gruppe      |  OID-Name           |  OID                        |   Format  | beschreibbar   | Optional  |  
      | OFF            | nas             |  ups.upsDeviceModel |  .1.3.6.1.4.1.6574.4.1.1.0  |   Text    | OFF            | OFF       |  
      
      

      Jetzt den Adapter wieder starten und schnell das "Protokoll" beobachten.
      Meist hat man aber irgendwo einen Punkt oder ein "0" vergessen 😉

      --> Dast ist ein Mehrteiler und es folgen noch weitere Informationen.

      Hilfsmittel snmpwalk
      Hier kann mal alle verfügbaren OID's und Werte eines Gerätes auslesen. Dafür wird die Stamm OID eingegeben, hier ".1.3.6.1.4.1.6574.4"
      Wichtig: der Punkt gehört vor die .1.3.6.1.4.1.6574.4

      Install snmpwalk
      Console

      sudo apt-get install snmp
      

      Use snmpwalk
      Meine lokale static NAS IP Adresse: 192.168.178.7

      Console

      snmpwalk -v 2c -c public 192.168.178.7 .1.3.6.1.4.1.6574.4
      iso.3.6.1.4.1.6574.4.1.1.0 = STRING: "Ellipse ECO 650"
      iso.3.6.1.4.1.6574.4.1.2.0 = STRING: "EATON"
      iso.3.6.1.4.1.6574.4.1.3.0 = STRING: "000000000"
      iso.3.6.1.4.1.6574.4.1.4.0 = STRING: "ups"
      iso.3.6.1.4.1.6574.4.2.1.0 = STRING: "OL CHRG"
      iso.3.6.1.4.1.6574.4.2.5.0 = STRING: "Ellipse ECO 650"
      iso.3.6.1.4.1.6574.4.2.6.1.0 = STRING: "EATON"
      iso.3.6.1.4.1.6574.4.2.7.0 = STRING: "000000000"
      iso.3.6.1.4.1.6574.4.2.8.0 = STRING: "0463"
      iso.3.6.1.4.1.6574.4.2.9.0 = STRING: "ffff"
      iso.3.6.1.4.1.6574.4.2.10.1.0 = STRING: "02"
      iso.3.6.1.4.1.6574.4.2.12.1.0 = Opaque: Float: 10.000000
      iso.3.6.1.4.1.6574.4.2.14.1.0 = INTEGER: 30
      iso.3.6.1.4.1.6574.4.2.14.3.0 = INTEGER: 20
      iso.3.6.1.4.1.6574.4.2.15.1.0 = INTEGER: -1
      iso.3.6.1.4.1.6574.4.2.15.3.0 = INTEGER: -1
      iso.3.6.1.4.1.6574.4.2.20.2.0 = Opaque: Float: 650.000000
      iso.3.6.1.4.1.6574.4.2.22.0 = STRING: "enabled"
      iso.3.6.1.4.1.6574.4.3.1.1.0 = Opaque: Float: 100.000000
      iso.3.6.1.4.1.6574.4.3.1.2.0 = Opaque: Float: 20.000000
      iso.3.6.1.4.1.6574.4.3.6.1.0 = INTEGER: 2062
      iso.3.6.1.4.1.6574.4.3.12.0 = STRING: "PbAc"
      iso.3.6.1.4.1.6574.4.4.2.2.0 = Opaque: Float: 184.000000
      iso.3.6.1.4.1.6574.4.4.2.3.0 = Opaque: Float: 264.000000
      iso.3.6.1.4.1.6574.4.5.1.1.0 = Opaque: Float: 230.000000
      iso.3.6.1.4.1.6574.4.5.1.2.0 = Opaque: Float: 230.000000
      iso.3.6.1.4.1.6574.4.5.2.2.0 = Opaque: Float: 50.000000
      iso.3.6.1.4.1.6574.4.7.1.0 = STRING: "usbhid-ups"
      iso.3.6.1.4.1.6574.4.7.2.0 = STRING: "DSM6-2-25510-201118"
      iso.3.6.1.4.1.6574.4.7.3.0 = STRING: "MGE HID 1.33"
      iso.3.6.1.4.1.6574.4.7.4.0 = STRING: "0.38"
      iso.3.6.1.4.1.6574.4.7.5.0 = INTEGER: 5
      iso.3.6.1.4.1.6574.4.7.6.0 = STRING: "auto"
      iso.3.6.1.4.1.6574.4.7.7.0 = INTEGER: 30
      
      posted in Praktische Anwendungen (Showcase)
      alk
      alk
    • Mit E3DC S10E und KEBA P30 C-Serie PV optimiert EV laden

      E3DC S10E und KEBA P30 C-Serie anbinden

      Anwendungsbeschreibung
      Begrifssklärung
      E3DC S10: Integrierte PV und Speicherlösung https://de.wikipedia.org/wiki/Hager_Group
      Wallbox (WB) KEBA P30 C-Series https://de.wikipedia.org/wiki/KEBA_Group

      Ziel
      Ich möchte unser Elektroauto ausschließlich mit Sonnenstrom des E3DC s10e AI 6.5 laden. Unser Elektroauto (EV:Electric Vehicle) steht in der Garage und wird an die KEBA P30 C-Serie (WB:Wallbox) angeschlossen. Bei wenig PV Leistung soll das Auto warten und gesteuert zu laden beginnen, wenn genügend PV Leistung zur Verfügung steht.

      Ich verwende hier nicht die E3DC Wallbox.

      Das Ledeverhalten ergibt sich dann wie folgt:
      ladeverhalten1.PNG

      • rot: Ladeleistung des Elektroautos (EV), Y-Skala rechts.
      • grün: Bezug und Einspeisung ins öffentliche Netz (Grid), Y-Skala links.
      • blau: Ladeleistung der E3DC Batterie. Entladen ist deaktiviert!

      Am schwarzen Punk an der X-Achse beginnt das EV zu laden. Hier wurde die minimale verfügbare EV-Ladeleistung von ~4kW überschritten.
      Wenn das EV die verfügbare Leistung nicht abruft, schnappt sich die E3DC Batterie etwas (blaue Linie).
      Sobald mehr ins Grid (grüne Linie) eingespeist wird erhält das EV die Ladeleistung und die rote Linie geht hoch, grün wechselt um die Nulllinie.
      Für eine wirklich gute Datenanalyse fehlen noch weitere Daten. Für einen kleinen Blick in die Lösung sollte das erstmal reichen 😉

      Komponenten
      Systemschaltbild
      systemschaltbild_e3dc.PNG

      • HAK : Haus Anschluss Kasten
      • E3DC S10E : EnergieSpeicherSystem
      • KEBA P30 C-Series : WB : Wallbox
      • EV : Car : Elektroauto
      • ioboker: RasPi 4

      In der Konfiguration mit einem E3DC System wird der Hausanschluß über das E3DC System geschleift. Hier findet auch die Notstromversorgung statt und es wird die Leistung gemessen:

      • PV Leistung der Sonne
      • BAT laden oder entladen
      • Hausverbrauch. In diesem Fall zeigt das E3DC System den Hausverbrauch + Wallboxverbrauch als Summe an.
      • GRID Einspeisung oder Bezug

      Die Leistungsmessung im E3DC S10E verwenden wir nun um das Elektroauto ausschließlich über Sonnenstrom zu laden, hier verwenden wir GRID (Einspeisen oder Bezug) und BAT (laden oder entladen).

      Noch ein paar Worte zur Wallbox
      Es gibt meines Erachtens folgende Typen:

      1. ohne Steuerung mit 1Phase oder 3Phasen bis 11kW AC Ladeleistung: Liegt dann die WB im Bereich ~500EUR.
      2. mit Steuerung und Ethernet Kommunikationsschnittstelle mit 1Phase oder 3Phasen bis 22kW AC Ladeleistung: Liegt dann die WB im Bereich ~1200EUR.
      3. Mit noch mehr Features, z.B. 1phasiges und 3phasiges umschalten: Liegt dann die WB im Bereich ~1800EUR.

      Wichtig: Die Wallbox regelt nicht die Ladeleistung des EV. In der WB gibt es nur einen Schütz, der die WB mit dem EV verbindet. Die Ladeleistung wird vom EV Inverter bestimmt und die Wallbox teilt die Einstellung über eine Datenschnittstelle dem EV mit. Alles über das Ladekabel. Deswegen kosten die WB mit diesem Feature etwas mehr, siehe oben Punkt 2+3.

      Warum 1Phasiger oder 3Phasiger Anschluß?
      Das hängt damit zusammen, wann das EV zu laden beginnt. Denn bei einem 1Phasigen Ladekabel oder Ladeanschluß beginnt das EV bei ~1.5kW bereits zu laden. Die obere Grenze bei 1Phasigem Anschluß liegt bei ~4.6kW. Bei einem 3Phasigem Ladekabel oder Ladeanschluß wird ~4.1kW Ladeleistung benötigt, damit das EV zu laden beginnt. Die obere Grenze bei 3Phasigem Anschluß liegt bei ~22kW.

      Dazu habe ich mal eine Tabelle erstellt und exemplarisch für PV Anlagen von 3-9kWp.
      Deswegen gibt es bereist Lösung für die Phasenumschaltung, wenn PV optimiert und mit kleinen Leistungen begonnen werden soll. Teils extern, teils intern in der Wallbox.

      | PV Anlage [kWp] |  PV optimiert laden | max EV laden 22kW |
      |  3              |  1Phase  ab 1.5kW   |  3Phase ab 4.1kW  |
      |  5              |  1Phase  ab 1.5kW   |  3Phase ab 4.1kW  |
      |  7              |  1Phase  ab 1.5kW   |  3Phase ab 4.1kW  |
      |  9              |  3Phase ab 4.1kW    |  3Phase ab 4.1kW  |
      

      Dann sollte die Wallbox eine offene Programmierschnittstelle, bestenfalls UDP/TCP basiert per Ethernet bieten. Dadrüber läuft dann oft ein Modbus Protokoll. Und perfekt ist es dann noch, wenn es einen iobroker Adapter gibt.

      iobroker RasPi 4
      (keine SD-Karte, kein USB Stick)

      • Plattform linux, Betriebssystem linux

        • Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
        • OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
        • ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
        • Node.js v18.15.0, NPM 9.5.0
        • USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
        • log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
        • Aktive Instanzen 19
      • Instanzen

        • Admin v6.3.5
        • e3dc-rscp.0 v1.1.1
        • kecontact.0 v1.5.2

      E3DC s10e AI 6.5

      • VERSION_MAIN: MAIN HW06 2.044

      KEBA P30 C-Serie

      • Product-ID: KC-P30
      • Software P30 v 3.10.27

      Kurzbeschreibung der Lösung

      Block Diagram Adapter
      iobroker ESS and WB.png

      1. Das E3DC s10e AI 6.5 (e3dc-rscp.0) wie auch die KEBA P30 C-Serie (kecontact.0) sind über entsprechende Adapter in den iobroker integriert. Beide Adapter sollten im ersten Schritt einwandfrei funktionieren.
      2. Dann legen wir benötigte Alias (alias.0) an. Das erleichtert die Konfiguration. Über den Alias erhält die Wallbox Informationen, wie viel Leistung in das öffentliche Netz eingespeist wird. Außerdem weiß die Wallbox mit welcher Leistung die Batterie geladen wird.
      3. Im dritten Schritt wird dann die Steuerung über die PV Leistung aktiviert. Und schon kann die Wallbox KEBA P30 C-Serie PV optimiert das EV laden.
      4. Mit einem Datenpunkt kann jetzt zwischen EV PV optimiert laden ( kecontact.0.automatic.photovoltaics = true) und volle EV Ladeleistung umgeschaltet werden (kecontact.0.automatic.photovoltaics = false).

      Schritt 1: E3DC und Wallbox KEBA P30 konfigurieren

      Konfiguration E3DC s10e AI 6.5
      Voraussetzung ist, dass das E3DC im Netwerk angeschlossen und erreichbar ist.
      Du benötigst die IP Adresse in Deinem Netzwerk. Bei mir ist das 192.168.178.42

      • E3/DC IP-Adresse
        • e3dc_ip: "YourE3DCiPAddress"

      E3DC Portal
      Erreichbar über folgenden Link: Portal: https://s10.e3dc.com/s10/
      Du benötigst typisch Deine Email adresse und ein Passwort für die Anmeldung. Das Portal wird vom Istallateur bei der Inbetriebnahme angelegt. Deswegen gehe ich hier nicht weitere darauf ein.

      • E3/DC Portal Benutzername

        • portal_user: "spock@enterprise.com"
      • E3/DC Portal Passwort

        • portal_password: "EnterYourPortalPassword",

      RSCP am E3DC S10 Gerät aktivieren
      Diese Funktion muss zusätzlich am Display des E3DC S10E aktiviert werden. War bei mir ausgeschaltet.

      • Startseite
        • Hauptmenü
          • Personalisieren
            • Benutzerprofil
              • (scroll down) RSCP-Password eingeben

      Dabei vergibst Du ein eigenes Password, das unter folgendem Begriff zu finden ist:

      • rscp_password : "EnterYourRscpPassword"

      Außerdem kann man hier den Port eingeben, typisch ist:

      • E3/DC Port
        • e3dc_port : "5033"

      Konfiguration des iobroker e3dc-rscp Adapter (e3dc-rscp.0)
      Wir stellen den e3dc-rscp.0 Adapter so ein, dass Datenpunkte im Objektbaum der Instanz vom Gerät erscheinen. Das kann man manuell eingeben oder über eine JSON Datei laden. Beides wird hier beschrieben:

      • Im iobroker unter "Instanzen" die Konfiguration des e3dc-rscp Adapter öffnen (Schraubenschlüssel):

      TAB EINSTELLUNGEN E3/DC-Verbindung

      |  E3/DC Portal Benutzername |  E3/DC Portal Passwort    |  E3/DC IP-Adresse   |  E3/DC Port |  E3/DC RSCP Passwort   | 
      |  spock@enterprise.com      |  EnterYourPortalPassword  |  YourE3DCiPAddress  |  5033       |  EnterYourRscpPassword | 
      

      TAB EINSTELLUNGEN Zeitintervalle für Senden

      | SET_POWER Wiederholintervall [s] | Tupel-Schreibverzögerung [s] |
      | 10                               | 10                           |
      

      TAB EINSTELLUNGEN Auswahl der E3/DC-Namespaces, für die Daten abgefragt werden

      Ich habe die "Wallbox (WB) nicht aktiviert, denn ich verwende nicht die E3DC-Wallbox, sondern die KEBA P30. Der Adapter würde versuchen die E3DC-Wallbox zu finden und dann Fehler im Protokoll werfen, weil nicht angeschlossen. Deswegen hier unten WB: "query_wb": false!

      • BAT : "query_bat": true
      • EMS : "query_ems": true
      • EP: "query_ep": true
      • PVI : "query_pvi": true
      • SYS : "query_sys": true
      • WB: "query_wb": false
      • DB : "query_db": true

      TAB ABFRAGEINTERVALL Einstellung der Abfrageintervalle
      default, keine Änderung gemacht, siehe e3dc-rscp JSON Konfiguration

      Hilfe:
      readme": "https://github.com/git-kick/ioBroker.e3dc-rscp/blob/master/README.md",

      Konfiguration über eine Datei in die e3dc-rscp.0 Instanz laden

      Wichtig und bitte anpassen
      --> "host": "YourIoBrokerHostName"
      --> "portal_user": "spock@enterprise.com",
      --> "portal_password": "EnterYourPortalPassword",
      --> "e3dc_ip": "YourE3DCiPAddress",
      --> "e3dc_port": 5033,
      --> "rscp_password": "EnterYourRscpPassword",

      Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden 😉

      • Instanze
        • e3dc-rscp.0
          • Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
            • Klick: oben rechts den Upload Knopf.
              • Dann die JSON Datei auswählen

      e3dc-rscp JSON Datei meiner Konfiguration

      {
        "_id": "system.adapter.e3dc-rscp.0",
        "common": {
          "name": "e3dc-rscp",
          "version": "1.1.1",
          "title": "E3/DC RSCP",
          "authors": [
            "Ulrich Kick <iobroker@kick-web.de>"
          ],
          "keywords": [
            "E3/DC",
            "power station",
            "energy",
            "RSCP"
          ],
          "license": "GPL-3.0-only",
          "platform": "Javascript/Node.js",
          "main": "main.js",
          "icon": "e3dc-rscp.png",
          "enabled": true,
          "extIcon": "https://raw.githubusercontent.com/git-kick/ioBroker.e3dc-rscp/master/admin/e3dc-rscp.png",
          "readme": "https://github.com/git-kick/ioBroker.e3dc-rscp/blob/master/README.md",
          "loglevel": "warn",
          "mode": "daemon",
          "type": "energy",
          "compact": true,
          "connectionType": "local",
          "dataSource": "poll",
          "materialize": true,
          "materializeTab": false,
          "dependencies": [
            {
              "js-controller": ">=2.0.0"
            }
          ],
          "installedFrom": "iobroker.e3dc-rscp@1.1.1",
          "installedVersion": "1.1.1",
          "host": "YourIoBrokerHostName"
        },
        "native": {
          "portal_user": "spock@enterprise.com",
          "portal_password": "EnterYourPortalPassword",
          "e3dc_ip": "YourE3DCiPAddress",
          "e3dc_port": 5033,
          "rscp_password": "EnterYourRscpPassword",
          "setpower_interval": 10,
          "send_tuple_delay": 10,
          "query_bat": true,
          "query_ems": true,
          "query_ep": true,
          "query_pvi": true,
          "query_sys": true,
          "query_wb": false,
          "query_db": true,
          "polling_interval_short": 30,
          "polling_interval_medium": 5,
          "polling_interval_long": 12,
          "polling_intervals": [
            {
              "tag": "TAG_EMS_REQ_POWER_PV",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_BAT",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_HOME",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_GRID",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_ADD",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_AUTARKY",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_SELF_CONSUMPTION",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_BAT_SOC",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_COUPLING_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_STORED_ERRORS",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_MODE",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_BALANCED_PHASES",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_INSTALLED_PEAK_POWER",
              "interval": "L"
            },
            {
              "tag": "TAG_EMS_REQ_DERATE_AT_PERCENT_VALUE",
              "interval": "L"
            },
            {
              "tag": "TAG_EMS_REQ_DERATE_AT_POWER_VALUE",
              "interval": "L"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_WB_ALL",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_WB_SOLAR",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_EXT_SRC_AVAILABLE",
              "interval": "L"
            },
            {
              "tag": "TAG_EMS_REQ_STATUS",
              "interval": "S"
            },
            {
              "tag": "TAG_EMS_REQ_USED_CHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_BAT_CHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_DCDC_CHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_USER_CHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_USED_DISCHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_BAT_DISCHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_DCDC_DISCHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_USER_DISCHARGE_LIMIT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_REMAINING_BAT_CHARGE_POWER",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_REMAINING_BAT_DISCHARGE_POWER",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_EMERGENCY_POWER_STATUS",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_BATTERY_TO_CAR_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_BATTERY_BEFORE_CAR_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_GET_IDLE_PERIODS",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_GET_POWER_SETTINGS",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_GET_MANUAL_CHARGE",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_EMERGENCYPOWER_TEST_STATUS",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_GET_SYS_SPECS",
              "interval": "L"
            },
            {
              "tag": "TAG_EMS_REQ_POWER_PV_AC_OUT",
              "interval": "M"
            },
            {
              "tag": "TAG_EMS_REQ_ALIVE",
              "interval": "S"
            },
            {
              "tag": "TAG_EP_REQ_IS_READY_FOR_SWITCH",
              "interval": "M"
            },
            {
              "tag": "TAG_EP_REQ_IS_GRID_CONNECTED",
              "interval": "M"
            },
            {
              "tag": "TAG_EP_REQ_IS_ISLAND_GRID",
              "interval": "M"
            },
            {
              "tag": "TAG_EP_REQ_IS_INVALID_STATE",
              "interval": "M"
            },
            {
              "tag": "TAG_EP_REQ_IS_POSSIBLE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_ON_GRID",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_STATE",
              "interval": "S"
            },
            {
              "tag": "TAG_PVI_REQ_LAST_ERROR",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_TYPE",
              "interval": "L"
            },
            {
              "tag": "TAG_PVI_REQ_VOLTAGE_MONITORING",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_FREQUENCY_UNDER_OVER",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_SYSTEM_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_POWER_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_TEMPERATURE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_TEMPERATURE_COUNT",
              "interval": "L"
            },
            {
              "tag": "TAG_PVI_REQ_MAX_TEMPERATURE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_MIN_TEMPERATURE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_DEVICE_STATE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_SERIAL_NUMBER",
              "interval": "L"
            },
            {
              "tag": "TAG_PVI_REQ_VERSION",
              "interval": "L"
            },
            {
              "tag": "TAG_PVI_REQ_AC_MAX_PHASE_COUNT",
              "interval": "L"
            },
            {
              "tag": "TAG_PVI_REQ_AC_POWER",
              "interval": "S"
            },
            {
              "tag": "TAG_PVI_REQ_AC_VOLTAGE",
              "interval": "S"
            },
            {
              "tag": "TAG_PVI_REQ_AC_CURRENT",
              "interval": "S"
            },
            {
              "tag": "TAG_PVI_REQ_AC_APPARENTPOWER",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_AC_REACTIVEPOWER",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_AC_ENERGY_ALL",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_AC_MAX_APPARENTPOWER",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_AC_ENERGY_GRID_CONSUMPTION",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_DC_POWER",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_DC_VOLTAGE",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_DC_CURRENT",
              "interval": "M"
            },
            {
              "tag": "TAG_PVI_REQ_DC_STRING_ENERGY_ALL",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_MAX_BAT_VOLTAGE",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_MAX_CHARGE_CURRENT",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_EOD_VOLTAGE",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_MAX_DISCHARGE_CURRENT",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_CHARGE_CYCLES",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_TERMINAL_VOLTAGE",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_DEVICE_NAME",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_DCB_COUNT",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_RSOC_REAL",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_ASOC",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_FCC",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_RC",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_MAX_DCB_CELL_TEMPERATURE",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_MIN_DCB_CELL_TEMPERATURE",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_DCB_ALL_CELL_TEMPERATURES",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_DCB_ALL_CELL_VOLTAGES",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_READY_FOR_SHUTDOWN",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_INFO",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_TRAINING_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_USABLE_CAPACITY",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_USABLE_REMAINING_CAPACITY",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_DCB_INFO",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_SPECIFICATION",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_INTERNALS",
              "interval": "L"
            },
            {
              "tag": "TAG_BAT_REQ_TOTAL_USE_TIME",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_TOTAL_DISCHARGE_TIME",
              "interval": "M"
            },
            {
              "tag": "TAG_BAT_REQ_DEVICE_STATE",
              "interval": "M"
            },
            {
              "tag": "TAG_SYS_REQ_IS_SYSTEM_REBOOTING",
              "interval": "S"
            },
            {
              "tag": "TAG_WB_REQ_STATUS",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_ENERGY_ALL",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_ENERGY_SOLAR",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_SOC",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_STATUS",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_ERROR_CODE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_APP_SOFTWARE",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_BOOTLOADER_SOFTWARE",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_HW_VERSION",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_FLASH_VERSION",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_DEVICE_ID",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_DEVICE_STATE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_POWER_L1",
              "interval": "S"
            },
            {
              "tag": "TAG_WB_REQ_PM_POWER_L2",
              "interval": "S"
            },
            {
              "tag": "TAG_WB_REQ_PM_POWER_L3",
              "interval": "S"
            },
            {
              "tag": "TAG_WB_REQ_PM_ACTIVE_PHASES",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_MODE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_ENERGY_L1",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_ENERGY_L2",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_ENERGY_L3",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_DEVICE_ID",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_PM_ERROR_CODE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_DEVICE_STATE",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_FIRMWARE_VERSION",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_DIAG_INFOS",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_DIAG_WARNINGS",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_DIAG_ERRORS",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_DIAG_TEMP_1",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_DIAG_TEMP_2",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PM_MAX_PHASE_POWER",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_DEVICE_NAME",
              "interval": "L"
            },
            {
              "tag": "TAG_WB_REQ_EXTERN_DATA_SUN",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_EXTERN_DATA_NET",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_EXTERN_DATA_ALL",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_EXTERN_DATA_ALG",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PARAM_1",
              "interval": "M"
            },
            {
              "tag": "TAG_WB_REQ_PARAM_2",
              "interval": "M"
            }
          ]
        }
      }
      

      Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
      (Ausschnitt aus dem Objektbaum)

      • e3dc-rscp
        • 0
          • BAT
            • BAT_0
              • DCB_0
                • DCB_CELL_TEMPERATURE
                • DCB_CELL_VOLTAGE
                • ...
                  object_rscp_bat_dcb_cell_voltage.PNG

      Konfiguration KEBA P30 C-Serie
      Voraussetzung ist, dass die P30 im Netwerk angeschlossen und erreichbar ist.
      Bitte kurz prüfen, ob die Website der Wallbox erreichbar ist. Dazu einfach die IP Adress im Browser eingeben. Bei mir ist das 192.168.178.60

      • Wichtig: Bei der KEBA P30 C-Series muß der DIP-Schalter 1.3=ON gestellt werden, wenn man die Ladelseitung beeinflussen möchte.
      • Außerdem ist meine Wallbox auf 11kW gedrosselt: DIP Schalter 1.7=ON.
      • Alle anderen DIP-Schalter = OFF.

      Auf dem PCB ist echt wenig beschriftet, deswegen habe ich mal ein Bild gemacht:
      Hier ein Bild des Schalters: DIP Schalter 1.3=ON, 1.7=ON
      (gelbe Markierung 1.3 = ON)
      Keba Enable UDP.PNG

      Konfiguration des iobroker kecontact Adapter (kecontact.0)

      • Im iobroker unter "Instanzen" die Konfiguration des kecontact.0 Adapter öffnen (Schraubenschlüssel):

      • IP-Adresse der Wallbox : IP-Adresse der KEBA KeContact-Wallbox : 192.168.178.60

      • OFF: passiver Modus

      • 30 : Aktualisierungsintervall (für passiven Modus)

      • ON : lade letzte Ladesitzungen

      • ON : States beinhalten die Lesitung der Wallbox

      Konfiguration über eine Datei in die kecontact.0 Instanz laden
      Wichtig und bitte anpassen
      --> "host": "YourIoBrokerHostName"
      --> "host": "192.168.178.60"

      Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden 😉

      • Instanze
        • kecontact.0
          • Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
            • Klick: oben rechts den Upload Knopf.
              • Dann die JSON Datei auswählen

      Hilfe:
      readme": "https://github.com/iobroker-community-adapters/ioBroker.kecontact/blob/master/README.md",

      kecontact.0 JSON Datei meiner Konfiguration

      {
        "_id": "system.adapter.kecontact.0",
        "common": {
          "name": "kecontact",
          "version": "1.5.2",
          "title": "KEBA KeContact Wallbox",
          "authors": [
            "UncleSamSwiss <samuel.weibel@gmail.com>",
            "Volker Sengler <git@sengler.de>"
          ],
          "license": "Apache-2.0",
          "platform": "Javascript/Node.js",
          "mode": "daemon",
          "messagebox": true,
          "materialize": true,
          "readme": "https://github.com/iobroker-community-adapters/ioBroker.kecontact/blob/master/README.md",
          "loglevel": "info",
          "type": "hardware",
          "connectionType": "local",
          "compact": true,
          "dataSource": "poll",
          "keywords": [
            "KeContact",
            "P30",
            "P20",
            "BMW",
            "KEBA",
            "wallbox",
            "emobility",
            "e-mobility"
          ],
          "icon": "kecontact.png",
          "extIcon": "https://raw.githubusercontent.com/iobroker-community-adapters/ioBroker.kecontact/master/admin/kecontact.png",
          "plugins": {
            "sentry": {
              "dsn": "https://01d409e4ecea470485101a0f53720ee5@sentry.iobroker.net/139"
            }
          },
          "installedFrom": "iobroker.kecontact@1.5.2",
          "installedVersion": "1.5.2",
          "enabled": true,
          "host": "YourIoBrokerHostName",
          "logLevel": "info",
          "supportCustoms": false,
          "dependencies": [
            {
              "js-controller": ">=2.0.0"
            }
          ]
        },
        "native": {
          "host": "192.168.178.60",
          "passiveMode": false,
          "pollInterval": 30,
          "loadChargingSessions": true,
          "stateRegard": "alias.0.Energy.GRID_0",
          "stateSurplus": "",
          "statesIncludeWallbox": true,
          "stateBatteryCharging": "alias.0.Energy.BAT_0",
          "stateBatteryDischarging": "",
          "useX1forAutomatic": false,
          "delta": 500,
          "minAmperage": 6000,
          "addPower": 0,
          "underusage": 500,
          "minTime": 300,
          "regardTime": 300,
          "maxPower": 0,
          "stateEnergyMeter1": "",
          "stateEnergyMeter2": "",
          "stateEnergyMeter3": "",
          "wallboxNotIncluded": false
        }
      }
      

      Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
      (Ausschnitt aus dem Objektbaum)

      • kecontact
        • 0
          • DIP-Sw1
          • ...

      Schritt 1: Ziel erreicht, wenn:

      • Instanze :e3dc-rscp.0 wird grün angezeigt
      • Instanze : kecontact.0 wird grün angezeigt

      Schritt 2: Alias für die Datenpunkte in der Instanz e3dc-rscp.0 anlegen
      Jetzt legen wir einen Verzeichnisbaum für zwei benötigt Alias an.

      1. Bitte im iobroker Objekte alias und 0 wählen (gelb markiert).
      2. Dann das "+" im Menü oben auswählen (rot markiert).
      3. im Pop-up Fenster wählen und eingeben: Typ aus DropDown liste = "Verzeichnis", Name = "Energy"

      object_alias_0_verzeichnis.PNG

      Jetzt legen wir zwei Alias im Verzeichnis "Energy" aus der e3dc-rscp Instanz an.

      1. alias.0.Energy.GRID_0 = e3dc-rscp.0.EMS.POWER_GRID
        Der Wert POWER_GRID hat die Unit "Watt" und ist positiv (+), wenn Leistung aus dem Netz (Grid) entnommen wird. Und der Wert ist negativ (-) , wenn Leistung in des öffentliche Netz eingespeist wird. Demnach wird Entnahme und Einspeisung aus dem öffentlichem Netz im gleichen Datenpunkt (DP) gespeichert. Der Alias sollte dann so aussehen:
        alias.0_grid_0.PNG

      2. alias.0.Energy.BAT_0 = e3dc-rscp.0.EMS.POWER_BAT
        Der Wert POWER_BAT hat die Unit "Watt" und ist positiv (+), wenn Leistung in der Battery des E3DC gespeichert wird. Und der Wert ist negativ (-), wenn Leistung entnommen wird, um diese im Haus/EV zu verbrauchen. Der Alias sollte dann so aussehen:
        alias.0_bat_0.PNG

      (Ausschnitt aus dem Objektbaum)

      • alias
        • 0
          • Energy
            • BAT_0
            • GRID_0
              alias.0_all.PNG

      Hier kann man schon die Werte aus der Instanz e3dc-rscp erkennen (rechts gelb markiert). Natürlich kann man sich so mehrere Alias anlegen 😉

      Schritt 2: Ziel erreicht, wenn:

      • Instanz : alias.0.Energy.BAT_0 plausible Werte anzeigt. In dem Screenshot hier oben werden gerade 57.0 Watt in der E3DC Batterie gespeichert.
      • Instanz : alias.0.Energy.GRID_0 plausible Werte anzeigt. In dem Screenshot hier oben werden gerade 3.0 Watt aus dem öffentlichen Netz entnommen.

      Schritt 3: Jetzt teilen wir dem Wallbox Adapter kecontact.0 die beiden Alias mit
      Im iobroker unter "Instanzen" die Konfiguration des kecontact.0 Adapter öffnen (Schraubenschlüssel):

      Dies hatten wir weiter oben schon eingetragen -->

      • IP-Adresse der Wallbox : IP-Adresse der KEBA KeContact-Wallbox : 192.168.178.60
      • OFF: passiver Modus
      • 30 : Aktualisierungsintervall (für passiven Modus)
      • ON : lade letzte Ladesitzungen
      • ON : States beinhalten die Lesitung der Wallbox

      Dies muss noch eingetragen werden -->

      • Name des States für Netzbezug : alias.0.Energy.GRID_0
      • Name des States für aktuelle Leistungsaufnahme des Batterieseichers: alias.0.Energy.BAT_0

      Die beiden Alias werden hier eingetragen (gelb markiert):
      instanz_kecontact.0.PNG

      Schritt 3: Ziel erreicht, wenn:

      • Instanze : kecontact.0 weiterhin grün angezeigt
      • Instanze :e3dc-rscp.0 wird grün angezeigt

      Sollten dann so aussehen:
      instanz_green.PNG

      Schritt 4: PV optimiertes laden des EV aktivieren
      kecontact.0.automatic.photovoltaics = true
      object_auto_true.PNG

      Hat es bei euch funktioniert? Dann schreibt doch ein paar Zeilen zu Eurer Lösung, Danke.

      posted in Praktische Anwendungen (Showcase)
      alk
      alk
    • RE: Wemos mit Tasmota Deepsleep

      @flexer super, das hört sich gut an.

      Der DeepSleepTimer für eine Stunde wäre dann:
      t=60s*60s=3600s

      Du gibts in der TASMOTA Console folgendes Kommando ein:

      Backlog TelePeriod 10; DeepSleepTime 3600;
      

      --> So sendet TASMOTA nach 10sec, nach dem Aufwachen, die MQTT Informationen an iobroker, schläft wieder ein und wacht all 3600sec = 1Stunde auf.

      posted in Microcontroller
      alk
      alk
    • RE: Keba kecontact - von Überschussladen auf Laden stellen?

      @stefan-falt ich beziehe mich auf diesen post --> https://forum.iobroker.net/topic/65668/mit-e3dc-s10e-und-keba-p30-c-serie-pv-optimiert-ev-laden/2

      Und vereinfacht brauchst Du folgenden Adapter / Instanz für die KEBA P30:

      • Instanzen
        • kecontact.0 v1.5.2

      Dort gibt es einen Datenpunkt

      • kecontact.0.automatic.photovoltaics = true|false
        • Der Wert false schaltet auf volle Ladeleistung (Grid)
        • Der Wert true schaltet auf PV optimierte Ladung (Sun)

      Hat Dir die Info geholfen?

      LG
      alk

      posted in Automatisierung
      alk
      alk
    • Synology NAS Systeminformationen via SNMP Protokoll auslesen

      Anwendungsbeschreibung
      Begrifssklärung
      NAS: Network Attached Storage https://de.wikipedia.org/wiki/Network_Attached_Storage

      Komponenten

      iobroker RasPi 4
      (keine SD-Karte, kein USB Stick)

      • Plattform linux, Betriebssystem linux

        • Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
        • OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
        • ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
        • Node.js v18.15.0, NPM 9.5.0
        • USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
        • log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
        • Aktive Instanzen 19
      • Instanzen

        • Admin v6.3.5
        • snmp.0 v2.4.5

      NAS Synology

      • modelName: DS214
      • version: DSM 6.2-25556
      • Volume 1: Storage Pool 1
        • Drive 1: WD30EFRX
        • Drive 2: ST3000VN007

      Ziel
      Ich möchte Informationen des NAS Systems sammeln und frühzeitig auf Defekte reagieren. Dazu gehört z.B. auch die Temperaturkontrolle.

      Kurzbeschreibung der Lösung
      In dieser Anwendung möchte ich das einfach zu verwendende SNMP Protokoll verwenden. Dazu verwende ich keine Zugrifsskontrolle auf dem NAS.

      Konfiguration des NAS Synology DS214

      Systemsteuerung

      • Terminal & SNMP
        • TAB: SNMP
          • ON:SNMP-Service aktivieren
            • ON:SNMPv1, SNMPv2 Dienst
              • Community: public
            • OFF:SNMPv3 Dienst

      Hilfe:
      Link1: https://global.synologydownload.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
      Link2: https://kb.synology.com/en-us/DSM/help/DSM/AdminCenter/system_snmp?version=7

      Konfiguration des iobroker SNMP Adapter (snmp.0)

      • Im iobroker unter "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel), Einträge der TAB's von rechts nach links:

      OPTIONEN

      • Paketgröße: 20
        • OFF: Kompatibilitätsmodus - Verwenden Sie die IP-Adresse für Zustands-IDs
        • OFF: Rohzustände hinzufügen
        • OFF: Typzustände hinzufügen

      AUTORISIERUNG (SNMP V3)

      • kein Eintrag

      GERÄTE

      | Name         | IP-Adresse      |  IPv6  |  OID-Gruppe  |   SNMP-Version  | Community   |  Zeitüberschreitung  |   erneut versuchen  |  Abfrage |
      | YourNASName  | YourNasIPAdress |  OFF   |   nas        |    SNMP v1      | public      |  5                   |   5                 | 30       |
      
      

      OID-SETS

      
      | aktiv         | OID-Gruppe      |  OID-Name                 |  OID                      |   Format  | beschreibbar   | Optional  |  
      | ON            | nas             |  systemGroup.temperature  |  .1.3.6.1.4.1.6574.1.2.0  |   Text    | OFF            | OFF       |  
      
      

      Format

      • Text = 0
      • Number = 1

      Hilfe
      Link1: [https://github.com/iobroker-community-adapters/ioBroker.snmp/blob/master/docs/de/snmp.md]
      Link2: https://www.smarthome-tricks.de/software-iobroker/iobroker-snmp-adapter/

      Konfiguration über eine Datei in die snmp.0 Instanz laden
      Meine lokale static NAS IP Adresse: 192.168.178.7
      --> Bitte ganz am Ende des JSON files noch an Eure IP anpassen!
      --> devIpAddr": "192.168.178.7",
      Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden 😉

      • Instanzen
        • snmp.0
          • Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
            • Klick: oben rechts den markierten Upload Knopf.
              • Dann die JSON Datei auswählen

      instanzen_snmp0_Settings.PNG

      Abstract

      systemGroup OBJECT-GROUP
      OBJECTS { systemStatus,
      temperature,
      powerStatus,
      systemFanStatus,
      cpuFanStatus,
      modelName,
      serialNumber,
      version,
      upgradeAvailable,
      controllerNumber
      }

      JSON Datei meiner System Konfiguration

      {
        "oids": [
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.systemStatus",
            "oidOid": ".1.3.6.1.4.1.6574.1.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.temperature",
            "oidOid": ".1.3.6.1.4.1.6574.1.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.powerStatus",
            "oidOid": ".1.3.6.1.4.1.6574.1.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.systemFanStatus",
            "oidOid": ".1.3.6.1.4.1.6574.1.4.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.cpuFanStatus",
            "oidOid": ".1.3.6.1.4.1.6574.1.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 1
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.modelName",
            "oidOid": ".1.3.6.1.4.1.6574.1.5.1.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.serialNumber",
            "oidOid": ".1.3.6.1.4.1.6574.1.5.2.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.version",
            "oidOid": ".1.3.6.1.4.1.6574.1.5.3.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          },
      
          {
            "oidAct": true,
            "oidGroup": "nas",
            "oidName": "systemGroup.upgradeAvailable",
            "oidOid": ".1.3.6.1.4.1.6574.1.5.4.0",
            "oidWriteable": false,
            "oidOptional": false,
            "oidFormat": 0
          }
        ],
        "devs": [
          {
            "devAct": true,
            "devName": "ortler",
            "devIpAddr": "192.168.178.7",
            "devIp6": false,
            "devOidGroup": "nas",
            "devSnmpVers": "1",
            "devAuthId": "",
            "devTimeout": "5",
            "devRetryIntvl": "5",
            "devPollIntvl": "30"
          }
        ],
        "cfgVers": "2.0",
        "optChunkSize": "20",
        "optUseName": false,
        "optRawStates": false,
        "optTypeStates": false
      }
      
      
      

      Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
      (Ausschnitt aus dem Objektbaum)

      • snmp
        • 0
          • MeinNasName
            • systemGroup
              • temperature
              • etc...
                objekte_snmp0_systemGroup_temperature.PNG

      Fehlerbehebung
      Eventuell haben unterschiedliche NAS System unterschiedliche SNMP Konfigurationen. Ich kann hier nur meine Konfiguration für ein DS214 anbieten, die funktioniert. Habt Ihr andere Geräte im Einsatz? Dann einfach als Kommentar anhängen. Damit ist dann auch Anderen geholfen. Gerne auch als JSON Konfiguration zum laden 😉

      Sollten im iobroker unter "Protokolle" beim starten des snmp.0 Adapter Fehler auftauchen?

      • Dann im iobroker untern "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel)
        • "OID-SETS" den Schalter am Anfang der entsprechende Zeile abschalten (OFF).
          • Damit wird die fehlerhafte OID ausgeschaltet.

      z.B.

      | aktiv          | OID-Gruppe      |  OID-Name                |  OID                      |   Format  | beschreibbar   | Optional  |  
      | OFF            | nas             |  systemGroup.temperature |  .1.3.6.1.4.1.6574.1.2.0  |   Text    | OFF            | OFF       |  
      
      

      Jetzt den Adapter wieder starten und schnell das "Protokoll" beobachten.
      Meist hat man aber irgendwo einen Punkt oder ein "0" vergessen 😉

      Hilfsmittel snmpwalk
      Hier kann mal alle verfügbaren OID's und Werte eines Gerätes auslesen. Dafür wird die Stamm OID eingegeben, hier ".1.3.6.1.4.1.6574.1"
      Wichtig: der Punkt gehört vor die ".1.3.6.1.4.1.6574.1

      Install snmpwalk with Debian
      Console

      sudo apt-get install snmp
      

      Use snmpwalk

      • Meine lokale static NAS IP Adresse: 192.168.178.7
      • Informationen von Synology manuell dazu kopiert 😉

      Console

      snmpwalk -v 2c -c public 192.168.178.7 .1.3.6.1.4.1.6574.1
      
      systemStatus     "Synology system status"
      	 Normal(1): System functionals normally.
      	 Failed(2): Volume has crashed.
      iso.3.6.1.4.1.6574.1.1.0 = INTEGER: 1
          
      temperature 	"Synology system temperature"
      iso.3.6.1.4.1.6574.1.2.0 = INTEGER: 29
      
      powerStatus     "Synology power status"
      	 Normal(1): All power supplies functional normally.
      	 Failed(2): One of power supply has failed.
      iso.3.6.1.4.1.6574.1.3.0 = INTEGER: 1
      
      systemFanStatus     "Synology system fan status"
      	 Normal(1): All Internal fans functional normally.
      	 Failed(2): One of internal fan stopped.
      iso.3.6.1.4.1.6574.1.4.1.0 = INTEGER: 1
      
      cpuFanStatus		"Synology cpu fan status"
      	 Normal(1): All CPU fans functional normally.
      	 Failed(2): One of CPU fan stopped.
      iso.3.6.1.4.1.6574.1.4.2.0 = INTEGER: 1
      
      modelName  "The Model name of this NAS"
      iso.3.6.1.4.1.6574.1.5.1.0 = STRING: "DS214"
      
      serialNumber  "The serial number of this NAS"
      iso.3.6.1.4.1.6574.1.5.2.0 = STRING: "xxxxLSNxxxxx3"
      
      version  "The version of this DSM"
      iso.3.6.1.4.1.6574.1.5.3.0 = STRING: "DSM 6.2-25556"
      
      upgradeAvailable "This oid is for checking whether there is a latest DSM can be upgraded."
      	 Available(1): There is version ready for download.
      	 Unavailable(2): The DSM is latest version.
      	 Connecting(3): Checking for the latest DSM.
      	 Disconnected(4): Failed to connect to server.
      	 Others(5): If DSM is upgrading or downloading, the status will show others."
      iso.3.6.1.4.1.6574.1.5.4.0 = INTEGER: 2
      
      
      
      
      

      Referenz

      • Der Ortler : https://de.wikipedia.org/wiki/Ortler
      posted in Praktische Anwendungen (Showcase)
      alk
      alk
    • RE: Keba kecontact - von Überschussladen auf Laden stellen?

      @stefan-falt Servus, habe verstanden, dass mein Vorschlag wohl etwas komlpex war. Dann habe ich nochmal beim kecontact Adapter nachgesehen.
      --> https://github.com/iobroker-community-adapters/ioBroker.kecontact

      Dort gibt es noch einige einfache "dynamic" options:
      --> https://github.com/iobroker-community-adapters/ioBroker.kecontact#dynamic-options

      Eine davon ist limitCurrent:

      kecontact.0.automatic.limitCurrent - limits your charging to specified amperage in mA (0 = no limitation)
      Sample: To charge your vehicle with a constant amperage of 6A regardless of surplus,

      • set photovoltaics to false
      • limitCurrent to 6000.

      Damit könntest Du Deine Lösung etwas einfacher erreichen. Probiert habe ich es noch nicht.
      Bei der Leistungsrechnung müsstest du wohl noch etwas experimentieren, da du ja 1Phase verwendest. Eventuell braucht der Adapter etwas Hilfe.

      LG
      alk

      posted in Automatisierung
      alk
      alk
    • RE: Keba kecontact - von Überschussladen auf Laden stellen?

      @stefan-falt super, dass es geklappt hat.

      posted in Automatisierung
      alk
      alk

    Latest posts made by alk

    • RE: ESP8266 und CC1101 für 433 MHz ?

      @alex-8 Servus!

      Ich gehe mal davon aus, dass der ESP8266 mit dem CC1101 nun läuft nun erkannt wird (Dein Log). Die MQTT Verbindung zum iob hast du auch am laufen und es werden Datenpunkte im iob erzeugt. Das ist schon mal gut!

      Jetzt geht es im Bereich des OpenMQTTGateway weiter mit der Konfiguration:
      https://docs.openmqttgateway.com/use/rf.html#what-is-an-rf-gateway

      Entscheident ist die Auswahl der RF Library des ESP8266 für die korrekte Dekodierung der Sensordaten. Hier gibt es folgende Libraries zur Auswahl, jede hat mehr oder weniger Vor/Nachteile:

      1 - PiLight
      2 - RF
      3 - RTL_433
      4 - RF2

      Beim ESP8266 kannst Du leider weniger Libraries verwenden, ich denke da gibt es Einschränkungen mit Speicher und CPU Performance. Entsprechende Dokumentation findes Du hinter dem Link (oben).

      Eventuell ist Dein Device ja auch hier schon dabei?
      https://docs.openmqttgateway.com/use/rf.html#supported-decoders

      Oft musst du das Signal mehrfach senden, damit es vom Receiver empfangen wird:
      https://docs.openmqttgateway.com/use/rf.html#repeat-the-rf-signal-several-times

      Auch gibt es eine aktive Community:
      https://community.openmqttgateway.com/

      Ich hoffe Du kommst damit weiter?

      LG
      alk

      posted in Microcontroller
      alk
      alk
    • RE: ESP8266 und CC1101 für 433 MHz ?

      @mcu Servus miteinander!

      Es gibt auch einen OpenMqttGateway auf ESP32 Basis mit dem CC1101. Dieser unterstützt auch das Dekodieren der digitalen Daten und kennt schon sehr viele Sensoren. Ist sehr ähnlich wie TASMOTA aufgebaut und zu verwenden. Hatte ich mal hier dokumentiert:
      👉 https://forum.iobroker.net/topic/75398/openmqttgateway-rf-433mhz-aufbauen

      Überblick
      Overview.PNG

      Ein mögliche Umsetzung ist hier unten zu sehen. Links oben der ESP 32 auf einem ESP Expansion Board (blau).
      Das RF Modul ist direkt mit dem Expansion Board verbunden (grün).
      Die 12Vdc Spannungsversorgung erfolgt über den Schalter (türkis) und einen DCDC Step LM2596 down Konverter ((lila), 7Vdc Ausgang.
      BlockDiagram.PNG box1.PNG

      Einige Zusatzinformationen:

      OpenMqttGateway https://github.com/1technophile/OpenMQTTGateway
      Media Links https://github.com/1technophile/OpenMQTTGateway?tab=readme-ov-file#media

      Eventuell hilft es dir weiter?

      LG
      alk

      posted in Microcontroller
      alk
      alk
    • RE: [HowTo] Konfiguration cisco sg300 und snmp-Adapter

      @norbert999 Servus, brauchts Du hier noch Hilfe oder bist du schon weiter gekommen?

      LG
      alk

      posted in Einbindung von Geräten
      alk
      alk
    • Mit Shelly Plus Plug S den Verbrauch messen

      Anwendungsbeschreibung

      Begriffsklärung

      • Generation 2: Shelly Plus Plug S: https://shelly-api-docs.shelly.cloud/gen2/Devices/Gen2/ShellyPlusPlugS

      Überblick
      Der Shelly Plus Plug S ist im lokalen WiFi Netz angemeldet und stellt eine eigene WebSite zur Konfiguration bereit. Und der Plug steckt in der Steckdose, vor dem Gefrierschrank. Somit könnte man nun den Gefrierschrank ein- und ausschalten. Hier möchte ich aber einfach sehen, wieviel Leistung der Schrank aufnimmt und in welchen zeitlichen Abständen.

      Komponenten
      iobroker RasPi 4
      (keine SD-Karte, kein USB Stick)
      Plattform linux, Betriebssystem linux

      • Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
      • OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
      • ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
      • Node.js v18.17.0, NPM 9.6.7
      • USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
      • log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
      • Aktive Instanzen 19

      Instanzen

      • Admin v6.13.16
      • shelly.0 v6.8.0
        • Allgemeine Einstellungen
          • Shelly Protokoll: MQTT (und HTTP)
          • HTTP-Benutzername: admin
          • HTTP-Password: Dein_HTTP_Password
            shelly.0 allgemein.PNG
        • MQTT Einstellungen
          • MQTT-Listen-IP: Zugriff von allen IPs zulassen
          • Port: 1882
          • MQTT-Benutzername: shelly
          • MQTT-Password: Dein_MQTT_Password
            shelly.0 mqtt.PNG

      Konfiguration Shelly Plus Plug S

      Home Landing Page
      shellyplusplugs home.PNG

      MQTT Settings
      shellyplusplugs mqtt settings.PNG

      Ziel
      Der Shelly Plus Plug S ist zwischen Steckdose und Gefrierschrank geschaltet und steht ein "ein". Nun kann man anhand eininger Datenpunkte Messwerte des Plug im Objektbaum der shelly.0 Instanz auslesen. Darunter auch die aktuelle Leistungsaufnahme in Watt (W) und die Gesamtleistung über die Zeit in Wh.
      Die Datenpunkte werden per shelly.0 Instanz über MQTT bereit gestellt.

      Kurzbeschreibung der Lösung
      Der Plug stell im shelly.0 mehrere Datenpunkte zur Verfügung.

      shellyplusplugs iob object.PNG

      Darunter auch folgende für mich relevante Punkte:

      shellyplusplugs iob object relay0.PNG

      Switch zeigt den aktuellen Zustand des Schalters an. Der Zustand wechselt zwischen true = eingeschaltet und false = ausgeschaltet:

      shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Switch
      

      Power zeigt die aktuell fließende Leistung in Watt (W) an. Bei meinem Gefrierschrank wechselt diese zwischen 0.0W und ~20W, wenn der Gefrierschrank kühlt:

      shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Power
      

      Mit Energy wird die summierte Gesamtleistung in Watt Stunden (Wh), seit Betrieb, angezeigt:

      shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Energy
      

      Außerdem wird noch die Temperatur in Celsius mit protokolliert:

      shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.temperatureC
      

      Hinweis:
      Anfangs hatte ich den Shelly Plus Plug S per MQTT Instanz angebunden. Leider hat das, mir unerklärlich, den Schalter immer mal wieder ausgeschaltet. Schwer zu sagen, an was das lag. Hat jemand eine Idee?

      Verwendete Datenpunkte in Material Design.
      Grafisch sehen die Werte über die Zeit dann so aus:

      https://github.com/Scrounger/ioBroker.vis-materialdesign#value

      • shelly.0.shellyplusplugs#d4d4daf4zzzz#1.hostname

      https://github.com/Scrounger/ioBroker.vis-materialdesign#value

      • shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Power

      https://github.com/Scrounger/ioBroker.vis-materialdesign#value

      • shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Switch

      https://github.com/Scrounger/ioBroker.vis-materialdesign#value

      • shelly.0.shellyplusplugs#d4d4daf4zzzz#1.Relay0.Energy

      https://github.com/Scrounger/ioBroker.vis-materialdesign#line-history-chart
      vis.0 mdGefrierschrank.PNG

      posted in Praktische Anwendungen (Showcase)
      alk
      alk
    • Mit Shelly Button einen Datenpunkt ändern

      Anwendungsbeschreibung

      Begriffsklärung

      • Generation 1: Shelly Button1: https://shelly-api-docs.shelly.cloud/gen1/#shelly-button1

      Überblick
      shbtn1_block.PNG
      shelly button 1 kitchen.jfif

      Der Shelly Button ist im lokalen WiFi Netz angemeldet und stellt eine eigene WebSite zur Konfiguration bereit. Diese funktioniert am Besten, wenn der Shelly Button geladen wird. Andernfalls schläft der Shelly Button sehr schnell wieder ein, um Energie zu sparen.

      Komponenten
      iobroker RasPi 4
      (keine SD-Karte, kein USB Stick)
      Plattform linux, Betriebssystem linux

      • Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
      • OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
      • ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
      • Node.js v18.17.0, NPM 9.6.7
      • USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
      • log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
      • Aktive Instanzen 19

      Instanzen

      • Admin v6.13.16
      • shelly.0 v6.8.0
        • Allgemeine Einstellungen
          • Shelly Protokoll: MQTT (und HTTP)
          • HTTP-Benutzername: admin
          • HTTP-Password: Dein_Password
            shelly.0 allgemein.PNG
        • MQTT Einstellungen
          • MQTT-Listen-IP: Zugriff von allen IPs zulassen
          • Port: 1882
          • MQTT-Benutzername: shelly
          • MQTT-Password: Dein_Password
            shelly.0 mqtt.PNG
      • simple-api.0 v2.7.2
        • IP: Zugriff von allen IPs zulassen
        • Port: 8087
          simple-api.0.PNG

      Ziel
      Mit dem Shelly Button möchte ich einen Datenpunkt im ioboker zwischen "true" und "false" umschalten. Die erweiterte Aufgabe des Datenpunktes im iobroker ist es unsere Wallbox zwischen "voll laden" = false und "mit Sonne laden" = true umzuschalten. Das funktioniert sehr komfortabel aus der Küche 😉

      Kurzbeschreibung der Lösung
      Der Shelly button hat die Möglichkeit "Aktionen" zu definieren, z.B.

      • 1x schnell drücken
      • 2x schnell drücken
        Außerdem kann man dieser Aktion eine URL hinterlegen, die dann auf den iobroker "simple-api" Adapter zeigt. Und unsere Wallbox hat genau so einen Datenpunkt zum umschalten.

      Natürlich gibt es auch gleiches per MQTT zu realisieren. Fand ich hier aber zu aufwendig und bin bei der simple-api geblieben.

      Konfiguration Shelly Button 1 per Access Point
      -->Den Button mit einem Ladekabel verbinden!<--
      Der Resetbutton befindet sich hinter dem Deckel auf der Rückseite und unter dem Akku. Diesen drückt man ~10sec und der button beginnt zu blinken und schaltet in den Access Point mode. Jetzt mit einem Mobiltelefon/Tablet/Notebook mit dem AP verbinden und IP Adresse 192.168.33.1 in der Adresszeile eingeben (Siehe Beschreibung https://shelly-api-docs.shelly.cloud/gen1/#wifi-modes)

      Konfiguration Shelly Button 1 über die WebOberfläche
      IP des Button in der Adresse eintragen, eventuelles Password eingeben und schon geht es los.

      Internet & Security

      • RESTRICT LOGIN

        • HTTP-Benutzername: admin
        • HTTP-Password: Dein_Password
      • SNTP Server

        • Server: fritz.box
      • Advanced - Developer Settings
        Advanced - Developer Settings.PNG

        • check: Enable MQTT
          • Username: shelly
          • Password: Dein_Password
          • Server: heimgarten.fritz.box:1882
            Min reconnect timeout 2, Max reconnect timeout: 60, Keep alive: 60
            check: Clean Session
            no check: Retain
            Max QoS 0
            WARNING: If you enable MQTT - actions via Cloud connection will be disabled!

      SAVE
      REBOOT NOW

      iobroker log

      shelly.0 2024-11-05 16:58:11.159	info	[MQTT] Device with client id "shellybutton1-485519F098AA" connected!
      

      Settings

      • Firmware Update
        Current version: 20230913-113105/v1.14.0-gcb84623
        You have latest version on your device!

      • LED LIGHT CONTROL
        Check: Disable Wi-Fi status light.

      Actions
      Die Aktionen des Shelly Button zeigen direkt auf den simple-api Adapter per URL.
      Der hier verwendete Datenpunkt im iobroker "kecontact.0.automatic.photovoltaics" wird zwischen true und false umgeschaltet. Dies beeinflusst, ob sofort direkt geladen wird (false) oder auf überschüssige Sonnenenergie gewartet wird (true). Diese Funktion stellt der Adapter für die Wallbox zur Verfügung und wird hier nicht näher erklärt.

      Actions : Button short pressed url = Direkt laden

      http://heimgarten.fritz.box:8087/set/kecontact.0.automatic.photovoltaics?value=false&prettyPrint
      

      Actions : Button 2x short pressed url = Mit Sonne laden

      http://heimgarten.fritz.box:8087/set/kecontact.0.automatic.photovoltaics?value=true&prettyPrint
      

      Actions.PNG

      Verfügbare Datenpunkte des shelly button in der Instanz shelly.0
      shbtn data points.PNG

      simple-api Hilfe

      http://heimgarten.fritz.box:8087/help
      

      {
      "getPlainValue": "http://heimgarten.fritz.box:8087/getPlainValue/stateID",
      "get": "http://heimgarten.fritz.box:8087/get/stateID/?prettyPrint",
      "getBulk": "http://heimgarten.fritz.box:8087/getBulk/stateID1,stateID2/?prettyPrint",
      "set": "http://heimgarten.fritz.box:8087/set/stateID?value=1&prettyPrint",
      "toggle": "http://heimgarten.fritz.box:8087/toggle/stateID&prettyPrint",
      "setBulk": "http://heimgarten.fritz.box:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint",
      "setValueFromBody": "http://heimgarten.fritz.box:8087/setValueFromBody?stateID1",
      "objects": "http://heimgarten.fritz.box:8087/objects?pattern=system.adapter.admin.0*&prettyPrint",
      "states": "http://heimgarten.fritz.box:8087/states?pattern=system.adapter.admin.0*&prettyPrint",
      "search": "http://heimgarten.fritz.box:8087/search?pattern=system.adapter.admin.0*&prettyPrint",
      "query": "http://heimgarten.fritz.box:8087/query/stateID1,stateID2/?dateFrom=2019-06-06T12:00:00.000Z&dateTo=2019-06-06T12:00:00.000Z&noHistory=false&aggregate=minmax&count=3000&prettyPrint"
      }

      posted in Praktische Anwendungen (Showcase)
      alk
      alk
    • RE: Keba Überschussladen, welche Datenpunkte?

      @lemonbiter servus, ich habe mal eine Beschreibung für einen solchen Fall geschrieben.

      Meine PV Analge ist ein E3DC System und eine Keba Wallbox P30C:
      https://forum.iobroker.net/topic/65668/mit-e3dc-s10e-und-keba-p30-c-serie-pv-optimiert-ev-laden

      Systemschaltbild
      systemschaltbild_e3dc.PNG

      • Instanzen
        • Admin v6.3.5
        • e3dc-rscp.0 v1.1.1
        • kecontact.0 v1.5.2

      Der Keba Adapter ist für so einen Fall schon gut vorbereitet und regelt die Leistung nach Überschuss, selbst. Aus meiner Sicht sehr angenehm und einfach.

      Dem Adapter kecontact.0 werden in der Adapterkonfiguration einfach zwei Datenpunkte deiner PV Analge mitgeteilt. Dafür habe ich zwei Aliase angelegt -->

      Schritt 3: Jetzt teilen wir dem Wallbox Adapter kecontact.0 die beiden Alias mit
      Im iobroker unter "Instanzen" die Konfiguration des kecontact.0 Adapter öffnen (Schraubenschlüssel):

      Dies hatten wir weiter oben schon eingetragen -->

      IP-Adresse der Wallbox : IP-Adresse der KEBA KeContact-Wallbox : 192.168.178.60
      OFF: passiver Modus
      30 : Aktualisierungsintervall (für passiven Modus)
      ON : lade letzte Ladesitzungen
      ON : States beinhalten die Lesitung der Wallbox

      Dies muss noch eingetragen werden -->

      Name des States für Netzbezug : alias.0.Energy.GRID_0
      Name des States für aktuelle Leistungsaufnahme des Batterieseichers: alias.0.Energy.BAT_0

      Mehr in der Beschreibung....

      Auch möchte ich noch auf die Anwendung EVCC hinweisen, die ähnlich arbeitet. Diese Lösung kenne ich aber nicht.

      Gerne Rückmeldung ob es für Dich funktioniert und/oder welche Lösung du gewählt hast.

      LG
      alk

      posted in ioBroker Allgemein
      alk
      alk
    • RE: Wemos mit Tasmota Deepsleep

      @flexer der Stromverbrauch wird durch folgende Bauteile beeinflusst:

      • Aktivität des ESP32, durch DeepSleep zu reduzieren.
      • PullUp Widerstand. Zb I=U/R. Bei 10k sind das 330uA. Bei 1K PullUp schon 3.3mA. Also Augen auf bei PullUp Widerständen!

      LG
      alk

      posted in Microcontroller
      alk
      alk
    • RE: Wemos mit Tasmota Deepsleep

      @flexer kurz nochmal zu dem Wemos Board, das jetzt nicht mehr funktioniert.

      Meine Annahme:
      Der Wemos Eingang D0/GPIO16 und/oder der RST und/oder weitete Funktionsblöcke am Wemos Board sind jetzt defekt.
      Weil:

      • Ich nehme an, der braune Draht am Akkupack ist an 5V oder 2*3.7V=7.4V angeschlossen.
      • Geht dann über den PullUp ~5-10k an RST und D0/GPIO16.
      • Die Wemos Pins sind nur 3.3V tollerant und gehen >3.7V sehr schnell kaputt.

      Aber genau kann ich das auf dem Bild nicht erkennen. Eventuell ist es ja doch alles richtig verdrahtet 😉

      Besser:

      • Der PullUp ~5-10k hätte an 3V3 am Wemos Board angeschlossen werden sollen.
      • Geht dann über den PullUp ~5-10k an RST und D0/GPIO16.
      posted in Microcontroller
      alk
      alk
    • RE: Wemos mit Tasmota Deepsleep

      @flexer super, das hört sich gut an.

      Der DeepSleepTimer für eine Stunde wäre dann:
      t=60s*60s=3600s

      Du gibts in der TASMOTA Console folgendes Kommando ein:

      Backlog TelePeriod 10; DeepSleepTime 3600;
      

      --> So sendet TASMOTA nach 10sec, nach dem Aufwachen, die MQTT Informationen an iobroker, schläft wieder ein und wacht all 3600sec = 1Stunde auf.

      posted in Microcontroller
      alk
      alk
    • RE: Wemos mit Tasmota Deepsleep

      @flexer na dann ist das doch der erste Ansatz den PullUp hinzu zu nehmen.
      Und den D0/GPIO16 in der Pin Configuration auf "None(0)" stellen, siehe Documentation ganz am Anfang.
      ba12f7ee-325a-4ce9-a65d-4378ea2b76f1-image.png

      Denn die Pin Configuration "DeepSleep (182)" löst den Deep Sleep wieder auf! Klingt konisch, ist aber so!
      e9105f2e-e259-4da5-9f98-91cc5aaf5fe0-image.png

      posted in Microcontroller
      alk
      alk
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo