Hilfe bei Programm

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

oppey
Beiträge: 81
Registriert: 14.05.2020, 07:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 14 Mal

Hilfe bei Programm

Beitrag von oppey » 24.05.2023, 14:13

Hi,

Ich möchte anhand des Ladezustands der Batterie und anhand der Sonneneinstrahlung die drei Phasen des Heizstabes schalten.
Dabei soll die Batterie nicht unbedingt entladen werden. Natürlich soll der Überschuss genutzt werden.
Die SV sind vorhanden und funktionieren.
Je höher der Ladezustand der Batterie unter der Bedingung, dass die Sonne genug Leistung liefert, sollen die Phasen dazu geschalten werden und umgekehrt.

Danke und Gruß
Dateianhänge
Screenshot 2023-05-24 140818.png
Zuletzt geändert von oppey am 24.05.2023, 14:30, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9807
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Hilfe bei Programm

Beitrag von MichaelN » 24.05.2023, 14:21

Die Bedingungen von Block 3 sind auch in Block 2 erfüllt, daher wird er immer ausgeführt.

Oder was ist konkret dein Problem?

Tip: 3 Programme statt einem
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

oppey
Beiträge: 81
Registriert: 14.05.2020, 07:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 14 Mal

Re: Hilfe bei Programm

Beitrag von oppey » 24.05.2023, 14:36

hi,
klar das die Bedingungen im jeweiligen Block davor erfüllt sind. Die Leistung soll sich ja addieren.

Der Heizstab hat drei Wendel die jeweils 3kw haben und mit Schützen geschaltet werden.....

Ich würde gerne auf noch mehr Programme verzichten.

Benutzeravatar
robbi77
Beiträge: 13903
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 747 Mal

Re: Hilfe bei Programm

Beitrag von robbi77 » 24.05.2023, 15:00

Sobald ein WENN erfüllt ist (wahr) wird das zugehörige DANN ausgeführt und Feierabend. Und das ganze halt von oben nach unten …
Wenn also dein zweites WENN (Sonst wenn) erfüllt ist wird das DANN ausgeführt und das Programm ist „beendet“. Da ist egal wieviel noch danach kommt.

MichaelN
Beiträge: 9807
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Hilfe bei Programm

Beitrag von MichaelN » 24.05.2023, 15:08

oppey hat geschrieben:
24.05.2023, 14:36
hi,
klar das die Bedingungen im jeweiligen Block davor erfüllt sind. Die Leistung soll sich ja addieren.
Dann musst Du Deine Programmierung aber auf die Wünsche der WebUi ausrichten.
Also erst die höchsten Werte abfragen, dann die niedrigeren.
Und immer den Zustand des Heizstabs mit abfragen. Wenn der schon ein ist, dann muss er nciht nochmal eingeschaltet werden.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

oppey
Beiträge: 81
Registriert: 14.05.2020, 07:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 14 Mal

Re: Hilfe bei Programm

Beitrag von oppey » 25.05.2023, 06:26

Guten Morgen,

eigentlich bin ich der Meinung, dass ich gar nicht so verkehrt liege. Vielleicht verstehe ich auch nicht ganz was du meinst.
Habe jetzt nochmal verfeinert. Was fehlt sind die Bedingungen um die Phasen auch wieder auszuschalten.
Da bin ich dann mittlerweile soweit, dass ich wohl ein zweites Programm anlegen müsste...
Dateianhänge
Screenshot 2023-05-25 062550.png

Benutzeravatar
Henke
Beiträge: 1538
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 144 Mal
Danksagung erhalten: 312 Mal

Re: Hilfe bei Programm

Beitrag von Henke » 25.05.2023, 06:58

Ich würde das Programm nur zum Triggern verwenden und den Rest über ein Script erledigen. Macht weniger Kopfschmerzen.

Code: Alles auswählen

real BatStatus = dom.GetObject( "..." );
real PvPover = dom.GetObject( "..." );

boolean A1 = false;
boolean A2 = false;
boolean A3 = false;

if ( (BatStatus > 0.89 ) && (PvPover> 3000.0))
{
	A1 = true;
}
if ( (BatStatus > 0.93 ) && (PvPover> 6000.0) )
{
	A2 = true;
}
if ( (BatStatus > 0.95 ) && (PvPover> 9000.0)  )
{
	A3 = true;
}

if ( dom.GetObject( "A1...").Value() != A1 )
{
	dom.GetObject( "A1...").State(A1);
}
if ( dom.GetObject( "A2...").Value() != A2 )
{
	dom.GetObject( "A2...").State(A2 );
}
if ( dom.GetObject( "A2...").Value() != A2 )
{
	dom.GetObject( "A2...").State( A2 );
}
dom.GetObject( "...") natürlich die Werte eintragen der Geräte

MichaelN
Beiträge: 9807
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Hilfe bei Programm

Beitrag von MichaelN » 25.05.2023, 06:59

oppey hat geschrieben:
25.05.2023, 06:26
eigentlich bin ich der Meinung, dass ich gar nicht so verkehrt liege
Computer scheren sich nicht um Meinungen, da geht es nur um Logik. Vielleicht mal den Thread zur WebUI Logik durchgehen.

Trigger und Bedingungsprüfung sind unabhängig voneinander. Das heißt es wird nicht der Block ausgeführt, der das Programm getriggert hat, sondern der erste, der logisch wahr ergibt.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

MichaelN
Beiträge: 9807
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 711 Mal
Danksagung erhalten: 1656 Mal

Re: Hilfe bei Programm

Beitrag von MichaelN » 25.05.2023, 07:02

Henke hat geschrieben:
25.05.2023, 06:58
Macht weniger Kopfschmerzen.
Wohl wahr. Geht aber auch über WebUI Programm. Aber da muss selbst ich noch 5 Minuten drüber nachdenken :lol: zumindest wenn man es unbedingt in 1 Programm lösen muss.

Die 3 Blöcke in jeweils ein eigenes Programm und fertig.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

oppey
Beiträge: 81
Registriert: 14.05.2020, 07:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 14 Mal

Re: Hilfe bei Programm

Beitrag von oppey » 25.05.2023, 07:18

Henke hat geschrieben:
25.05.2023, 06:58
Ich würde das Programm nur zum Triggern verwenden und den Rest über ein Script erledigen. Macht weniger Kopfschmerzen.

Code: Alles auswählen

real BatStatus = dom.GetObject( "..." );
real PvPover = dom.GetObject( "..." );

boolean A1 = false;
boolean A2 = false;
boolean A3 = false;

if ( (BatStatus > 0.89 ) && (PvPover> 3000.0))
{
	A1 = true;
}
if ( (BatStatus > 0.93 ) && (PvPover> 6000.0) )
{
	A2 = true;
}
if ( (BatStatus > 0.95 ) && (PvPover> 9000.0)  )
{
	A3 = true;
}

if ( dom.GetObject( "A1...").Value() != A1 )
{
	dom.GetObject( "A1...").State(A1);
}
if ( dom.GetObject( "A2...").Value() != A2 )
{
	dom.GetObject( "A2...").State(A2 );
}
if ( dom.GetObject( "A2...").Value() != A2 )
{
	dom.GetObject( "A2...").State( A2 );
}
dom.GetObject( "...") natürlich die Werte eintragen der Geräte
wenn ich mit dem WebUI schon nicht zurecht komme sollte ich wahrscheinlich nicht noch mit scripten anfangen.....aber muss das sin etwa so aussehen?

Code: Alles auswählen

real BatStatus = dom.GetObject( "E3DC Batterie Status" );
real PvPower = dom.GetObject( "E3dc PV Power" );

boolean A1 = false;
boolean A2 = false;
boolean A3 = false;

if ( (BatStatus > 0.89 ) && (PvPower> 3000.0))
{
	A1 = true;
}
if ( (BatStatus > 0.93 ) && (PvPower> 6000.0) )
{
	A2 = true;
}
if ( (BatStatus > 0.95 ) && (PvPower> 9000.0)  )
{
	A3 = true;
}

if ( dom.GetObject( "A4.1 PV PH1").Value() != A1 )
{
	dom.GetObject( "A4.1 PV PH1").State(A1);
}
if ( dom.GetObject( "A4.2 PV PH2").Value() != A2 )
{
	dom.GetObject( "A4.2 PV PH2").State(A2 );
}
if ( dom.GetObject( "A4.3 PV PH3").Value() != A3 )
{
	dom.GetObject( "A4.3 PV PH3").State( A3 );
}

Antworten

Zurück zu „HomeMatic allgemein“