Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: implement PowerMeter pin config for serial interfaces #772

Merged
merged 1 commit into from
Mar 19, 2024

Conversation

schlimmchen
Copy link
Member

in your pin_mapping.json, add a powermeter object like this:

[
    {
        "name": "My Board",
        ...
        "powermeter": {
            "rx": <num>,
            "tx": <num>,
            "dere": <num>
        },
        ...
    }
]

the SML power meter requires the rx pin to be set. the SDM power meter requires the rx and tx pins are set. the "dere" pin pin is optional and if set, this pin controls the driver enable and receiver enable pins of the RS485 transceiver. the SDM library handles this pin.

closes #771.

in your pin_mapping.json, add a powermeter object like this:

[
    {
        "name": "My Board",
        ...
        "powermeter": {
            "rx": <num>,
            "tx": <num>,
            "dere": <num>
        },
        ...
    }
]

the SML power meter requires the rx pin to be set. the SDM power meter
requires the rx and tx pins are set. the "dere" pin pin is optional and
if set, this pin controls the driver enable and receiver enable pins of
the RS485 transceiver. the SDM library handles this pin.

closes #771.
@schlimmchen
Copy link
Member Author

schlimmchen commented Mar 18, 2024

@cerise21 Würdest du das bitte einmal testen? Firmware gibt's als Artefakte im PR Build Run, und die solltest du nun auch nehmen können, es sei denn du hast noch andere Anpassungen die ein Selbstkompilieren nötig machen?

@cerise21
Copy link

Ui, cool, danke für's Einbauen!
Klar, werde ich testen; wahrscheinlich heute Abend.

@cerise21
Copy link

Jawoll, super, die vorcompilierte Firmware läuft nun auch (mit angepasstem pinmapping.json) bei mir; alle Geräte, incl. Powermeter, sind in der Webapp eingebunden.

Was mir noch auf die Schnelle aufgefallen ist: Per POST an die API kann ich die DPL-Konfiguration nicht mehr ändern.
Der Aufbau des von api/powerlimiter/status gelieferten json hat sich geändert.
Aber wenn ich das gesamte json-Objekt an api/powerlimiter/config (hier mit geändertem 'upper_power_limit') zurückschicke, sollte das doch egal sein (?)
Muss man das jetzt anders machen, oder ist der API-Teil in https://github.com/helgeerbe/OpenDTU-OnBattery/commits/1daa406 noch nicht fertig?
Wenn ich das poste:
data={"enabled":true,"verbose_logging":false,"solar_passthrough_enabled":true,"solar_passthrough_losses":3,"battery_always_use_at_night":true,"is_inverter_behind_powermeter":true,"is_inverter_solar_powered":false,"inverter_serial":"0","inverter_channel_id":0,"target_power_consumption":50,"target_power_consumption_hysteresis":10,"lower_power_limit":20,"upper_power_limit":98,"ignore_soc":false,"battery_soc_start_threshold":50,"battery_soc_stop_threshold":20,"voltage_start_threshold":50,"voltage_stop_threshold":49,"voltage_load_correction_factor":0.001,"inverter_restart_hour":1,"full_solar_passthrough_soc":95,"full_solar_passthrough_start_voltage":88,"full_solar_passthrough_stop_voltage":100,"metadata":{"power_meter_enabled":true,"battery_enabled":true,"charge_controller_enabled":true,"inverters":{"19110542061717":{"pos":0,"name":"HM","poll_enable":true,"poll_enable_night":true,"command_enable":true,"command_enable_night":true,"type":"HM-1000/1200/1500-4T","channels":4}}}}
erhalte ich als Rückgabe:
{"type":"warning","message":"Failed to parse data!"}

@schlimmchen
Copy link
Member Author

Jawoll, super, die vorcompilierte Firmware läuft nun auch (mit angepasstem pinmapping.json) bei mir; alle Geräte, incl. Powermeter, sind in der Webapp eingebunden.

Super, vielen Dank für deine Mitarbeit!

Muss man das jetzt anders machen

Der JSON Payload ist sicherlich zu lang. Die WebApp schneidet den Knoten "metadata" raus beim Absenden des POST Request. Das solltest du auch tun.

Ich kann verstehen, wenn das zu Problemen führt. Das kann lästig sein für den ein oder anderen Anwendungsfall. Wenn das wichtig ist, dann müsste ich mir überlegen, wie die Metadaten in die WebApp kommen, ohne den bisherigen PowerLimiterConfig JSON payload zu hijacken.

Mh... Vielleicht sollte ich das besser? Du bist garantiert nicht der einzige, der den DPL mit HTTP POST konfiguriert?!

@schlimmchen schlimmchen merged commit cd339a3 into development Mar 19, 2024
10 checks passed
@schlimmchen schlimmchen deleted the sdm-powermeter-pin-config branch March 19, 2024 20:27
@cerise21
Copy link

Der JSON Payload ist sicherlich zu lang. Die WebApp schneidet den Knoten "metadata" raus beim Absenden des POST Request. Das solltest du auch tun.

Ah, ok, danke für die Erklärung; das Löschen von 'metadata' vor dem Wegschicken ist leicht gemacht, wenn man’s weiss.

@schlimmchen
Copy link
Member Author

das Löschen von 'metadata' vor dem Wegschicken ist leicht gemacht

Ist ab 054a677, also ab dem nächsten Release, nicht mehr nötig.

Copy link

This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 23, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Device Profile-Erweiterung für Powermeter (drahtgebunden, RS485, SDM630)
2 participants