Aktoren-Auslösung in Variable schreiben
Moderator: Co-Administratoren
-
- Beiträge: 9839
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 711 Mal
- Danksagung erhalten: 1666 Mal
Re: Aktoren-Auslösung in Variable schreiben
ToInteger und ToString(0) kombinieren
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 +++
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 +++
- Baxxy
- Beiträge: 11064
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 634 Mal
- Danksagung erhalten: 2293 Mal
Re: Aktoren-Auslösung in Variable schreiben
Code: Alles auswählen
!- Tageszähler zum Jahreszähler addieren und Summe speichern
wc_jahr.State(wc_jahr.Value().ToInteger() + wc_tag.Value().ToInteger()).ToString(0);
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 288
- Registriert: 02.12.2017, 13:47
- System: CCU
- Hat sich bedankt: 34 Mal
- Danksagung erhalten: 8 Mal
Re: Aktoren-Auslösung in Variable schreiben
Falls du mich meinst. Es sieht so aus
Code: Alles auswählen
!Heizung Gäste WC resetten
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().ToInteger() + wc_tag.Value().ToInteger()).ToString(0);
!- Tageszähler auf "0" setzen
wc_tag.State(0);
gruß emil70
-
- Beiträge: 139
- Registriert: 23.11.2013, 17:19
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 1 Mal
Re: Aktoren-Auslösung in Variable schreiben
Hi Emil,
da ich keine Ahnung von scripten habe:
- Ich habe wc_tag und wc_jahr als systemvariable angelegt, aber beim ausführen des Scripts passiert nichts.
- Ich frage mich auch, was der Auslöser sein soll, den Tageszähler auf 0 zu setzen?
- Bei dem ersten Script hat wenigstens der SV Zähler hochgezählt.
Was muss ich alles tun, damit das Schript läuft außer es in einem DANN Pfad auszuführen?
Gruß
Oli
da ich keine Ahnung von scripten habe:
- Ich habe wc_tag und wc_jahr als systemvariable angelegt, aber beim ausführen des Scripts passiert nichts.
- Ich frage mich auch, was der Auslöser sein soll, den Tageszähler auf 0 zu setzen?
- Bei dem ersten Script hat wenigstens der SV Zähler hochgezählt.
Was muss ich alles tun, damit das Schript läuft außer es in einem DANN Pfad auszuführen?
Gruß
Oli
-
- Beiträge: 14277
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 599 Mal
- Danksagung erhalten: 1527 Mal
Re: Aktoren-Auslösung in Variable schreiben
Logisch, die Variablen heißen ja auch "Heizung-Gäste-WC Anzahl pro Tag" und "Heizung-Gäste-WC Anzahl pro Jahr" und werden am Anfang eingelesen.
Das unterliegt doch Deinen Anforderungen. Zielführend wäre Mitternacht (also wenn eine neuer Tag beginnt) per Zeitmodul.
So macht man das aber. Scripte werden immer in einem Ausführungsblock eines Programms aufgerufen. So ist das System ausgelegt.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
-
- Beiträge: 9839
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 711 Mal
- Danksagung erhalten: 1666 Mal
Re: Aktoren-Auslösung in Variable schreiben
Das geziegte Skript ist aber bei weitem nicht vollständig. Wo wird denn der TAgeszähler befüllt? Wo und wie wird der Jahreszähler resettet? Und gibt es noch einen Jahrzenht-Zähler?
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 +++
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 +++
-
- Beiträge: 139
- Registriert: 23.11.2013, 17:19
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 1 Mal
Re: Aktoren-Auslösung in Variable schreiben
Ich habe nun die Variablen richtig angelegt, beim Ausführen des Scripts passiert aber immer noch nichts!
Deshalb finde ich JensMaus seine Scripte relativ Laien geeignet. Dort steht was man vorher genau wo anlegen muss und wo.
Ich teste und versuche mich vorher immer selber und wie gesagt das Script mit dem SV Zähler funktioniert auch, aber ich wollte auch einen Tageszähler und Jahreszähler einbauen und da bin ich gescheitert. Daher habe ich gefragt, ob Emil das funktionierende Script einstellen kann, aber mir kam es vor, wie wenn dort noch einiges fehlt.
Ich würde rein logisch behaupten, dass ich nicht das gleiche Script zum befüllen einer Variablen nehmen kann und das gleiche Script zum löschen des Tageszählers?!
Gruß
Oli
Deshalb finde ich JensMaus seine Scripte relativ Laien geeignet. Dort steht was man vorher genau wo anlegen muss und wo.
Ich teste und versuche mich vorher immer selber und wie gesagt das Script mit dem SV Zähler funktioniert auch, aber ich wollte auch einen Tageszähler und Jahreszähler einbauen und da bin ich gescheitert. Daher habe ich gefragt, ob Emil das funktionierende Script einstellen kann, aber mir kam es vor, wie wenn dort noch einiges fehlt.
Ich würde rein logisch behaupten, dass ich nicht das gleiche Script zum befüllen einer Variablen nehmen kann und das gleiche Script zum löschen des Tageszählers?!
Gruß
Oli
-
- Beiträge: 288
- Registriert: 02.12.2017, 13:47
- System: CCU
- Hat sich bedankt: 34 Mal
- Danksagung erhalten: 8 Mal
Re: Aktoren-Auslösung in Variable schreiben
Ich lasse im 1 Programm die Variable
Code: Alles auswählen
Heizung-Gäste-WC Anzahl pro Tag
Code: Alles auswählen
! Zähler bei Skriptaufruf um eins erhöhen
! Version 1.0, Autor: dtp
!https://homematic-forum.de/forum/viewtopic.php?f=19&t=42153&p=419045&hilit=variable+hochz%C3%A4hlen#p419045
! Namen der verwendeten Systemvariablen
string svCount = "Heizung-Gäste-WC Anzahl pro Tag"; ! 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 = "Heizung-Gäste-WC Anzahl pro Tag";}
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);
Code: Alles auswählen
!Reset des Wertes von Heizung-Gäste-WC Anzahl pro Tag und Aktualisierung von Heizung-Gäste-WC Anzahl pro Jahr
!https://homematic-forum.de/forum/viewtopic.php?f=19&t=42153&p=617270#p617270
!
!Heizung Gäste WC resetten
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().ToInteger() + wc_tag.Value().ToInteger()).ToString(0);
!- Tageszähler auf "0" setzen
wc_tag.State(0);
gruß emil70