Einschaltzeit bei "Stromstoß" messen
Moderator: Co-Administratoren
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Du sollst ja nicht die Länge des Stromstoß messen, sondern die Zeitspanne dazwischen.
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: 83
- Registriert: 06.02.2015, 21:32
- System: CCU
- Wohnort: Niedersachsen
- Hat sich bedankt: 5 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Könnt ihr mir denn bei so einem Skript helfen?
Ich bin nicht der Programmier-Guru
DANKE!!!
- GEVJan
- Beiträge: 101
- Registriert: 28.04.2021, 18:40
- System: CCU und Access Point
- Wohnort: Köln
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 16 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Such mal nach der Script-Dokumentation und lies sie aufmerksam.
Dann könntest du z. B. aus Alchys Auslösescript den Teil mit dem Zeitstempel "rausklauen" und dir danach den Rest selber zudammen bauen.
Wird ne Zeit dauern, aber danach bist du schlauer und es fühlt sich einfach mega an das selber geschafft zu haben!
Gruß Jan
Dann könntest du z. B. aus Alchys Auslösescript den Teil mit dem Zeitstempel "rausklauen" und dir danach den Rest selber zudammen bauen.
Wird ne Zeit dauern, aber danach bist du schlauer und es fühlt sich einfach mega an das selber geschafft zu haben!
Gruß Jan
CCU3 mit Raspberrymatic -> Eingebunden: HUE-Bridge, Tasmota-Sonoffs, Alexa, Open Weather Map, Tasker, LG-TV
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Das Betriebsstunden Zähler Skript sollte sich noch viel leichter anpassen lassen.
Aber dafür bräuchte man mehr input.Welches Skript wird derzeit verwendet, welche Kanäle werden angesteuert, ggf ein einfacher Programm Ablauf Plan.
Aber dafür bräuchte man mehr input.Welches Skript wird derzeit verwendet, welche Kanäle werden angesteuert, ggf ein einfacher Programm Ablauf Plan.
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: 83
- Registriert: 06.02.2015, 21:32
- System: CCU
- Wohnort: Niedersachsen
- Hat sich bedankt: 5 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Derzeit mache ich das über ein CUXD-Wrapper-Device.
Der Zähler läuft, sobald das HmIP-MOD-OC8 (also die Seriennummer dessen) auf Kanal 13 eingeschaltet wird.
Auslesen kann ich die Betriebszeit dann im CUXD-Wrapper-Device über "Time_ON_Sum"
Der läuft aber eben nur, solange der Ch.13 auch "an" ist.
Derzeit also fast ohne Skript - bis auf das Auslesen selbst.
Mein Gedankengang war jetzt folgender (um wenig ändern zu müssen):
Ich lege auf der CCU 4 virtuelle Schalter an (N1, N2, N3, Stop) und schalte die jeweils per Programm ein, wenn ich einen Stromstoß beim OC8 auslöse.
Das OC8 trennt dann wieder, der virtuelle Schalter bleibt geschlossen.
Im CUXD-Wrapper-Device ändere ich nur die zu überwachende Seriennummer auf die des virtuellen Schalters (und ggf. dessen Kanal).
Ich konnte aber auf der CCU bis jetzt nur virtuelle Taster (keine Schalter) anlegen und habe auch noch nicht herausgefunden, ob dass das Wrapper-Device dann loggen würde > das müsste ich probieren.
Der Zähler läuft, sobald das HmIP-MOD-OC8 (also die Seriennummer dessen) auf Kanal 13 eingeschaltet wird.
Auslesen kann ich die Betriebszeit dann im CUXD-Wrapper-Device über "Time_ON_Sum"
Der läuft aber eben nur, solange der Ch.13 auch "an" ist.
Derzeit also fast ohne Skript - bis auf das Auslesen selbst.
Mein Gedankengang war jetzt folgender (um wenig ändern zu müssen):
Ich lege auf der CCU 4 virtuelle Schalter an (N1, N2, N3, Stop) und schalte die jeweils per Programm ein, wenn ich einen Stromstoß beim OC8 auslöse.
Das OC8 trennt dann wieder, der virtuelle Schalter bleibt geschlossen.
Im CUXD-Wrapper-Device ändere ich nur die zu überwachende Seriennummer auf die des virtuellen Schalters (und ggf. dessen Kanal).
Ich konnte aber auf der CCU bis jetzt nur virtuelle Taster (keine Schalter) anlegen und habe auch noch nicht herausgefunden, ob dass das Wrapper-Device dann loggen würde > das müsste ich probieren.
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 246 Mal
- Kontaktdaten:
Re: Einschaltzeit bei "Stromstoß" messen
Das ist viel zu kompliziert gedacht.7thguest hat geschrieben: ↑04.07.2022, 12:43Mein Gedankengang war jetzt folgender (um wenig ändern zu müssen):
Ich lege auf der CCU 4 virtuelle Schalter an (N1, N2, N3, Stop) und schalte die jeweils per Programm ein, wenn ich einen Stromstoß beim OC8 auslöse.
Das OC8 trennt dann wieder, der virtuelle Schalter bleibt geschlossen.
Im CUXD-Wrapper-Device ändere ich nur die zu überwachende Seriennummer auf die des virtuellen Schalters (und ggf. dessen Kanal).
Du könntest einfach 4 CUxD (90) State-Monitor Wrapper anlegen und den Status direkt über den Datenpunkt SET_STATE aus Deinem Script heraus setzen.
Dazu muss in den Geräteeinstellungen USE_HMDATAPT [ ] deaktiviert sein.
Viele Grüße
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
-
- Beiträge: 83
- Registriert: 06.02.2015, 21:32
- System: CCU
- Wohnort: Niedersachsen
- Hat sich bedankt: 5 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Das klingt gut - werde ich zu Hause sofort probieren.
Blöd, wenn man in dem Ganzen nicht so tief drin steckt und trotzdem (für mich schon) komplizierte Sachen machen will.
Danke schonmal…
- HM-Villa
- Beiträge: 512
- Registriert: 24.01.2022, 10:13
- System: CCU
- Hat sich bedankt: 29 Mal
- Danksagung erhalten: 120 Mal
Re: Einschaltzeit bei "Stromstoß" messen
@uwe111: Supereinfacher Betriebsstundenzähler, funktioniert prima. Danke, und danke für Dein tolles Addon. Ich sollte wirklich mal bei Gelegenheit (Zeit vorausgesetzt) die Doku von CUxD lesen. Das würde das (Programmier-)Leben erleichtern.
______________________________________________________
950 Kanäle in 201 Geräten und 39 CUxD-Kanäle in 5 CUxD-Geräten
950 Kanäle in 201 Geräten und 39 CUxD-Kanäle in 5 CUxD-Geräten
-
- Beiträge: 83
- Registriert: 06.02.2015, 21:32
- System: CCU
- Wohnort: Niedersachsen
- Hat sich bedankt: 5 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Hallo nochmal...
ich habe jetzt mit der Firma Speck telefoniert. Der Pumpe ist es also völlig egal, ob der Kontakt zur Drehzahlanwahl geschlossen bleibt oder nach dem Schließen wieder geöffnet wird. Wichtig ist einzig und allein, dass zur gleichen Zeit immer nur ein einziger Kontakt geschlossen sein darf.
Das erleichtert die Sache bezüglich des Betriebsstundenzählers ungemein.
Damit kann ich es handhaben wie bisher - 4 Wrapper-Devices und jedes tracked die Einschaltzeit eines Kanals vom HmIP-MOD-OC8. Problem gelöst.
Nun zu der Ansteuerung der Drehzahlen.
Ich habe ein Skript geschrieben, in dem ich den zur Verfügung stehenden Überschuss an Strom - abhängig von der derzeitigen Drehzahl der Pumpe - berechne und in 4 Systemvariablen schreibe. Das funktioniert auch soweit...
Nun will ich anhand dieser Werte in der GUI Programme erstellen, die darauf basierend dann die jeweilige Drehzahl der Pumpe schalten.
Das Programm für das Einschalten der Pumpe aus "Stop" heraus, würde so aussehen.
Passt das denn mit der "Logik" der Bedingungen?
wenn der Überschuss für N1>50 Watt aber kleiner als 50 Watt für N2 und kleiner 50 Watt für N3 ist, dann N1
wenn der Überschuss für N2>50 Watt aber kleiner 50 Watt für N3 ist, dann N2
wenn der Überschuss für N3>50 Watt ist, dann N3
Bei den letzten beiden Bedingungen prüfe ich natürlich dann die jeweils kleinere(n) Drehzahl(en) nicht mehr - das ergibt sich ja.
Passt das denn soweit?
Dann würde ich jetzt die anderen 3 Programme für das Umschalten der Drehzahlen aus N1, N2 und N3 heraus im selben Schema erstellen.
VIELEN DANK mal wieder!!!
PS: Ich denke mal (weiß es nicht), dass das Ganze mit der Anwahl der Drehzahlen sicher auch einfacher und ggf. resourcenschonender zu lösen ist. Nur leider mangelt es mir da an entsprechenden Kenntnissen.
Hier das Programm als Bild(er)
ich habe jetzt mit der Firma Speck telefoniert. Der Pumpe ist es also völlig egal, ob der Kontakt zur Drehzahlanwahl geschlossen bleibt oder nach dem Schließen wieder geöffnet wird. Wichtig ist einzig und allein, dass zur gleichen Zeit immer nur ein einziger Kontakt geschlossen sein darf.
Das erleichtert die Sache bezüglich des Betriebsstundenzählers ungemein.
Damit kann ich es handhaben wie bisher - 4 Wrapper-Devices und jedes tracked die Einschaltzeit eines Kanals vom HmIP-MOD-OC8. Problem gelöst.
Nun zu der Ansteuerung der Drehzahlen.
Ich habe ein Skript geschrieben, in dem ich den zur Verfügung stehenden Überschuss an Strom - abhängig von der derzeitigen Drehzahl der Pumpe - berechne und in 4 Systemvariablen schreibe. Das funktioniert auch soweit...
Code: Alles auswählen
! Verbrauch der Pumpe in den jeweiligen Drehzahlstufen
var p_n1 = 300; ! 300 Watt bei 1850rpm - 6 Kubik
var p_n2 = 550; ! 550 Watt bei 2400rpm - 8 Kubik
var p_n3 = 875; ! 875 Watt bei 2830rpm - 10 Kubik
! Variablen festlegen
var ueberschuss_gerechnet_N1;
var ueberschuss_gerechnet_N2;
var ueberschuss_gerechnet_N3;
var ueberschuss_gerechnet_Stop;
! Gemittelten Wert des SL-Überschuss auslesen
var ueberschuss_gemittelt;
ueberschuss_gemittelt = dom.GetObject("CUxD.CUX9000001:1.MEAN").State();
WriteLine("Überschuss gemittelt aktuell: " + ueberschuss_gemittelt);
! Status der Pumpe auslesen
var status_pumpe;
status_pumpe = dom.GetObject("Poolpumpe Stufe").State();
WriteLine("Status der Poolpumpe: " + status_pumpe);
if (status_pumpe == 0) {ueberschuss_gerechnet_N1 = ueberschuss_gemittelt - p_n1;
ueberschuss_gerechnet_N2 = ueberschuss_gemittelt - p_n2;
ueberschuss_gerechnet_N3 = ueberschuss_gemittelt - p_n3;
ueberschuss_gerechnet_Stop = ueberschuss_gemittelt;
WriteLine("Pumpe ist aus, gerechneter Überschuss bei N1: " + ueberschuss_gerechnet_N1);
WriteLine("Pumpe ist aus, gerechneter Überschuss bei N2: " + ueberschuss_gerechnet_N2);
WriteLine("Pumpe ist aus, gerechneter Überschuss bei N3: " + ueberschuss_gerechnet_N3);
WriteLine("Pumpe ist aus, gerechneter Überschuss bei Stop: " + ueberschuss_gerechnet_Stop);
dom.GetObject("Poolpumpe_Üb_N1").State(ueberschuss_gerechnet_N1);
dom.GetObject("Poolpumpe_Üb_N2").State(ueberschuss_gerechnet_N2);
dom.GetObject("Poolpumpe_Üb_N3").State(ueberschuss_gerechnet_N3);
dom.GetObject("Poolpumpe_Üb_Stop").State(ueberschuss_gerechnet_Stop);
};
if (status_pumpe == 1) {ueberschuss_gerechnet_N1 = ueberschuss_gemittelt;
ueberschuss_gerechnet_N2 = ueberschuss_gemittelt + p_n1 - p_n2;
ueberschuss_gerechnet_N3 = ueberschuss_gemittelt + p_n1 - p_n3;
ueberschuss_gerechnet_Stop = ueberschuss_gemittelt + p_n1;
WriteLine("Pumpe ist auf N1, gerechneter Überschuss bei N1: " + ueberschuss_gerechnet_N1);
WriteLine("Pumpe ist auf N1, gerechneter Überschuss bei N2: " + ueberschuss_gerechnet_N2);
WriteLine("Pumpe ist auf N1, gerechneter Überschuss bei N3: " + ueberschuss_gerechnet_N3);
WriteLine("Pumpe ist auf N1, gerechneter Überschuss bei Stop: " + ueberschuss_gerechnet_Stop);
dom.GetObject("Poolpumpe_Üb_N1").State(ueberschuss_gerechnet_N1);
dom.GetObject("Poolpumpe_Üb_N2").State(ueberschuss_gerechnet_N2);
dom.GetObject("Poolpumpe_Üb_N3").State(ueberschuss_gerechnet_N3);
dom.GetObject("Poolpumpe_Üb_Stop").State(ueberschuss_gerechnet_Stop);
};
if (status_pumpe == 2) {ueberschuss_gerechnet_N1 = ueberschuss_gemittelt + p_n2 - p_n1;
ueberschuss_gerechnet_N2 = ueberschuss_gemittelt + p_n2 - p_n2;
ueberschuss_gerechnet_N3 = ueberschuss_gemittelt + p_n2 - p_n3;
ueberschuss_gerechnet_Stop = ueberschuss_gemittelt + p_n2;
WriteLine("Pumpe ist auf N2, gerechneter Überschuss bei N1: " + ueberschuss_gerechnet_N1);
WriteLine("Pumpe ist auf N2, gerechneter Überschuss bei N2: " + ueberschuss_gerechnet_N2);
WriteLine("Pumpe ist auf N2, gerechneter Überschuss bei N3: " + ueberschuss_gerechnet_N3);
WriteLine("Pumpe ist auf N2, gerechneter Überschuss bei Stop: " + ueberschuss_gerechnet_Stop);
dom.GetObject("Poolpumpe_Üb_N1").State(ueberschuss_gerechnet_N1);
dom.GetObject("Poolpumpe_Üb_N2").State(ueberschuss_gerechnet_N2);
dom.GetObject("Poolpumpe_Üb_N3").State(ueberschuss_gerechnet_N3);
dom.GetObject("Poolpumpe_Üb_Stop").State(ueberschuss_gerechnet_Stop);
};
if (status_pumpe == 3) {ueberschuss_gerechnet_N1 = ueberschuss_gemittelt + p_n3 - p_n1;
ueberschuss_gerechnet_N2 = ueberschuss_gemittelt + p_n3 - p_n2;
ueberschuss_gerechnet_N3 = ueberschuss_gemittelt + p_n3 - p_n3;
ueberschuss_gerechnet_Stop = ueberschuss_gemittelt + p_n3;
WriteLine("Pumpe ist auf N3, gerechneter Überschuss bei N1: " + ueberschuss_gerechnet_N1);
WriteLine("Pumpe ist auf N3, gerechneter Überschuss bei N2: " + ueberschuss_gerechnet_N2);
WriteLine("Pumpe ist auf N3, gerechneter Überschuss bei N3: " + ueberschuss_gerechnet_N3);
WriteLine("Pumpe ist auf N3, gerechneter Überschuss bei Stop: " + ueberschuss_gerechnet_Stop);
dom.GetObject("Poolpumpe_Üb_N1").State(ueberschuss_gerechnet_N1);
dom.GetObject("Poolpumpe_Üb_N2").State(ueberschuss_gerechnet_N2);
dom.GetObject("Poolpumpe_Üb_N3").State(ueberschuss_gerechnet_N3);
dom.GetObject("Poolpumpe_Üb_Stop").State(ueberschuss_gerechnet_Stop);
};
! Ende
Das Programm für das Einschalten der Pumpe aus "Stop" heraus, würde so aussehen.
Passt das denn mit der "Logik" der Bedingungen?
wenn der Überschuss für N1>50 Watt aber kleiner als 50 Watt für N2 und kleiner 50 Watt für N3 ist, dann N1
wenn der Überschuss für N2>50 Watt aber kleiner 50 Watt für N3 ist, dann N2
wenn der Überschuss für N3>50 Watt ist, dann N3
Bei den letzten beiden Bedingungen prüfe ich natürlich dann die jeweils kleinere(n) Drehzahl(en) nicht mehr - das ergibt sich ja.
Passt das denn soweit?
Dann würde ich jetzt die anderen 3 Programme für das Umschalten der Drehzahlen aus N1, N2 und N3 heraus im selben Schema erstellen.
VIELEN DANK mal wieder!!!
PS: Ich denke mal (weiß es nicht), dass das Ganze mit der Anwahl der Drehzahlen sicher auch einfacher und ggf. resourcenschonender zu lösen ist. Nur leider mangelt es mir da an entsprechenden Kenntnissen.
Hier das Programm als Bild(er)
Zuletzt geändert von 7thguest am 05.07.2022, 15:51, insgesamt 1-mal geändert.
-
- Beiträge: 9679
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 700 Mal
- Danksagung erhalten: 1626 Mal
Re: Einschaltzeit bei "Stromstoß" messen
Bitte Programme als Screenshot direkt in den Beitrag laden. Das erhöht die Wahrscheinlichkeit massiv, dass die sich auch jemand anguckt.
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 +++