Rolladenaktor mit Script ansteuern

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: Rolladenaktor mit Script ansteuern

Beitrag von heidepower » 11.02.2023, 18:03

Hi, sorry

also mit dem script sollen meine Solarpanels an meinem Balkon mit Hilfe Linearmotoren bewegt werden.

Das script wird alle 10-15 min ausgeführt und bewegt sich dann immer 2% Schritte (deswegen mal 1.3).

Danke für den Tipp, daran wird es liegen, ich muss den Wert der in var x drin steht noch durch 100 teilen🙈

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: Rolladenaktor mit Script ansteuern

Beitrag von heidepower » 12.02.2023, 11:22

Muss in das script noch ein Befehle beigefügt werden, dass es ausgeführt wird?

Denn es wird nur in der Konsole mit "Ausführen" ausgeführt.
Führe ich das Programm unter "Status und Bedienung/Programme" aus geht das nicht.
Und automatisch alle 10min wird es auch nicht ausgeführt.
var x = dom.GetObject("sonne_elevation").Value() * (1.3 / 100); !Umwandlung des Sonnenstandwinkel in Prozent und in 2% Schritte begrenzt
var y = x.Round(2).ToString(2); !gerundet und auf eine Stelle nach dem Komma gekürzt

WriteLine(x);
WriteLine(y);

dom.GetObject("HM-LC-Bl1-FM papa5932af:1").DPByHssDP("LEVEL").State(y); !0-100% Wert übergabe an Linearmotor

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von Matsch » 12.02.2023, 11:27

Glaube kaum, dass der Aktor mit einem string was anfangen kann, der braucht real-Zahlen!

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: Rolladenaktor mit Script ansteuern

Beitrag von heidepower » 12.02.2023, 11:36

Aber warum funktioniert es wenn ich das Script in der Konsole ausführe? Ich sehe ja das der Linearmotor vom Aktor angesteuert wird.

Das Programm mit dem Script wird schon ausgeführt aber der Autor bekommt keinen wert übermittelt.

wie kommt du darauf das es ein String ist? der Befehl ToString() ist keine Umwandlung zu einem String.

MichaelN
Beiträge: 9684
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von MichaelN » 12.02.2023, 11:41

heidepower hat geschrieben:
12.02.2023, 11:36
der Befehl ToString() ist keine Umwandlung zu einem String
Und was soll "to string" sonst bedeuten? Vielleicht mal in der Doku nachlesen? Dich rettet da nur die automatische Typ Umwandlung. Vielleicht.
heidepower hat geschrieben:
12.02.2023, 11:36
Das Programm mit dem Script wird schon ausgeführt aber der Autor bekommt keinen wert übermittelt.
Irgendwie sehe ich den Screenshot nicht
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 +++

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von Baxxy » 12.02.2023, 11:45

heidepower hat geschrieben:
12.02.2023, 11:36
wie kommt du darauf das es ein String ist? der Befehl ToString() ist keine Umwandlung zu einem String.
Da sagt die Script Doku aber was anderes. :roll:

Egal, .ToString() kannst du eh weglassen da es den Aktor nicht juckt wie viele Nachkommastellen dranhängen.
(Er verdaut eh nur 2 die du ja mit .Round(2) schon korrekt hast)

Wenn das so im Script Testen läuft dann auch innerhalb eines Programmes.
Vorausgesetzt das der Dann-Pfad mit dem Script auch ausgeführt wird.

Ergo: Screenshot vom Programm zeigen

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von Tyfys » 12.02.2023, 11:47

dann lass dir auch mal den Variablentyp anzeigen:

Code: Alles auswählen

var x = dom.GetObject("sonne_elevation").Value() * (1.3 / 100); !Umwandlung des Sonnenstandwinkel in Prozent und in 2% Schritte begrenzt
var y = x.Round(2).ToString(2); !gerundet und auf eine Stelle nach dem Komma gekürzt

WriteLine(x);
WriteLine(y);
WriteLine(y.Type());
Gruß
Harry

Matsch
Beiträge: 5452
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 743 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von Matsch » 12.02.2023, 13:40

heidepower hat geschrieben:
12.02.2023, 11:36
der Befehl ToString() ist keine Umwandlung zu einem String.
Ja, nee, is klar.

Vermutet ja sicher auch keiner, dass "ToString()" was mit Umwandlung in einen String zu tun haben könnte, absurd.
Und warum Dokumentation lesen, wenn man es (besser) weiß?

heidepower
Beiträge: 66
Registriert: 26.12.2018, 20:32

Re: Rolladenaktor mit Script ansteuern

Beitrag von heidepower » 11.04.2023, 18:46

Hey Zusammen,

Hab ein Problem mit meinem Script. Der Rolladenaktor soll je nach SonnenWinkel in 10% Schritten fahren. Leider fährt er nicht wie gedacht bzw. gewollt.

z.b. Der SonnenWinkel ist 16° somit sollte er doch den Rolladenaktor 30% übergeben!? Aber er übergibt ihm 60%.

Hab ich ein Denkfehler oder haut das mit den logischen Verknüpfungen so nicht hin?

Code: Alles auswählen

var AlteVar=dom.GetObject("Sonne Elevation");
var NeueVar=dom.GetObject("SonnenWinkel");
var AlterWert=AlteVar.Value();
NeueVar.State(AlterWert);
WriteLine(NeueVar.Value());



if ( (SonnenWinkel >=2) && (SonnenWinkel <7) )				
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.00);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=7) && (SonnenWinkel <11) )		
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.10);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=11) && (SonnenWinkel <15) )							
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.20);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=15) && (SonnenWinkel <18) )					
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.30);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=18) && (SonnenWinkel <22) )				
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.40);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=22) && (SonnenWinkel <26) )		
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.50);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=26) && (SonnenWinkel <29) )							
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.60);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=29) && (SonnenWinkel <32) )					
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.70);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=32) && (SonnenWinkel <35) )						
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.80);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( (SonnenWinkel >=35) && (SonnenWinkel <39) )					
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(0.90);	!übergabe des Prozentwertes an den Rolladenaktor
}

if ( SonnenWinkel >=39 )					
{
 dom.GetObject("PV-Anlage Balkon Antrieb:4").DPByHssDP("LEVEL").State(1.00);	!übergabe des Prozentwertes an den Rolladenaktor
}

Benutzeravatar
Baxxy
Beiträge: 10847
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 610 Mal
Danksagung erhalten: 2229 Mal

Re: Rolladenaktor mit Script ansteuern

Beitrag von Baxxy » 11.04.2023, 18:54

Ist das das gesamte Script?

Die Scriptvariable "SonnenWinkel" ist nirgends deklariert.

Edit:
Was ich nicht verstehe...
Wieso liest du den Wert aus einer SysVar aus und schreibst ihn dann in eine andere SysVar?

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“