Seite 2 von 4

Re: Rolladenaktor mit Script ansteuern

Verfasst: 11.02.2023, 18:03
von heidepower
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🙈

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:22
von heidepower
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

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:27
von Matsch
Glaube kaum, dass der Aktor mit einem string was anfangen kann, der braucht real-Zahlen!

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:36
von heidepower
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.

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:41
von MichaelN
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

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:45
von Baxxy
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

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 11:47
von Tyfys
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());

Re: Rolladenaktor mit Script ansteuern

Verfasst: 12.02.2023, 13:40
von Matsch
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ß?

Re: Rolladenaktor mit Script ansteuern

Verfasst: 11.04.2023, 18:46
von heidepower
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
}

Re: Rolladenaktor mit Script ansteuern

Verfasst: 11.04.2023, 18:54
von Baxxy
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?