Hoymiles Speicher ms-a2 lässt nichts mehr ins Hausnetz wenn er voll ist?

Ich möchte noch mal den Faden aufnehmen....

Für den Fall, dass....
das BKW nicht am MS A2 angeschlossen ist und an einer Shelly PLUG S (oder andere) hängt (und im Sicherung-Schrank keine Shelly 3EM ist).
Der MS A2 direkte "alleine (ohne BKW)" an einer Dose angeschlossen ist (also ohne BKW aus dem Netzt laden und entladen könnte)

Dann könnte doch ein Skript im Shelly den MS A2 informieren/steuern (also direkt! keine Homeassist. oä), indem es das Laden bei bestimmten gemessen Leistungen des BKW (so zu sagen) einschaltet bzw. abschaltet und natürlich auch wieviel gelangen werden soll/darf.
(siehe YT ...im Video wird mit Shelly die 3em gemeint, die würde man ja dann nicht haben und die manuelle eingabe sollte über das Skript im Shelly PLUG S (oder andere) am BKW kommen)

Das wäre eine feien Lösung, vor allem würde das Problem von oben gelöst (so wie ich es verstanden habe).

Lohnt es sich hier weiter zu denken?
Hat das schon jemand versucht? (Also zu skripten!)
Oder Holzweg bzw. falsch gedacht?

1 „Gefällt mir“

Das sollte theoretisch so auch gehen. Der Shelly spricht aber "Java", der Speicher hat MQTT und keine lokale API. Daher geht dies ohne den Umweg über eine DTU, die die Kommunikation übernimmt nicht.

1 „Gefällt mir“

Hab mir das so (irgendwie) gedacht (allerdings nicht ausprobiert!):
Vielleicht kann mal jemand drüber schauen?
(Es ist noch nicht ganz rund)

---- <
let mqttTopic = "MSA-XXXXXXXXXX/power_ctrl/set";
let maxWatt = 800;
let interval = 5000; // Alle 5 Sek.

function sendPower() {
Shelly.call("Switch.GetStatus", { id: 0 }, function (res) {
let watt = res.apower;

// Begrenzen, invertieren und vareieren damit der MS A2 gleiche Kommandos nicht ignoriert
let loadPower = -1 * Math.min(watt, maxWatt);
let variation = 0.1 + Math.random() * 0.8;  // ergibt 0.1–0.9
variation = Math.round(variation * 10) / 10;
loadPower = Math.round(loadPower * 10) / 10 + variation;

// Debug-Ausgabe
print("Gemessene Leistung:", watt, "→ Gesendete MQTT-Leistung:", loadPower);

Shelly.call("MQTT.Publish", {
  topic: mqttTopic,
  message: loadPower.toString(),
  qos: 1,
  retain: false
});

});
}

Timer.set(interval, true, sendPower);


! Das Skript kann Fehler enthalten und unerwünschte Zustände hervorrufen, es ist nicht getestet und stellt nur eine Idee dar. !

(Muss man das so sagen, weil sonst irgendeine Blitzbirne das einfach abtippt, oder ist es unter uns so, das jeder klar denken kann?)

Über Verbesserungsverschläge oder wenn jemand sowas schon Aufprobiert hat, dann bitte eine Info, würde ich mich freuen.