Klassisch elektrisch kann ich das, aufgrund der Kabelwege nicht darstellen.
Das spricht gegen deine einfache Idee borsti0 . ![]()
Klassisch elektrisch kann ich das, aufgrund der Kabelwege nicht darstellen.
Das spricht gegen deine einfache Idee borsti0 . ![]()
Soll ich einfach beim Dimmer + und - beim Kemo m150 DC als Pulse anklemmen wie ganz links auf dem Bild?
Nein. Der Shelly Dimmer 0/1-10V PM liefert eine analoge Spannung, die per Spannungsteiler an den 1-5V/DC Anschluss oder ohne Spannungsteiler an den 3-12V/DC Anschluss des M150DC zu führen ist.
Du solltest von mir auch eine Nachricht - die beiden Sprechblasen) oben rechts - erhalten haben.
Das gelingt folgendermaßen mit einem kleinen Skript. Es wird immer eine Latenzdauer zwischen Stromausfall und den Abschalten des Plus 1 liegen, bspw. 30s - konfigurierbar.
A) Ohne Nutzung von MQTT - eine Latenzdauer von 30s sei vorausgesetzt.
B) Mit Nutzung von MQTT - hier wirkt eine Latenzdauer von ca. 90s. Dafür ist eine dauerhafte Verbindung zwischen dem Plus 1 und dem MQTT Broker erforderlich. Dazu passt ein sehr einfaches Skript aus etwa 5 Zeilen.
Mit einem EM ab der zweiten Generation lassen sich Schedule Jobs (Zeitpläne) mit kürzeren Abständen von bspw. 5s nutzen, um kürzere Latenzen zu erreichen.
Grundsätzlich dachte ich an die Funktionsgrafik, aber auch Tabellen mit aktuellen Werten wären ok.
Dazu ist ein übergeordnetes, zentrales System zielführend.
Ich nutze dafür einen Raspberry Pi, auf welchem folgendes installiert ist - alles außer der Hardware ist kostenfrei.
Alternativ kann man auch ein fertiges System nutzen wie openHAB. Mir gefällt meine Lösung besser, weil ich diese als erheblich flexibler/anpassungsfähiger einschätze.
Die Hardwarekosten mit einem Raspberry Pi 4 liegen derzeit bei ca 92€, incl. USB SSD 250GB ca. 120€, Gehäuse ca. 12€ bis 17€ - gesamt somit ca. 135€. Monitor, Tastatur, Maus werden nicht gebraucht, weil dieses System über Fernzugriff gepflegt werden kann und sollte. Ob dir so etwas gefallen kann hängt davon ab, ob du dich damit beschäftigen möchtest oder ob dir dabei jemand helfen kann.
Einen geeigneten Flow kann ich bereitstellen, Datenbankabfrage und Grafana einrichten ist zusätzlich erforderlich, ggf. auch mit remote Unterstützung.
Die Grafiken der Cloud reichen nicht annähernd an ein solches System heran.
Für den Anfang kann auch ohne Datenbank und Visualisierung ausgekommen werden. Dann können die Daten in einer Textdatei abgelegt werden.
Vielleicht funktioniert auch ein Kemo 150 DC an zwei Kemo M028N. Wenn ja und du bereit bist, in zwei Leistungsregler zu investieren, wärst du auf der sicheren Seite und bräuchtest (vermutlich) keine Kühlung.
Damit würden zwei Heizelemente zugleich geregelt werden.
Ich täte zunächst alles mit nur einem Heizelement testen und dann weiter entscheiden. 3kW an einem Leistungsregler erfordert eine gute Kühlung des Reglers, der tatsächlich ein Steuergerät ist.
Ich nutze derzeit keinen BLU Button. Deshalb meine Frage zu deinem Skript in #5.
Welche Ausgaben erhältst du im Console Fenster, wenn du den BLU Button drückst? Beantworte diese Frage erst, wenn die unten, von mir später hinzugefügte, Änderung nicht funktionieren sollte!
Die Ursache liegt vermutlich in Zeile 70:
Hiermit kann bestenfalls die Methode "Switch.Toggle" funktionieren, weil zu "Swich.Set" die zweite Komponente im Parameter fehlt.
Konkret, wie ich bereits in #4 darlegte:
bzw.
Entsprechend ist die Komponente actions im CONFIG Objekt ungeeignet.
Dein Original:
actions: {
singlePush: "Switch.toggle", // Einfach-Klick: Gerät umschalten
doublePush: "Switch.set", // Doppel-Klick: Gerät einschalten
triplePush: "Switch.set", // Dreifach-Klick: Gerät ausschalten
longPush: "Switch.toggle" // Lang-Klick: Gerät umschalten
}
Folgendes könnte funktionieren.
Das Objekt CONFIG:
let CONFIG = {
bluButtonAddress: "b0:c7:de:c2:5d:dd", // MAC-Adresse des Shelly Blu Buttons
actions: {
singlePush: {method: "Switch.toggle", param: {id:0}}, // Einfach-Klick: Gerät umschalten
doublePush: {method: "Switch.set", param: {id:0, on:true}}, // Doppel-Klick: Gerät einschalten
triplePush: {method: "Switch.set", param: {id:0, on:false}}, // Dreifach-Klick: Gerät ausschalten
longPush: {method: "Switch.toggle", param: {id:0}} // Lang-Klick: Gerät umschalten
}
};
Dazu der korrigierte RPC Aufruf - in deinem bisherigen Skript Zeile 70
oder alternativ - optional mit print:
let action = CONFIG.actions[actionType];
print("Führe Aktion aus:", action);
Shelly.call(action.method, action.param);
Teste dies bitte mal und teile das Resultat mit!
Btw, der von der KI generierte Code ist teilweise interessant, obwohl ich anders code. Hier sind Suchen per Schleife in Ausdrücken versteckt, für mich etwas gewöhnungsbedürftig, aber offenbar nicht falsch. In diesem Sinne danke ich für deine (unbeabsichtigte) Anregung. ![]()
Ich darf auch noch etwas mitteilen, oder? ![]()
Von einem Freund kenne ich die Node-RED Erweiterung einer CCU 3, welche dort afaik Red-Matic heißt. Falls irgendwelche Dinge, bspw. wegen neuerer Shelly Firmware, nicht wie gewünscht funktionieren, kann ggf. diese Node-RED Erweiterung helfen.
Kann mir jemand sagen was ich falsch mache?
Ja. Du vertraust einer KI, ohne selbst geeignete Kenntnisse zu haben. Und offenbar liest du die sehr detaillierte Shelly API Dokumentation nicht. Letzteres mag zu Anfang etwas schwer "verdaulich" sein, ist jedoch für einen wenigstens halben Durchblick unvermeidbar. Wer sich einmal mit Ausdauer und einigen Versuchen durchgekämpft hat, findet relativ schnell die geeigneten Stellen zum Nachschlagen. Ohne Zeitinvestition keine Erkenntnisse.
Und nein, man braucht dazu nicht zwingend Programmierkenntnisse, da man sehr viel per HTTP Requests testen kann, siehe Beispiele in der API Dokumentation.
Hinweise
Zur Nutzung von Shelly BLU Geräten sind die Shelly Plus Geräte suboptimal, weil diese die Einbindung von BLU Geräten als Components nicht unterstützen und somit ein aufwändigeres Skript erforderlich ist. Ich täte deshalb versuchen, das Plus 1PM Gerät anderweitig einzusetzen und die betreffende Stelle mit einem Shelly 1PM mindestens der dritten Generation zu bestücken.
Damit ist ein Skript relativ leicht zu erstellen. Ich habe an anderer Stelle das Prinzip dargelegt:
Dort siehe Beitrag #6!
Statt eine MQTT Nachricht zu versenden, lässt sich an dieser Stelle leicht ein passender RPC Aufruf einbauen. Es folgt der RPC Aufruf zum einschalten, zum ausschalten ... on:true ... durch ... on:false ... ersetzen!
Ich bin dazu bereit, dir zum erreichen deines Ziels weiterzuhelfen. Dazu ist es zweckdienlich, dass du dich etwas eingehender mit der Shelly Materie beschäftigst.
1) Eigenverbrauch abdecken
2) Akku aufladen
Ich nutze eine Klein PV Anlage (Balkonkraftwerk) mit einem Anker E Speicher der vorletzten Generation. Damit kann ich den Eigenverbrauch nicht regeln. stoppeljody hat sich bisher nicht hinreichend genau zu seinem E Speicher geäußert, damit wir wissen/einschätzen können, ob sein E Speicher eine Regelung bietet. Somit stehen wir, oder ich zumindest, dbzl. im Nebel.
Aus seinem #1:
ZitatDas funktioniert auch richtig gut mit der Nulleinspeisung.
Dies legt deine, bosti0, Vorgabe/Annahme zwar nahe, erscheint mir aber nicht hinreichend eindeutig. Dazu müsste der TE einmal genau beschreiben, wie seine "Nulleinspeisung" im groben arbeitet. Ich investiere sehr ungerne meine Zeit in Dinge, die auf schwankendem Boden aufzusetzen sind.
Trotzdem vielen Dank für deine konstruktive Beteiligung.
Zur Zeitsteuerung:
Fall diese an deinem E Speicher auch Sonnenauf- und Sonnenuntergang, also felxibel/automatisiert zulässt, brauchst du nur, wenn überhaupt, relativ selten etwas zu ändern. Deine vorhandenen/geplanten Shelly können so etwas. Schau dir mal die Zeitplan-Einstellmöglichkeiten deines Pro 3 EM unter Schedules akribisch an, bei einem Glas Wein/Bier oder Tasse Kaffee
! Dort wirst du im Advanced Modus "Use sunset or sunrise offset" o.ä. finden. Damit holt sich der Shelly die Sonnenauf- und -untergangszeiten aus dem Internet (selbstverständlich muss er dazu online sein) und passt den Zeitplan täglich automatisch an. Solches ist auch für deinen E Speicher wünschenswert, aber vielleicht nicht vorhanden.
In dieser Frage steht und fällt der Automatisierungskomfort immer mit der vom E Speicher Hersteller programmierten Kommunikationsfähigkeit, worauf wir - du, ich und andere hier - keinen Einfluss haben.
Bloß wie mache ich das (Schaltplan) und was muß ich mir noch besorgen?
Na na, als gelernter Elektriker sollte das für dich doch wohl kein Problem sein. Die beiden zu besorgenden Teile hat borsti0 doch bereits aufgeführt. Der Shelly Dimmer 0/1 bis 10V Generation 3 muss selbstverständlich den M150 steuern, welcher die Phasenanschnittschaltung steuern muss. Genaueres ist den Betriebsanleitungen zu entnehmen, da ich/wir solche Geräte nicht haben.
Wer würde das Skript schreiben und was würde das kosten?
Da wird sich jemand finden, bspw. ich, allerdings nur unter der Bedingung, dass du selbst testen musst. Insbesondere bei Nichtfunktion musst du dann die Ausgaben im Console Fenster unterhalb des Skript Editierfensters mitteilen, damit der Skriptersteller daraufhin das Skript verbessern kann. Dazu brauchst du auch Stehvermögen, also nicht schnell aufgeben. Finanziell täte das selbstverständlich nichts kosten. Da ich keines deiner Geräte habe, könnte ich vermutlich nur schrittweise am Skript bis zum funktionieren arbeiten.
Ich habe bisher nicht auch nur annähernd ein hierfür geeignet Skript erstellt. Solches Situationen hatte ich aber immer wieder und konnte trotzdem so manches Mal ein funktionierendes Skript nach und nach liefern. Ich habe schlicht eine erheblich geringere Gerätevielfalt als viele Anfrager hier. Kreatives Schaffen ist nicht grundsätzlich auf eine passende Ausstattung angewiesen.
Falls sich hier jemand finden sollte, der eine solche angestrebte Anlage betreibt und skripten kann, ist dieser besser für dich geeignet als ich. Ich könnte dann vielleicht ein erstelltes Skript nachbessern.
Dann ist mir noch etwas eingefallen. Es muss auch klar sein das die E Speicher erst geladen werden sollen
und die E-Heizng soll keinen Strom von den Speichern bekommen.
Das ist ein anderes Thema. Dafür bist du mit deiner Konfiguration des E Speichers zuständig. Solange dieser Speicher nichts in dein Hausnetz abgibt, kann er ja nicht die E Heizung versorgen. Zusätzlich wäre festzustellen, in welchen Toleranzen die Nulleinspeisung arbeitet. Auf Grund dieser Toleranzen sollte es möglich sein, die E Heizung passend zu steuern - mit einem gewissen, kleineren Überschuss, welcher in das öffentliche Netz geht.
Ich könnte sonst in der App von den Speichern eine Zeit vorgeben ab wann die Strom
abgeben dürfen. Dann müsste ich die Zeit aber immer ändern. Je nach Sonnenaufgang und Untergang.
In deinem ersten Beitrag dieses Thread schreibst du von einer funktionierenden Nulleinspeisung. So etwas kann nur per Regelung und damit via Kommunikation mit einem messenden Gerät , wie Shelly Pro 3 EM, gelingen. Inwiefern ist dann die Zeitsteuerung des E Speichers notwendig? Nur dazu vielleicht, wann er überhaupt etwas abgeben darf?
Ja, bei einer Konfigurationsänderung der E Speicher Zeitsteuerung ist auch das aktive Zeitintervall für den Dimmer anzupassen. Bei Verwendung von Sonnenauf- und Sonnenuntergang sollte dies aber relativ selten erforderlich sein. Unter Umständen und falls erforderlich könnte ich dafür eine unterstützende Webseite zusammenstellen, mit welcher du eine solche Zeitsteuerung für den Dimmer leichter anpassen könntest. So etwas gelingt aber auch per WebUI unter Schedules auf relativ einfache Weise.
Ich glaube nun bald das das alles viel zu kompliziert ist.
Mit dieser Einstellung solltest du erst gar nicht beginnen und alles für Geld in Auftrag geben, als, pardon und in aller Freundschaft, dummer Konsument. Ohne Elan und Bereitschaft, sich auf neues einzulassen, geht so etwas halt nicht.
das umfangreiche Script
Das ist kein "umfangreiches " Skript und kann auch nicht als solches bereits funktionieren. Diese Zeilen sind nur eine kurze Sequenz, welche in einem funktionalen Skript einzubauen wäre.
Liest du den Wert einfach nur auf dem WebUI oder App ab oder soll der Wert irgendwie verarbeitet bzw. an anderer Stelle angezeigt werden?
Ich versuche, wieder in das Thema zu gelangen und bitte darum, mich bei Irrtümern zu korrigieren.
Ingo2000 schreibt in #1:
ZitatWichtig für mich wäre, dass ich folgende Werte in einer Ansicht habe:
- PV-Produktion
- Netzbezug/-einspeisung
- Aktueller Verbrauch
- Batteriestatus (Lade-/Entladeleistung)
Ich muss an Hand der Daten vom Wechselrichter interpretieren, da ich nicht testen kann.
1. Die PV-Produktion: Body.Data.327680.channels.Power_PV_Sum
2. Die Einspeisung des Wechselrichters in das Hausnetz: Body.Data.327680.channels.Power_P_Generate
Der Netzbezug bzw. die Netzeinspeisung ergibt sich aus den Daten des Shelly Pro 3 EM.
3. Abfrage per http://<IP Adr. des Pro 3 EM>/rpc/EM.GetStatus?id=0
Response.total_act_power
negativer Wert -> Netzeinspeisung, positiver Wert -> Netzbezug
Hierbei tritt der Speicher als Verbraucher auf.
4. Der aktuelle Verbrauch ergibt sich aus der Summe der Wechselrichtereinspeisung (s.2.) und des Netzbezugs.
Der Batteriestatus kann ausschließlich, wenn möglich, dem Speicher entnommen werden und ist somit mit obigen Werten nicht generierbar. Ich sehe bisher keine Möglichkeit, automatisiert an den Batteriestatus heranzukommen. Falls eine Abfrage, ähnlich der des Wechselrichters, auch am Speicher möglich ist, können dessen Werte automatisiert erfasst werden. Bisher sehe ich dazu nichts.
Das zunächst als Zusammenfassung der Datenquellen - noch ohne Skript.
Ingo2000 Welche Ansicht stellst du dir vor? Als Tabelle mit aktuellen Werten? Als Funktionsgrafiken über der Zeit?
Das "Reagieren" bietet weniger Emoticons als ich manchmal nutzen möchte, bspw. dies
oder das
oder jenes
. Das Letzte wünsche ich mir zusätzlich. ![]()
Imho sind mehr Fragen beantwortet als von stoppeljody gestellt wurden.
Ich nutze bisher in den Shelly keine Sicherheitsschranke per Passwort, weil ich lieber kreativ ohne zusätzliche Schranke arbeite.
Ich las mal in diesem Forum, dass die Shelly eine sog. digest Authentifizierung nutzen. In der API Dokumentation könnte dazu mehr zu finden sein.
Auf die Schnelle kann ich deine Frage also nicht beantworten, aber so schlicht wird es wohl nicht gehen. Im URL sollte eh kein Passwort im Klartext stehen.
Auch nicht übel. Das erübrigt aber nicht das phasenselektive Schalten und täte die Schaltung noch komplexer machen.
Edit:
Wenn ich die entsprechenden Teile geschenkt bekäme, könnte ich mit der Entwicklung eines geeigneten Skripts beginnen. Eine VDI Zulassung/Zertifizierung müssten dann solche anstreben, die daraus ein Geschäft machen wollten. ![]()
![]()
![]()
Hätte ich solche Teile, täte ich damit kreativ experimentieren und könnte vermutlich eine Lösung anbieten. Eine solche Lösung wäre vielleicht nur per Skript möglich. Mehr kann ich dazu leider nicht beitragen.
Das ist die bestmöglichste Nachfrage. ![]()
Etwas Brainstorming ...
Genau genommen ließen sich durch mehrere definiert abgestufte Verbraucher, wie sie Thomas favorisiert, und Beschaltungen eine relativ fein abgestimmte Steuerung implementieren. Die Messdaten liegen vor. Neben der erhöhten Investition in Sicherheit, könnten bspw. Schütze zu jedem der Verbraucher jede Phase, die beiden anderen ausschließend, schalten.
Der Rest ist eine "KI", die bspw. minütlich die optimale Verteilung ermittelt und auf Grund derer die Phasen zu den drei Verbrauchern schaltet. Dazu wären SSR allerdings die bessere Wahl. Ob es solche mit hinreichender Spannungsfestigkeit gibt, weiß ich nicht. Und der VDI hätte sicher auch etwas gegen diese Idee ... ![]()
Aha, das dürfte in der Konfiguration nicht gelingen. Falls hier ausschließlich die Anzeige interessiert und der Wert nicht verarbeitet werden soll, könnte es mit einem recht komplexen Ausdruck vielleicht gelingen.
In einem Skript und einer von dort zu sendenden (MQTT) Nachricht ginge es so: (nach Experimenten mit einem Plus Uni)
// Component Voltmeter, muss ggf. durch anderen key/type ersetzt werden - id ggf. ebenfalls
let x = Shelly.getComponentStatus("Voltmeter", 100").xvoltage; // Wert nach konfiguriertem Ausdruck holen
x = Math.round(x); // kann entfallen, wenn im konfigurierten Ausdruck bereits gerundet wird
let t = Math.floor(x/1000); // Tausender
x = x - 1000*t; // Rest nach Abzug der Tausender
x = JSON.stringify(t) + '.' + JSON.stringify(x); // Zeichenkette mit Punkt
// Irgendwie senden, bspw. per MQTT
MQTT.publish(<dein Topic>, x);