Seite 2 von 4
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 10:25
von emil70
dtp hat geschrieben: ↑13.02.2018, 10:01
Ist eigentlich nicht weiter schwierig.
Du erzeugst ein Programm, dass bei Änderung oder Aktualisierung (je nachdem, was besser passt) von Aktor 1 das folgende Skript ausführt.
Code: Alles auswählen
! Zähler bei Skriptaufruf um eins erhöhen
! Version 1.0, Autor: dtp
! Namen der verwendeten Systemvariablen
string svCount = "SV Zähler"; ! Zähler, obligatorisch
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Variablendeklaration +++++
integer count;
object svObject; object svObjectList;
! +++++ Systemvariablen erzeugen bzw. falls vorhanden, auslesen +++++
if(!svCount){svCount = "SV Zähler";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svCount); svObject.DPInfo("Zähler"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
! +++++ Anzahl Einwürfe hochzählen +++++
count = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).Value().ToInteger();
count = count + 1;
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).State(count).ToString(0);
Dieses Skript legt dir automatisch die Systemvariable "SV Zähler" an, die du auch nach Belieben anders nennen kannst, und zählt sie bei jedem Aufruf um eins hoch. Beim allerersten Aufruf des Skripts wird zunächst nur die Systemvariable angelegt. Daher fängt es erst danach an zu zählen. Also nicht wundern.
Gruß,
Thorsten
Beten Dank für das script. Ich nutze es wie oft am Tag mein Heizlüfter im Gäste-WC an geht.
Jetzt such ich noch die Möglichkeit die Zahl der angelegten Variable in eine 2. Variable geschrieben wird und die Zahl der 1. Variablen auf 0 setzt
Dieses script soll dann z.B um 1 Uhr laufen
Ich würde halt gerne sehen, wie oft am Tag der Heizlüfter an gehet
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 14:01
von emil70
Bin jetzt schon mal weiter gekommen
so
Code: Alles auswählen
var AlteVar=dom.GetObject("Heizung-Gäste-WC Anzahl pro Tag");
var NeueVar=dom.GetObject("Heizung-Gäste-WC Anzahl pro Jahr");
var DummyVar=dom.GetObject("Dummy");
var AlterWert=AlteVar.Value();
NeueVar.State(AlterWert);
WriteLine(NeueVar.Value());
var DummyWert=DummyVar.Value();
AlteVar.State(DummyWert);
WriteLine(AlteVar.Value());
wird schon mal der Wert aus " Anzahl pro Tag" in "Anzahl pro Jahr" geschrieben und der Wert von " Anzahl pro Tag" auf 0 gesetzt. Dummy ist 0
Jetzt würde ich noch gerne den Wert von " Anzahl pro Jahr" immer mit dem Wert von " Anzahl pro Tag" addieren. So das ich auch sehen kann wie oft im Jahr der Heizlüfter an war
Hat da jemnd eine Idee zu??
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 14:51
von MichaelN
NeueVar+AlterWert
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 15:32
von emil70
Hatte schon so getestet
Code: Alles auswählen
var AlteVar=dom.GetObject("Heizung-Gäste-WC Anzahl pro Tag");
var NeueVar=dom.GetObject("Heizung-Gäste-WC Anzahl pro Jahr");
var DummyVar=dom.GetObject("Dummy");
var AlterWert=AlteVar.Value();
NeueVar.State(AlterWert);
WriteLine(NeueVar.Value());
var DummyWert=DummyVar.Value();
AlteVar.State(DummyWert);
WriteLine(AlteVar.Value()) + (NeueVar.Value());
Es wird aber nicht zusammen gezählt. So schreib es auch núr die AlteVar.Value
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 15:36
von MichaelN
. State ist der Befehl zum schreiben, nicht WriteLine.Keine Lust doch mal in die Dokumentation zu schauen?
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 15:42
von Baxxy
emil70 hat geschrieben: ↑08.11.2020, 14:01
Hat da jemnd eine Idee zu??
Klar.
So wie ich das verstehe möchtest du einen Tageszähler und einen Jahreszähler für die Schaltvorgänge deines Badlüfters. Der Tageszähler wird über dtp's Script gefüllt.
Statt nun aber Nachts um 1 die Tageswerte zu den Jahreswerten zu addieren würde ich beide Zähler-SysVars parrallel befüllen und nur den Tageszähler nachts zur gewünschten Uhrzeit resetten.
Deine Idee mit der festen Uhrzeit geht natürlich auch und könnte etwa so aussehen.
Code: Alles auswählen
object wc_tag = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Heizung-Gäste-WC Anzahl pro Tag");
object wc_jahr = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Heizung-Gäste-WC Anzahl pro Jahr");
!- Tageszähler zum Jahreszähler addieren und Summe speichern
wc_jahr.State(wc_jahr.Value() + wc_tag.Value());
!- Nur weitermachen wenn es der folgenden Uhrzeit entspricht
if(system.Date("%H:%M") == "01:00")
{
!- Tageszähler auf "0" setzen
wc_tag.State(0);
}
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 16:28
von emil70
@Baxxy
Danke dir
Habe es jetzt so getestet
Code: Alles auswählen
object wc_tag = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Heizung-Gäste-WC Anzahl pro Tag");
object wc_jahr = dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Heizung-Gäste-WC Anzahl pro Jahr");
!- Tageszähler zum Jahreszähler addieren und Summe speichern
wc_jahr.State(wc_jahr.Value() + wc_tag.Value());
!- Tageszähler auf "0" setzen
wc_tag.State(0);
Der Jahreszähler stand auf 37 , der Tageszähler auf 2
Ergebniss nach ausführen des script ist
Jahreszähler auf 372
Tageszähler auf 0
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 16:39
von Baxxy
emil70 hat geschrieben: ↑08.11.2020, 16:28
Ergebniss nach ausführen des script ist
Jahreszähler auf 372
Tageszähler auf 0
Ach herrje...
Dann schlage ich mal vor den Typ deiner SysVar "Heizung-Gäste-WC Anzahl pro Jahr" von "Text" in "Zahl" umzuändern.
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 17:43
von emil70
So geht es, danke sehr
Stand auf "Zeichenkette"
Bekommt man bei "Zahl" auch noch die .00 weg?
Re: Aktoren-Auslösung in Variable schreiben
Verfasst: 08.11.2020, 19:04
von Baxxy
emil70 hat geschrieben: ↑08.11.2020, 17:43
Bekommt man bei "Zahl" auch noch die .00 weg?
Nein, Typ Zahl zeigt immer 2 Nachkommastellen an. Ich schaue später nochmal ob das auch mit Textvariablen geht.