Donnerstag, 8. April 2021

PV-Anlagedaten in Home Assistant auswerten

 

Heute wird es hier mal un-photographisch:


Seit einiger Zeit beschäftige ich mich mit der Smart Home Software Home Assistant, die ich auf einem Raspberry Pi 4 betreibe.

Das System ist in der Lage verschiedene Automatisierungs-Plattformen in einem System zu vereinen, so dass das System die Automatisierungskomponeneten  der Fritzbox (Fritz!DECT – u.a. die Heizungsautomation die hier vor einigen Jahren beschrieben wurde) und vieles Andere zusammenführen kann (Z-Wave, ZigBee, WiFi).

Hier soll es jetzt im Detail darum gehen, wie ich an die Messwerte meiner Solaranlage im HA-System gekommen bin.

Unser 5kWh SENEC LI2.1 Batteriespeicher liefert die Daten über Web-Schnittstellen der Herstellers, was für die persönliche Information ok ist, aber für die Nutzung in Automatisierungen nichts nutzt.

Im ersten Schritt wurde über die Erweiterung HACS eine Datenintegration für den SENEC-Speicher installiert. Danach stehen die wesentlichen Daten zur Verfügung, wobei die Frequenz der Daten, wie in den Web-Interfaces eher gemächlich ist.

Erste praktische Nutzung war die Solargesteuerte Schaltung unseres 5l Warmwasser-Untertischgerätes in der Küche. Die Spannungsversorgung wird Abends um 22:00 ausgeschaltet und falls es nicht genug Solarstrom gibt spätestens um 10:00 Morgens wieder aktiviert. Die Restwärem reich in der Regel morgens aus solange man keinen großen Abwasch in der Zeit hat.

Solargesteuert wird der Speicher dann nach Sonnenaufgang eingeschaltet, sobald der Speicher mindestens einen Ladezustand von 5% hat und mindestens 500 Watt PV-Strom erzeugt werden.

Als zweite Anwendung wurde in einem bestimmten Zeitfensters am Morgen das Küchenrollo (über ein Shelly 2.5 WiFi Modul) zur Hälfte geschlossen wurde sobald die Sonne blendet ( > 3.000 Watt Energie erzeugt). Hier zeigte sich jedoch dass der Integral-Wert aus dem Senec-Speicher nicht präzise genug war, da unsere PV-Anlage nur 12 Module in Ost-Richtung (Küchenseite) hat und zusätzlich 20 Module auf der West-Seite so dass die „Störleistung“ vom Westen gegen Mittag deutlich zunimmt.

Der vorgeschaltete Wechselrichter von SMA weist über das Display Strom und Spannung über das eingebaute Display für Ost- & West-Seite separat aus. Nachdem ich festgestellt hatte, dass der Wechselrichter über eine ModBus-Schnittstelle verfügt habe ich mich auf die Suche nach Auslesemöglichkeiten gemacht und die Hypothese, dass sowas mit der grafischen Programmieroberfläche Node Red klappen könnte wurde nach einer kurzen Netz-Recherche bestätigt.

Also habe ich die Noder Red Erweiterung in Home Assistant installiert. Außerdem war die Installation einer Node Red Integration notwendig um die ausgelesenen Daten in das HA-System übergeben zu können.

Im Netz fand ich eine gut dokumentierte Umsetzung für so ein Problem (Hausbau Becker: Modbus Integration in Node-RED von SMA) wobei die Komplexität dieser Umsetzung deutlich reduziert werden konnte.


Meine abgespeckte Struktur, die tagsüber alle 60 Sekunden die Leitung von Ost- und West-Seite ausliest, sieht dann so aus – wobei die Abfrage bei ausgeschaltetem Wechselrichter (z.B.bei Dämmerung oder nachts) einen Messwert von -2,8 Mrd  liefert, den ich dann abfangen musste.

Obwohl ich mittlerweile weitere Automatisierungen mit Node Red gebaut habe habe ich festgestellt, dass ich immer noch mit gefährlichem Halbwissen unterwegs bin, dann an der Aufgabe die beiden Messwerte für Ost und West zu einem gemeinsamen Total-Wert zu addieren und zu übergeben bin ich bisher gescheitert – wenn als da jemand bitte einen Tip für mich hätte……

Da der aktuelle Total-Wert noch aus der Senec-Anlage kommt führen Verluste und Unterschiede in der Aufzeichnungsfrequenz momentan dazu, dass der West-Messwert gelegentlich den Total-Wert überschreitet.

Die grafische Umsetzung in der Lovelace sieht dann so aus:

 

In der Garfana-Erweiterung lassen sich die Messwerte so darstellen:


 

----------------------------------------------------------------------------------------------------------------------------

Für Nerds und Nachahmer jetzt noch etwas Programm-Code:

Node Red:

 [
    {
        "id": "d2d6601a.7125f8",
        "type": "tab",
        "label": "SMA-Gt",
        "disabled": false,
        "info": "Regelmäßiges Auslesen von Daten der Solaranlage \n\nSMA- Wechselrichter über ModBus"
    },
    {
        "id": "929489d6.baa6b8",
        "type": "inject",
        "z": "d2d6601a.7125f8",
        "name": "60s Abfrage",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 140,
        "y": 100,
        "wires": [
            [
                "875fd828.40cc58"
            ]
        ]
    },
    {
        "id": "cca0add4.907ac8",
        "type": "modbus-getter",
        "z": "d2d6601a.7125f8",
        "name": "30769 - 30774",
        "showStatusActivities": false,
        "showErrors": false,
        "logIOActivities": false,
        "unitid": "3",
        "dataType": "InputRegister",
        "adr": "30769",
        "quantity": "6",
        "server": "101bd986.8eac7e",
        "useIOFile": false,
        "ioFile": "",
        "useIOForPayload": false,
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "x": 280,
        "y": 260,
        "wires": [
            [
                "a18b0ca9.912008"
            ],
            []
        ]
    },
    {
        "id": "a18b0ca9.912008",
        "type": "buffer-parser",
        "z": "d2d6601a.7125f8",
        "name": "",
        "data": "responseBuffer.buffer",
        "dataType": "msg",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "type": "int32be",
                "name": "IDC1",
                "offset": 0,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "UDC1",
                "offset": 4,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.01",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "PDC1",
                "offset": 8,
                "length": 1,
                "offsetbit": 0,
                "scale": "1",
                "mask": ""
            }
        ],
        "swap1": "",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "resultType": "keyvalue",
        "resultTypeType": "output",
        "multipleResult": false,
        "fanOutMultipleResult": false,
        "setTopic": true,
        "outputs": 1,
        "x": 490,
        "y": 260,
        "wires": [
            [
                "955c6aca.99d25",
                "57ae0485.de5dd4"
            ]
        ]
    },
    {
        "id": "551b7111.b1355",
        "type": "comment",
        "z": "d2d6601a.7125f8",
        "name": "STP 7000TL-20 711",
        "info": "",
        "x": 110,
        "y": 20,
        "wires": []
    },
    {
        "id": "955c6aca.99d25",
        "type": "function",
        "z": "d2d6601a.7125f8",
        "name": "P-DC1",
        "func": "var temp = (msg.payload.PDC1)\nmsg.payload = temp;\nmsg.topic = \"PDC1\"\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 670,
        "y": 260,
        "wires": [
            [
                "8e18adba.7a6b08"
            ]
        ]
    },
    {
        "id": "2da0ac02.2aa7cc",
        "type": "function",
        "z": "d2d6601a.7125f8",
        "d": true,
        "name": "Wirkungsgrad",
        "func": "var temp = (msg.payload[\"PAC1\"] / msg.payload[\"PDC1\"]) * 100\nmsg.payload = temp; \nmsg.payload = msg.payload.toFixed(1).replace('.', ',');\nmsg.topic = \"W1\"\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 1720,
        "y": 1480,
        "wires": [
            [
                "f6c144b5.8804d8"
            ]
        ]
    },
    {
        "id": "9d45249.2ec42d8",
        "type": "join",
        "z": "d2d6601a.7125f8",
        "d": true,
        "name": "",
        "mode": "custom",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": false,
        "timeout": "",
        "count": "2",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 1550,
        "y": 1480,
        "wires": [
            [
                "2da0ac02.2aa7cc"
            ]
        ]
    },
    {
        "id": "f6c144b5.8804d8",
        "type": "ui_text",
        "z": "d2d6601a.7125f8",
        "d": true,
        "group": "bad4a5be.f7833",
        "order": 6,
        "width": 0,
        "height": 0,
        "name": "Wirkungsgrad1",
        "label": "Wirkungsgrad",
        "format": "{{msg.payload}} %",
        "layout": "row-spread",
        "x": 1720,
        "y": 1520,
        "wires": []
    },
    {
        "id": "fde7ffd7.08bf28",
        "type": "comment",
        "z": "d2d6601a.7125f8",
        "name": "Erklärung",
        "info": "Einfache Procedur zum Auslesen der beiden Momentanleistungen (Ost=2, West=1) vom SMA Wechselrichter.\n\nTechnisch im Wesentlichen eine Abgespeckte Kopie von: \nhttp://hausbau-becker.blogspot.com/2020/09/modbus-integration-in-node-red-von-sma.html\n\n----------------------------------------------------\n\n\n\n\n\n\n\n\n\n\n\nErklärung Modbus Wert S32 / U32:\n\n1 Register besteht aus 2x 8bit = 2x 1 byte.\n1 Wert besteht aus 2 Registern = 32bit bzw. 4 byte.\n\nUm einen Wert abzufragen, fragt man immer 2 Register ab.\nAlso ist Quantity =2.\n\nOffset fängt bei 0 an.\nOffset 0 = 1. 8bit, 1 = 2. 8bit (1. Register)\nOffset 2 = 2. 8bit, 3 = 3. 8bit (2. Register)\n= ein 32bit Wert\n\nOffset für den nächsten Wert fängt bei 4 an.",
        "x": 340,
        "y": 60,
        "wires": []
    },
    {
        "id": "57ae0485.de5dd4",
        "type": "modbus-getter",
        "z": "d2d6601a.7125f8",
        "name": "30957 - 30962",
        "showStatusActivities": false,
        "showErrors": false,
        "logIOActivities": false,
        "unitid": "3",
        "dataType": "InputRegister",
        "adr": "30957",
        "quantity": "6",
        "server": "101bd986.8eac7e",
        "useIOFile": false,
        "ioFile": "",
        "useIOForPayload": false,
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "x": 280,
        "y": 360,
        "wires": [
            [
                "408f41b.ad9324"
            ],
            []
        ]
    },
    {
        "id": "408f41b.ad9324",
        "type": "buffer-parser",
        "z": "d2d6601a.7125f8",
        "name": "",
        "data": "responseBuffer.buffer",
        "dataType": "msg",
        "specification": "spec",
        "specificationType": "ui",
        "items": [
            {
                "type": "int32be",
                "name": "IDC2",
                "offset": 0,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.001",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "UDC2",
                "offset": 4,
                "length": 1,
                "offsetbit": 0,
                "scale": "0.01",
                "mask": ""
            },
            {
                "type": "int32be",
                "name": "PDC2",
                "offset": 8,
                "length": 1,
                "offsetbit": 0,
                "scale": "1",
                "mask": ""
            }
        ],
        "swap1": "",
        "swap2": "",
        "swap3": "",
        "swap1Type": "swap",
        "swap2Type": "swap",
        "swap3Type": "swap",
        "msgProperty": "payload",
        "msgPropertyType": "str",
        "resultType": "keyvalue",
        "resultTypeType": "output",
        "multipleResult": false,
        "fanOutMultipleResult": false,
        "setTopic": true,
        "outputs": 1,
        "x": 490,
        "y": 360,
        "wires": [
            [
                "8e51436.29a97c"
            ]
        ]
    },
    {
        "id": "8e51436.29a97c",
        "type": "function",
        "z": "d2d6601a.7125f8",
        "name": "P-DC2",
        "func": "var temp = (msg.payload.PDC2)\nmsg.payload = temp;\nmsg.topic = \"PDC2\"\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 670,
        "y": 360,
        "wires": [
            [
                "31f909c7.6b172e"
            ]
        ]
    },
    {
        "id": "69891463.07084c",
        "type": "ha-entity",
        "z": "d2d6601a.7125f8",
        "name": "SMA Power West",
        "server": "3ee43a18.3e87e6",
        "version": 1,
        "debugenabled": false,
        "outputs": 1,
        "entityType": "sensor",
        "config": [
            {
                "property": "name",
                "value": "sensor.pv_power_west"
            },
            {
                "property": "device_class",
                "value": "sensor"
            },
            {
                "property": "icon",
                "value": "mdi:solar-power"
            },
            {
                "property": "unit_of_measurement",
                "value": "W"
            }
        ],
        "state": "payload",
        "stateType": "msg",
        "attributes": [],
        "resend": true,
        "outputLocation": "",
        "outputLocationType": "global",
        "inputOverride": "allow",
        "outputOnStateChange": false,
        "outputPayload": "$entity().state ? \"on\": \"off\"",
        "outputPayloadType": "jsonata",
        "x": 1030,
        "y": 280,
        "wires": [
            []
        ]
    },
    {
        "id": "7c127324.031a54",
        "type": "ha-entity",
        "z": "d2d6601a.7125f8",
        "name": "SMA Power East",
        "server": "3ee43a18.3e87e6",
        "version": 1,
        "debugenabled": false,
        "outputs": 1,
        "entityType": "sensor",
        "config": [
            {
                "property": "name",
                "value": "sensor.pv_power_east"
            },
            {
                "property": "device_class",
                "value": "sensor"
            },
            {
                "property": "icon",
                "value": "mdi:solar-power"
            },
            {
                "property": "unit_of_measurement",
                "value": "W"
            }
        ],
        "state": "payload",
        "stateType": "msg",
        "attributes": [],
        "resend": true,
        "outputLocation": "",
        "outputLocationType": "global",
        "inputOverride": "allow",
        "outputOnStateChange": false,
        "outputPayload": "$entity().state ? \"on\": \"off\"",
        "outputPayloadType": "jsonata",
        "x": 1030,
        "y": 380,
        "wires": [
            []
        ]
    },
    {
        "id": "db32e83a.8f577",
        "type": "ha-entity",
        "z": "d2d6601a.7125f8",
        "name": "SMA Power total",
        "server": "3ee43a18.3e87e6",
        "version": 1,
        "debugenabled": false,
        "outputs": 1,
        "entityType": "sensor",
        "config": [
            {
                "property": "name",
                "value": "sensor.pv_power_total"
            },
            {
                "property": "device_class",
                "value": "sensor"
            },
            {
                "property": "icon",
                "value": "mdi:solar-power"
            },
            {
                "property": "unit_of_measurement",
                "value": "W"
            }
        ],
        "state": "payload",
        "stateType": "msg",
        "attributes": [],
        "resend": true,
        "outputLocation": "",
        "outputLocationType": "global",
        "inputOverride": "allow",
        "outputOnStateChange": false,
        "outputPayload": "$entity().state ? \"on\": \"off\"",
        "outputPayloadType": "jsonata",
        "x": 1030,
        "y": 480,
        "wires": [
            []
        ]
    },
    {
        "id": "875fd828.40cc58",
        "type": "within-time-switch",
        "z": "d2d6601a.7125f8",
        "name": "",
        "nameInt": "",
        "positionConfig": "7b813a32.05963c",
        "startTime": "sunriseStart",
        "startTimeType": "pdsTime",
        "startOffset": "",
        "startOffsetType": "none",
        "startOffsetMultiplier": 60000,
        "endTime": "sunsetEnd",
        "endTimeType": "pdsTime",
        "endOffset": "",
        "endOffsetType": "none",
        "endOffsetMultiplier": 60000,
        "timeRestrictions": 0,
        "timeRestrictionsType": "none",
        "timeDays": "*",
        "timeOnlyOddDays": false,
        "timeOnlyEvenDays": false,
        "timeMonths": "*",
        "timedatestart": "",
        "timedateend": "",
        "propertyStart": "",
        "propertyStartType": "none",
        "propertyStartCompare": "true",
        "propertyStartThreshold": "",
        "propertyStartThresholdType": "num",
        "startTimeAlt": "",
        "startTimeAltType": "entered",
        "startOffsetAlt": 0,
        "startOffsetAltType": "none",
        "startOffsetAltMultiplier": 60000,
        "propertyEnd": "",
        "propertyEndType": "none",
        "propertyEndCompare": "true",
        "propertyEndThreshold": "",
        "propertyEndThresholdType": "num",
        "endTimeAlt": "",
        "endTimeAltType": "entered",
        "endOffsetAlt": 0,
        "endOffsetAltType": "none",
        "endOffsetAltMultiplier": 60000,
        "tsCompare": "0",
        "x": 320,
        "y": 180,
        "wires": [
            [
                "cca0add4.907ac8"
            ],
            []
        ]
    },
    {
        "id": "8e18adba.7a6b08",
        "type": "switch",
        "z": "d2d6601a.7125f8",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "lt",
                "v": "0",
                "vt": "str"
            },
            {
                "t": "btwn",
                "v": "0",
                "vt": "num",
                "v2": "9999",
                "v2t": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 830,
        "y": 260,
        "wires": [
            [],
            [
                "69891463.07084c"
            ]
        ]
    },
    {
        "id": "31f909c7.6b172e",
        "type": "switch",
        "z": "d2d6601a.7125f8",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "lt",
                "v": "0",
                "vt": "str"
            },
            {
                "t": "btwn",
                "v": "0",
                "vt": "num",
                "v2": "9999",
                "v2t": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 830,
        "y": 360,
        "wires": [
            [],
            [
                "7c127324.031a54"
            ]
        ]
    },
    {
        "id": "101bd986.8eac7e",
        "type": "modbus-client",
        "name": "SMA-Gt",
        "clienttype": "tcp",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "queueLogEnabled": false,
        "tcpHost": "192.168.1.149",
        "tcpPort": "502",
        "tcpType": "TPC-RTU-BUFFERED",
        "serialPort": "/dev/ttyUSB",
        "serialType": "RTU-BUFFERD",
        "serialBaudrate": "9600",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "100",
        "unit_id": "3",
        "commandDelay": "200",
        "clientTimeout": "1000",
        "reconnectOnTimeout": true,
        "reconnectTimeout": "2000",
        "parallelUnitIdsAllowed": true
    },
    {
        "id": "bad4a5be.f7833",
        "type": "ui_group",
        "name": "Test2",
        "tab": "",
        "order": 3,
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "3ee43a18.3e87e6",
        "type": "server",
        "name": "Home Assistant",
        "legacy": false,
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true,
        "cacheJson": true
    },
    {
        "id": "7b813a32.05963c",
        "type": "position-config",
        "name": "",
        "isValide": "true",
        "longitude": "0",
        "latitude": "0",
        "angleType": "deg",
        "timeZoneOffset": "99",
        "timeZoneDST": "0",
        "stateTimeFormat": "3",
        "stateDateFormat": "12"
    }
]

------------------------------------------------------------------------------------------------------------------

Die YAML-Oberfläche für Lovelace:

 type: vertical-stack
cards:
  - type: gauge
    entity: sensor.senec_battery_charge_percent
    min: 0
    max: 100
    severity:
      green: 40
      yellow: 20
      red: 0
  - type: entities
    entities:
      - entity: sensor.senec_battery_state_power
      - entity: sensor.senec_grid_exported_power
        name: Netz Einspeisung
      - entity: sensor.senec_grid_imported_power
        name: Netz Bezug
      - entity: sensor.senec_system_state
    state_color: true

type: 'custom:mini-graph-card'
entities:
  - entity: sensor.senec_house_power
    name: Total
    show_state: true
    fill: true
points_per_hour: 6
line_width: 2
height: 200
smoothing: false
font_size: 60
hours_to_show: 24
show:
  fill: true
  labels: true
  labels_secondary: false
name: Hausverbrauch

type: 'custom:mini-graph-card'
entities:
  - entity: sensor.senec_solar_generated_power
    name: Total
    show_state: true
    fill: true
  - entity: sensor.sensor_pv_power_east
    name: Ost
    show_state: true
    show: null
    fill: false
  - color: green
    entity: sensor.sensor_pv_power_west
    name: West
    show_state: true
    show: null
    fill: false
  - color: yellow
    entity: sensor.senec_battery_charge_percent
    name: Akku Beladung
    show_state: true
    decimals: 1
    show_points: false
    y_axis: secondary
    upper_bound_secondary: 100
    group_by: hour
    align_icon: right
points_per_hour: 2
line_width: 2
height: 200
smoothing: false
font_size: 60
hours_to_show: 24
show:
  fill: true
  labels: true
  labels_secondary: false
name: PV-Leistung

 

 



 

Sonntag, 27. Dezember 2020

Mein fotogarfisches Corona-Jahr 2020

Diese verrückte Jahr 2020 neigt sich dem Ende und ich möchte hier mal versuchen zurückzuschauen. Nach über 30 Jahren war es das erste Jahr ohne Dienst- und Flugreisen. Trotz vieler Einschränkungen ist aber doch so einiges gelaufen.

Januar: Dunkles Wetter, aber im Studio gibt es ja genug Licht

 

Februar: Das Jahr gibt sich noch harmlos. Die Museen haben noch geöffnet und im Kunstpalast Düsseldorf läuft die Lindbergh-Ausstellung

 

März: Die Nachrichten verdichten sich, aber in der Kölner Toyota-Show sind die Tore noch mal geöffnet

 

April: Lockdown mit Homeoffice und Besinnung auf die eigenen 4 Wände. Überraschenderweise wird die Anfang Januar bestellte Küche aber trotzdem Fristgerecht geliefert 

Bild mit dem alten Pentax K-Fisheye 17/4 (entzerrt) 
 

Mai: Glücklicherweise kann man sich ja wenigstens in der Natur frei bewegen - z.B. bei einem Niers-Spaziergang

 

Juni: Wetter und Stimmung werden besser und es ist auch ein Nordseeurlaub mit den (erwachsenen) Kindern drin. Einige Dinge im Stadtbild (z.B. in Stade) sehen aber anders aus

 

Juli: Zeit sich im Ruhrgebiet umzuschauen - Horizontobservatorium auf der Halde Hoheward bei Herten 


August: Bevor der nächste Lockdown kommt kann man am Maarkermeer sogar noch selgeln gehen 

 

September: Zeit für ein langes Motorradwochenende im Taunus bei Braunfels

 

Oktober: Noch einmal Zeit für eine Wanderurlaub in der EIfel bei Waxweiler... vor dem nächsten Lockdown


 

November: Egentlich sollte es ein Objekiv-Review für ein Lydith 30/3.5 werden, aber die Kleinbildfilme wurden fehlerhaft entwickelt. Ein schönes Makro ist dann trotzdem dabei gewesen


Dezember: Dieses Bild ist all denen gewidmet, die dieses Jahr Grill und Küche haben heißlaufen lassen und die am Ende des Corona-Jahres mit mehr kulinarischer Kompetenz und einigen Zusatz-Killos belohnt worden sind. 

Exemplarisch: Schichtfleich aus dem Dutch Oven

 

Einiges wurde ausgelassen und der Monatsgliederung geopfert - aber es war ein Ereignisreiches Jahr ....in einer Weise wie ich es nicht so schnell wieder brauche!

Mittwoch, 10. Juni 2020

Ship-Spotting - so nebenbei

Aktuell sind wir im Urlaub in Otterndorf an der Nordsee in der Elbmündung bei Cuxhaven. Dann kam in den Nachrichten: "Größtes Containerschiff der Welt im Hamburger Haven eingelaufen".

DIe HMM Algeciras ist mit 400m Länge, 61m Breite und einer Transportmöglichkeit von fast 24.000 Containern aktuell wohl weltweit am größten und auf Jungfernfahrt.

Da kam mir der Gedanke, das Schiffe die einlaufen auch wieder auslaufen und das Schiff dann bei uns an der Küste vorbeikommen müßte. Der angekündigte Auslauf war am 10.6.20 gegen 14:00 und eine Suche im Internet zeigte, daß die Fahrstrecke die Elbe runter bis zu uns ca. 4 1/2 h dauern würden.


Hilfe kam dann aus dem Internet mit der Seite Vesselfinder.com, auf der man die Ankunft des Schiffes gut verfolgen konnte.

Hier nun ein paar der Bilder:





Für so ungeplant war es eine interessante Abwechslung und wir waren bei weitem nicht die einzigen Schiffsgucker am Deich.

Ein schaler Beigeschmack bleibt für mich, wenn ich sieht, dass selbst so aktuelle und ertragskräftige Schiffe in Panama registriert sind  😟

Sonntag, 24. Mai 2020

Ein Jahr Solar – Ein Erfahrungsbericht


Hier mal wieder ein Blog-Beitrag, der nichts mit der Photographie zu tun hat: Anfang 2019 haben wir uns für eine Photovoltaik-Anlage mit Li-Speicher entschieden, die dann Ende April aufgebaut wurde und ans Netz gehen konnte.


Disclaimer: Es handelt sich hier um einen persönlichen Erfahrungsbericht – genannte Anbieter und Hersteller sind an diesem persönlichen Bericht nicht beteiligt und ich habe mich in keiner Weise finanziell Unterstützung erhalten – also keine bezahlte Werbung!


Rahmenbedingungen:

  • 3-Personen-Haushalt
  • Reihenendhaus aus dem Jahr 1992
  • Giebelausrichtung Nord (~10° Richtung Osten)
  • Dachschräge 45°
  • Warmwasser über elektronische Durchlauferhitzer (18 KWh Bad/11 kWh Küche)
  • Jahresstromverbrauch ca. 4.500 kWh

 Bei der Suche eines Anbieters für mein Vorhaben hatte ich zuerst ein Solar-Internet-Portal angeschrieben. Die beiden Vertreter, die daraufhin auftauchten waren nicht kompetent und die Angebote wenig fundiert.

Über eine Verbrauchermesse kam ich dann in Kontakt mit Herrn Häussler von der  Fa. ETM GmbH in Neuss, die dem ENERIX-Verbund angeschlossen ist. Von ihm wurden wir auch bei allen Anträgen und dem notwendigen Papierkram unterstützt


Die Installation:

  • 34 Solarmodule Heckert Solar NeMo 60P275 (275 Watt)
  • 12 Module Ost, 22 Module West
  • Leistung der Anlage 9,3 kWh peak
  • Prognostizierte Leistung 6928 kWh p.a.
  • Wechselrichter  SMA STP 7000TL-20
  • Batteriespeicher Senec Home 2.1 – 5 kWh
  • Gesamtkosten ~ 20.000€ brutto
  • EEG-Einspeisung: 0,1111€/kWh (für 20 Jahre)*

* Dieser Wert ist abhängig vom Zeitpunkt der Inbetriebnahme und fällt – der sogenannte Solar-Deckel, der die EEG Förderung ab einem bestimmten Ausbau begrenzt steht aktuell (Mai 2020) auf der Kippe.


Ost-Seite


Der Aufbau der Anlage und die Inbetriebnahme dauerten 3 Tage – der Zweirichtungszähler wurde durch die Stadtwerke eine Woche später installiert. Wichtig ist noch zu erwähnen, dass man für Berieb von Wechselrichter und Speicher am Aufstellungsort 2 Netzwerkanschlüsse (LAN) benötigt, die wir über einen WLAN-Access-Point eingerichtet haben.

West-Seite

Nun zu den Erfahrungen: Mai- Juli sind die ertragsstärksten Monate mit viel und lange Sonne, doch trotzdem  war der Speicher, der abends voll war, morgens sehr oft  leer. Die Suche nach den hohen Nachtverbräuchen zeigte dass  hauptsächlich eine größere Anzahl von Halogenstrahlern und ein defekter Kühlschrank dafür verantwortlich waren. Nach deren Austausch und etwas Feintuning an den Dauerverbrauchern (Standby und EDV-Netzwerk) konnte dann den Nachtverbrauch (wenn Alles Schläft) auf unter 200 W/h drücken. Damit war dann morgens fast immer genug Strom da, bis die Solaranlage wieder nachliefern konnte.Von Februar bis November sind die Erträge deutlich geringer und es werden weniger als 200 kWh/Monat erzeugt - das reicht dann nicht mehr, den Speicher zu füllen.


Der Speicher war ca. 6.000€ Netto ein großer Anteil der Investition . Nach den eben beschriebenen Optimierungen wurden von März bis Oktober etwa 4 kWh pro Tag entnommen. Legt man zugrunde, dass ich Strom aktuell für knapp 24€cent beziehe und für 11€cent einspeise spare ich durch den Speicher aktuell etwa 0,5 €  pro Tag à ~180 € p.a. Damit ist klar, dass der Speicher eine Liebhaberei ist, die sich wirtschaftlich nicht rechnen wird!


Eine weitere Besonderheit des Speichers, die ich so vorher nicht auf dem Schirm hatte, ist dass er beim Laden maximal 1,2 kW/h aufnimmt und beim Entladen maximal 2,4 kW/h abgibt. In der Praxis heißt das, dass beim Duschen über einen der Durchlauferhitzer 2,4 kWh aus dem Speicher, je nach Zeit und Sonne etwas vom Dach kommt, aber der Löwenanteil aus dem Netz gekauft werden muss.  Trotzdem wurde über das Jahr 2/3 des verbrauchten Stroms selber erzeugt. Dieser Wert verbesserte sich dann noch, nachdem wir den kleinen Durchlauferhitzer in der Küche durch ein 5-l-Untertischgerät ersetzt hatten.


Der geplante Ertrag der Anlage wurde im ersten Jahr mit etwas mehr als 8.000 kWh um mehr als 1.000 kWh übertroffen.


Die verfügbare SENEC App gibt eine gute Übersicht über die aktuellen Daten und den Status der Anlagen. Die Anlage lief im Wesentlichen gut – nach 11 Monaten musste allerdings der Wechselrichter des Speichers auf Garantie erneuert werden.


Papierkrieg:


Die Anlage muss beim Finanzamt angemeldet werden!


Umgeht man dabei die sogenannte Kleinunternehmerregelung bekommt man vom Versorger die Eispeisevergütung inkl. 19% Umsatzsteuer die man zusammen mit der Umsatzsteuer auf den Eigenverbrauch monatlich an das Finanzamt abführen muss. 
Vorteil diese Vorgehensweise ist, dass man sich dann die gezahlte Umsatzsteuer auf die gesamte Anlage (wenn zusammen installiert inkl. Speicher) erstatten lassen kann. Nach 6 Jahre kann man dann in die Kleinunternehmerregelung ohne Umsatzsteuer wechseln. Das ist etwas Aufwand – rechnet sich aber.


Zusätzlich muss man jährlich eine Einkommensüberschussrechnung vorlegen und den Gewinn der Anlage bei der Einkommensteuer mit angeben.


Hinweise für die Planung: 

Eine Ost/West-Anlage, wie bei mir installiert, hat den Nachteil, dass über den Tag verteilt weniger Strom erzeugt wird, aber dafür über eine längere Zeit des Tages - das kommt also dem Eigenverbrauch, der wirtschaftlicher als die Einspeisung ist, entgegen. Außerdem umgeht man das Problem mit der sogenannten 70% Regel.


Aktuell muss man, wenn man mehr als 70% der Peak-Leistung einspeisen will eine Einspeiseregelung installieren (teuer) was praktisch dazu führt, dass fast alle Anlage bei Einspeisung von 70% der Peak-Leistung abgeregelt werden. Be einer Ost/West-Anlage wie meiner kommt man nicht in die Verlegenheit, bei reinen Süd-Anlagen kann es aber sein, dass im Sommer mittags viel Strom abgeregelt statt eingespeist wird. Dieser Verlust lässt sich durch einen Speicher mit „peak shaving“-Funktion vermeiden. Dabei wird der Speicher vormittags prognosebasiert weniger geladen um zu Spitzenzeiten die überschüssige Energie zu speichern.

Bei Anmerkungen oder Fragen freue ich mich über Euren Kommentar! 
 
 
Nachträge Februar 2024/ Mai 2026:


 
2022 wurde der Speicher von Senec nach Bränden einzelner Geräte zeitwiese stillgelegt und zeitweise  gedrosselt. Im Nov. 22 wurden die beiden Speichemodule getauscht und ich nuitzte die Gelegenheit auf 10 kWh Kapazität aufzustocken.
 
Im August 2023 wurde der Speicher erneut, nach weiteren Zwischefällen bei anderen Kunden, auf 70% gedrosselt und ab Februar 2024 weiter auf 50%. Aktuell plant Senec den Speicher ab Sommer 24- Sommer 25 gegen ein V3-Modell mit LFP-Akku-Modulen auszutauschen.

Für die Ausfall- und Drosselungszeiträume wurde von Senec jeweils eine angemessene Entschädigung gezaht.

Im Oktober 2024 wurde schließlich unser Speicher V2.1 gegen eine V3 duo mit LFP-Akkus ausgetauscht. Statt 4 x 2,5 kWh sind jetzt nominell 2 x 5 kWh Module verbaut, die praktisch aber eher ein größere Kapazität von fast 12 kWh zu haben scheinen. Bei dem neuen Gerät wurde auch die maximale Abgabeleistung von 2,5 auf 3,8 kW erhöht, was den Fremdbezug in den Sommermonaten deutlich senkt. Bisher läuft der V3 duo LFP jetzt seit ca. 18 Monaten ohne Problem (wobei andere, günstigere Speicher mittlerweile eine bessere Leistung liefern.
Auf ein Umklemmen der PV-Anlage auf den internern Wechselrichter des V3 duo, was eine DC-Beladung über den Ost-String ermöglichen würde (bessere Wirkungsgrad), habe ich bisher verzichtet. Unser West-String überschreitet ohnehin den zulässigen Spannungsbereich des Senec WR.                 

Dienstag, 10. März 2020

Toyota Collection: Tag des Amateursports

Am Samstag den 7. März 2020 habe ich die Gelegenheit genutzt, mir ein erstes Mal die Toyota Collection in Köln anzuschauen.

 Die Halle liegt auf dem Toyoto Werksgelände in der Nähe des Autobahnkreuzes Köln West, ist gut zu erreichen, hat ausreichend Parkplätze und der Eintritt ist frei. In der Halle sind ausschließlich Toyota Fahrzeuge seit Mitte der 70er Jahre ausgestellt. Damit unterscheidet sich das Konzept deutlich von z.B. der Autostadt in WOB, wo versucht wird auch die Gesamtentwicklung des Automobilbaus zu zeigen. In Verbindung mit dem begrezten Zeitraum (ca.50 Jahre) ist damit das Spektrum sehr eingeschränkt.

Hallenübersicht
Neben den verschiedenen Serienfahrzeugen gibt es auch Rennsport-Fahrzeuge, Show-Cars und technsche Demonstratoren. 

Hier einige Beispiele:
Toyota 2000 GT von 1967
Jede Menge Corollas auf verschiednen Jahrgängen

IQ als Disco-Kugel




Toyota Prius als Schnittmodell










Schnitt durch Tank und Batterie - die elektrische Reichweite dieses Hybrids ist eben sehr begrenzt. (je nach BJ. oft nur etwas 2 km)





Rennwagen

























An den angebotenen Führungen habe ich mich nicht beteiligt. Es gab auf dem Werksgelände auch Fahrvorführungen mit entsprechend getunten Fahrzeugen, aber aus dem Alter in dem mich heulende Motoren, schleudernde Autos und stinkende Reifen faszinieren bin ich irgendwie raus...... vielleicht ist das auch schon etwas aus der Zeit gefallen.


Fazit:
Alles in Allem war es ein interssanter Besuch - für Begeisterung hätte es auf meiner Seite wohl mehr Interesse und Fan-sein an der Marke Toyota gebraucht.

Alle Bilder des Besuchs gibt es hier!

Samstag, 10. August 2019

Pentax Objektive: Umprogarmmierung SDM --> Stange


Mit der Einführung der Pentax K10d 2006 stellte Pentax eine Reihe von Objektiven vor, die sowohl an den Vorgängern über den kameraseitigen AF-Motor als an der K10d (und deren Nachfolgern) über den neuartigen SDM-Antrieb (Ultraschallmotor.. der erst nach Auslauf der entsprechenden Canon Patent möglich war) im Autofokus-Betrieb genutzt werden konnten.

Diese Objektive waren:

  • smc PENTAX-DA* 16-50 mm F2,8 ED AL [IF] SDM
  • smc PENTAX-DA* 50-135 mm F2,8 ED [IF] SDM
  • smc PENTAX-DA* 200 mm F2,8 ED [IF] SDM
  • smc PENTAX-DA* 300 mm F4 ED [IF] SDM
  •  
  • Beim PENTAX-DA*60-250 scheint die Umprogrammierung nicht zu funktionieren

Später Objektive hatten das PENTAX K-AF3 Bajonett, bei dem der mechanische Stangenantrieb über die Kamera entfiel

Leider entpuppte sich der verwendete SDM-Antrieb an den o.g. Objektiven als relativ störanfällig und eine Reparatur ist ziemlich kostspielig

Im Folgenden möchte ich zeigen, wie man auf relativ einfache Art das Objektiv-ROM so patchen kann, dass die Objektive trotz defektem SDM-Antrieb an aktuellen Pentax-Kamera über den Stangenantrieb im AF-Modus betrieben werden können.
  
WICHTIG: Für das Nachmachen schließe ich jegliche Haftung aus und Nachmachen erfolgt auf eigene Gefahr!!!


Der beschriebene Ablauf ist übrigens nicht auf meinen eigene Mist gewachsen, sondern wurde im Wesentlichen aus folgenden Youtube-Video übernommen:  https://www.youtube.com/watch?v=3_I6jgc-TT0


Für die Umprogrammierung benutze ich den Debug-Modus der Pentax K7, da dieser besonders einfach zu benutzen ist. Mit andern Kameras soll es auch Möglichkeiten geben, aber bei K01, K3 und K1 ist mir das bisher nicht gelungen.

Zuerst muß eine Datei mit dem Namen MODSET.474 erstellt werden.

In der Datei muß nur der Befehl [OPEN_DEBUG_MENU] stehen.

Diese Datei wird nun auf einer SD-Kare gespeichert, in der Pentax K7 eingelegt und die Kamera mit offener SD-Klappe eingeschaltet.

 
Durch mehrfaches betätigen der „nach oben“ Taste kommt man in das Developent Menu4




Mit dem Menüpunkt „LENS ROM DAT CAMERA => SD“, dem man mit OK bestätigt läßt sich das aktuelle Objektiv ROM auf der SD-Karte speichern.

Die Datei hat d.en Namen LENSEEP.LNS und kann am PC bearbeitet werden.

Bitte unbedingt eine Sicherungskopie der Datei anlegen, falls irgendetwas schief geht.

Die Datei auf dem PC mit dem Windows Editor öffnen.

 
SD-Karte wieder in die K7 einlegen und bei offener Klappe einschalten.

Mit dem Menüpunkt „LENS ROM DAT SD => CAMERA“, den man mit OK bestätigt, lässt sich das neue, gepatchte Objektiv ROM von der SD-Karte im Objektiv speichern.

FERTIG – nun wir das Objektiv bei allen aktuellen Pentax Kameras über den Stangen-Autofokus angesprochen. Der Antrieb ist zwar jetzt lauter, aber als kleiner Bonus ist dieser Antrieb bei einigen der Objektive schneller als der SDM-Antrieb.

Wenn man das gesicherte original ROM wieder auf das Objektiv zurückspiel, ist der SDM-Antrieb wieder aktiv (soweit er vorher nicht defekt war).