Wir wechseln das Forum am 14.11.24 auf die Forensoftware Discourse. Zwischen Montag Abend und Dienstag Nachmittag wird das Forum deaktiviert. Danach sind wir hoffentlich mit neuem Forum inkl. der vorhandenen Beiträge wieder am Start! Hier zum Forenbeitrag!
Im Folgenden die Code Snippets für ESPHome des Shinewifi-X, so umgeschrieben, dass es auch für eine Nulleinspeisung gehen sollte.
# Use three global variables to store the last three received power values globals: - id: power_t0 # curent power value type: int restore_value: no initial_value: '42' - id: power_t1 # power value one time step before type: int restore_value: no initial_value: '42' - id: power_t2 # power value two time steps before type: int restore_value: no initial_value: '42' - id: GrowattPower type: float initial_value: '0.0'
Folgende Sensoren anpassen (name: "${devicename} AcPower") bzw. hinzufügen:
sensor: ... - platform: modbus_controller name: "${devicename} AcPower" address: 40 register_type: "read" unit_of_measurement: W device_class: power icon: mdi:flash value_type: U_DWORD accuracy_decimals: 1 filters: - multiply: 0.1 on_value: then: - globals.set: id: GrowattPower value: !lambda 'return float(x);' ... - platform: homeassistant name: "Total Momentanleistung from Home Assistant" entity_id: sensor.momentanleistung_gefiltert # <<<<<<<<<<<<<<<<<<< Hier trägst Du den Sensornamen von deinem 'Hichi' Stromzähler ein on_value: then: - logger.log: level: DEBUG format: 'Power value changed from %d to %d Deziwatt [dW]' args: ['id(power_t0)', 'int(x*10.0)'] - globals.set: id: power_t2 value: !lambda 'return id(power_t1);' - globals.set: id: power_t1 value: !lambda 'return id(power_t0);' - globals.set: id: power_t0 value: !lambda 'return int(x*10.0);'
Jetzt die eigentliche Regelung (alle 10 Sekunden):
interval: - interval: 10s then: - lambda: !lambda |- ESP_LOGD("main", "Growatt AC Power: %f ", id(GrowattPower)); int16_t powerOffset = 500; // Export offset (-50 W) int16_t powerMax = 6000; // 6000 dW = 600 W (if Growatt MIC 600TL-X) static int16_t relOutputPower = 10; // Max output active power (0 - 100 %) // 10 % => ~60 W (if Growatt MIC 600TL-X) if ((id(power_t0) == id(power_t1)) && (id(power_t1) == id(power_t2))) // no change from power sensor for three samples => set inverter to 100 %, or whatever you want if you don't receive values from your Smartmeter { relOutputPower = 100; } else { relOutputPower = (id(power_t0) + id(GrowattPower)*10 + powerOffset) / powerMax; // integer divison if (relOutputPower < 20) relOutputPower = 20; // Minimum should be 20 % => ~120 W } ESP_LOGD("main", "Relative Output Power: %d percent", relOutputPower); esphome::modbus_controller::ModbusController *controller = id(growatt); uint16_t reg = 3; // Register: Max output active power (in %) modbus_controller::ModbusCommandItem setOutputPower_command = modbus_controller::ModbusCommandItem::create_write_single_command(controller, reg, relOutputPower); controller->queue_command(setOutputPower_command);
Moin!
Scheinbar hat Growatt das Design der ShineRFStick-X geändert.
Die Plantine deckt sich nicht mit den hier geposteten Abbildungen.
Gibt es Ansätze, wie dort vorzugehen ist ?
Gruß
P.S.: Sobald ich herausgefunden habe, wie ich Bilder poste, reiche ich sie nach 😉
Ich nehme alles zurück.
Ich Doofmann habe nicht gewusst, dass es sowohl Wifi-X, als auch RF-Stick-X gibt 🙈
Hatte mich schon gewundert warum da ein Funkmodul für 433MHz verbaut war .....
Also falscher Alarm...
Ich hab gerade meine Besitztümer um eine 3KW PV Anlage mit Growatt WR erweitet. Wie zum Henker kann ich die IP Adresse vom Shine-X Wifi Stick herausfinden?
Mit Fritzbox oder IPScanner bin ich schon gescheitert.
Ich möchte die Regelung hier nochmal ansprechen welche aus meiner Sicht in Verbindung mit einem SmartMeter Zähler ( Hichi ) wohl am besten funktioniert. Meine Idee ist jedoch den MIC 2000TL-X (ohne Batterie) immer auf 30% (oder weniger) zu halten bis der SmartMeter einen höheren Verbrauch ermittelt, also mehr als 600W. Bei der Umsetzung bräuchte ich da noch etwas Unterstützung in der Regelung.
Schon soweit erledigt, siehe weiter unten.
AcPowerOutput dynamisch entsprechend dem tatsächlichen Verbrauch.
Nächster Schritt wäre die Ansteuerung einer Heizung für Warmwasser um verfügbare DCPower dann zu nutzen wenn aktueller Verbrauch + Heizung die Leistung der Solaranlage nicht um mehr als 10 % übersteigt. Da habe ich noch keine Lösung gefunden um einen Powerswitch direkt mit z.B. curl zu steuern. Es sollte in etwa so funktionieren:
Hallo zusammen ich habe gestern Abend mal versucht die Version aus dem ersten Post mittels esphome zu Flaschen bekomme aber immer Fehlermeldungen. Zum Beispiel meckert er mir die substitutions an und er meckert über die gr Led in Zeile 42.
Ich habe es versucht auf einen nodemcuv3 zu Flashen (denke hier kommt der Led Fehler her).
Ist es mit dem Skript möglich es auf einem nodemcuv3
Leider habe ich bemerkt das ich noch ein Problem habe ich benutzte den IoBroker mit ESP Home hier funktionieren Numbers nicht. Deshalb benutze ich Mqtt. Die ausgelesenen Werte kommen an aber ich bekomme es nicht hin die Ausgangsleistung zu regulieren.
Ich müsste also den Wert per Mqtt schreiben leider bekomme ich das nicht hin. Einen Wert per Mqtt einlesen klappt aber nicht, auch habe ich versucht den Wert mit einem Schieberegler zu ändern aber hier meckckert er über ein falsches Format
number: - platform: modbus_controller name: "${devicename} Max Output Active Power" id: poweroutput address: 3 value_type: U_WORD min_value: 0 max_value: 100 entity_category: config step: 1 - platform: template name: "Power Output" id: "Power_Output" optimistic: true min_value: 0 initial_value: 100 max_value: 100 step: 1 set_action: then: - lambda: id(poweroutput) = x; sensor: - platform: mqtt_subscribe name: "mqtttest" id: mqtttest topic: the/topic
Das ist die Fehlermeldung
Compiling .pioenvs/esphome-growatt-01/src/main.cpp.o /opt/iobroker/iobroker-data/esphome.0/growatt.yaml: In lambda function: /opt/iobroker/iobroker-data/esphome.0/growatt.yaml:232:21: error: cannot convert 'float' to 'esphome::modbus_controller::ModbusNumber*' in assignment 232 | - lambda: id(poweroutput) = x; | ^ | | | float *** [.pioenvs/esphome-growatt-01/src/main.cpp.o] Error 1
Ich hoffe jemand kann mir helfen
@devil26 Dieses esphome yaml reizt mich sehr zum ausprobieren. Ich habe einen Stromzähler der Einspeise- und Verbrauchsleistung angibt. In Homeassistant habe ich mir einen kombinierten Sensor für die Momentanleistung erstellt. Da ich noch ein BHKW mit Stromproduktion besitze kommen bei mir natürlich auch negative Werte vor. Reicht es dafür einen weiteren edge case zu definieren? Wobei durch die Berechnung hier: relOutputPower=1 einer Momentanleistung von 0 Watt entspricht, oder? (Growatt MIC 1000TL-X)
if (relOutputPower < 1) relOutputPower = 0; // Minimum should be allways 0 %
So per Mqtt kann ich nun den wert steuern hier mein Code
- platform: mqtt_subscribe name: "mqtttest" id: mqtttest topic: the/topic on_value: then: - lambda: |- esphome::modbus_controller::ModbusController *controller = id(growatt); uint16_t reg = 3; // Register: Max output active power (in %) float value = id(mqtttest).state; uint16_t register_value = static_cast(value); modbus_controller::ModbusCommandItem setOutputPower_command = modbus_controller::ModbusCommandItem::create_write_single_command(controller, reg, register_value); controller->queue_command(setOutputPower_command);
Mal ne Frage:
ACPower scheint bei mir beim MOD10KTL-X irgendwie nur eine Phase zu sein, gibt es den Wert auch für die anderen drei Phasen bzw. einen Gesamtwert der Abgabe?
Mal ne Frage:
ACPower scheint bei mir beim MOD10KTL-X irgendwie nur eine Phase zu sein, gibt es den Wert auch für die anderen zwei Phasen bzw. einen Gesamtwert der Abgabe?