WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von Bulli » 10.11.2017, 18:26

Hallo
Rega102 Sommerzeit.
rega102_sommer.JPG
Wenn man das so sieht kommen wir 2 Beiträge dazu wieder in den Kopf. Stichpunkt doppelt oder auch nicht mehr. Das ist aber nicht mal Spekulation sondern noch weniger, ergo k. A wie man das testen sollte.
viewtopic.php?f=26&t=35694 + viewtopic.php?f=26&t=36623&p=363695&hil ... i+#p363695



Gruß
Bulli

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von Black » 11.11.2017, 11:19

Die Timer werden intern nahc folgenden Kriterien betrachtet:
(das ist die Const Table aus der Javascript deklaration von functions.j_)

TM_ONCE = 8; // ttCalOnce
TM_PERIODIC = 4; // ttCalPeriodic
TM_DAILY = 9; // ttCalDaily
TM_WEEKLY = 5; // ttCalWeekly
TM_MONTHLY = 6; // ttCalMonthly
TM_YEARLY = 7; // ttCalYearly
TM_MON = 1;
TM_TUE = 2;
TM_WED = 4;
TM_THU = 8;
TM_FRI = 16;
TM_SAT = 32;
TM_SUN = 64;
TM_WEEKEND = 96;
TM_WORKDAYS = (TM_FRI * 2) - 1;

TM_PERIODIC war das was wir glauben, was keine Absturzprobleme macht.

Once und daily waren letztens die bösen (die anderen weiss ich net)

daraus müsste man nu ein Testscenario bauen, was ihm paar Fallen stellt.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
anli
Beiträge: 4326
Registriert: 10.06.2009, 14:01
Wohnort: 20 Min. nördlich von Hannover und bei Bremen
Hat sich bedankt: 1 Mal
Danksagung erhalten: 23 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von anli » 11.11.2017, 13:07

Ich habe mal vor ein paar Jahren ein Skript erstellt, welches alle Zeitmodule ausliest. Es ist nicht sehr schön, funktioniert jedoch. Vielleicht hilft es Euch, die Typen etc. zu erkennen? Programme und Zeitmodule können übrigens auch via Skript angelegt werden (was anderes macht die WebUI auch nicht. Das ist für automatisierte Tests vielleicht interessant.

Code: Alles auswählen

var z = 0;
var gesdp = 0;
var multi = 0;
var anzahlschleifendurchlaeufe = 50000; !unterschiedlich, je nach verwendeter firmware
while (z < 65535) {
	while (true)
  {
  	if (z < 65535) {
    	var tmObj = dom.GetObject(z);
      if (tmObj) {
		    if (tmObj.Type() == OT_CALENDARDP) {
		    	Write("ID " # tmObj.ID() # "; ");
		      if (tmObj.SunOffsetType() == sotNone) {
		        if ( (tmObj.CalDuration() == 0) && (tmObj.Time() == 0) ) {
		          Write("ganztägig");
		        }
		        else {
		          if (tmObj.CalDuration() != 0) {
		            Write("Zeitspanne ");
		            Write("von: " # tmObj.Time());
		            Write(" bis: " # tmObj.Time() # ", Dauer: " # tmObj.CalDuration());
		          }
		          else {
		            Write("Zeitpunkt ");
		            Write("von: " # tmObj.Time());
		          }
		        }
		      }
		      else {
		        if (tmObj.SunOffsetType() == sotAfterSunrise) {
		          Write("Zeitspanne: Astro Tag");
		        }
		        if (tmObj.SunOffsetType() == sotAfterSunset) {
		          Write("Zeitspanne: Astro Nacht");
		        }
		      }
		    
		      string sCalRep = tmObj.CalRepeatTime();  
		      integer iPeriod = tmObj.Period();
		      integer iRepVal = tmObj.CalRepetitionValue();
		      integer iWdays = tmObj.Weekdays();
		      integer iType = tmObj.TimerType();
		      
		      if (iType == ttCalOnce) {
		        Write("; Serienmuster: einmalig am " # sCalRep);  
		      }
		      if (iType == ttPeriodic) {
		        Write("; Serienmuster: Zeitintervall");
		        integer iSelIdx = 0;
		        string sVal = "";
		        sVal = iPeriod;
		        if ( (iPeriod / (3600)) > 0) 
		        {
		          if( (iPeriod % 3600) == 0 )
		          {
		            sVal = iPeriod / (3600);
		            iSelIdx = 0;
		          }
		          else
		          {
		            if( (iPeriod % 60) == 0 )
		            {
		              sVal = iPeriod / (60);
		              iSelIdx = 1;
		            }
		            else
		            {
		              sVal = iPeriod;
		              iSelIdx = 2;
		            }
		          }
		        }
		        else 
		        {
		          if ( (iPeriod / 60) > 0) 
		          {
		            if( (iPeriod % 60) == 0 )
		            {
		              sVal = iPeriod / (60);
		              iSelIdx = 1;
		            }
		            else
		            {
		              sVal = iPeriod;
		              iSelIdx = 2;
		            }
		          }
		          else 
		          {
		            sVal = iPeriod;
		            iSelIdx = 2;
		          }
		        }
		        Write(" alle " # sVal # " ");
		        if (iSelIdx == 0) {
		        	Write("Stunden");
		        }
		        if (iSelIdx == 1) {
		        	Write("Minuten");
		        }
		        if (iSelIdx == 2) {
		        	Write("Sekunden");
		        }
		      }
		      if (iType == ttCalDaily) {
		        Write("; Serienmuster: täglich");
		        if (iRepVal != 0) {
		          Write(", alle " # iRepVal #" Tage");
		        }
		        if (iWdays != 0) {
		          if (iWdays == 96) { Write(", an Wochenenden"); }
		          else { Write(", werktags"); }
		        }
		        if ((iRepVal == 0) && (iWdays == 0)) {
		          Write(", jeden Tag");
		        }
		      }
		      if (iType == ttCalWeekly) {
		        Write("; Serienmuster: wöchentlich");
		        if (iRepVal != 0) {
		          Write(", alle " # iRepVal # " Wochen am ");
		        }
		        else {
		          Write(", jede Woche am ");
		        }
		        if ( (iWdays & 1) != 0) { Write("Montag"); }
		        if ( (iWdays & 2) != 0) { Write(", Dienstag"); }
		        if ( (iWdays & 4) != 0) { Write(", Mittwoch"); }
		        if ( (iWdays & 8) != 0) { Write(", Donnerstag"); }
		        if ( (iWdays & 16) != 0) { Write(", Freitag"); }
		        if ( (iWdays & 32) != 0) { Write(", Samstag"); }
		        if ( (iWdays & 64) != 0) { Write(", Sonntag"); }
		      }
		      if (iType == ttCalMonthly) {
		        Write("; Serienmuster: monatlich");
		        if (iWdays == 0) {
		          Write("am "#iPeriod#". Tag jedes "#iRepVal#". Monats");
		        }
		        else {
		          Write("am "#iPeriod#". ");
		          integer iSelIdx = 0;
			        if ( (iWdays & 1) != 0) { Write(" Montag"); }
			        if ( (iWdays & 2) != 0) { Write(" Dienstag"); }
			        if ( (iWdays & 4) != 0) { Write(" Mittwoch"); }
			        if ( (iWdays & 8) != 0) { Write(" Donnerstag"); }
			        if ( (iWdays & 16) != 0) { Write(" Freitag"); }
			        if ( (iWdays & 32) != 0) { Write(" Samstag"); }
			        if ( (iWdays & 64) != 0) { Write(" Sonntag"); }
		          Write(" jedes "#iRepVal#". Monats");
		        }
		      }
		      if (iType == ttCalYearly) {
		        Write("; Serienmuster: jährlich");
		        if (iWdays == 0) {
		          Write("am "#iPeriod#"."#iRepVal#".");
		        }
		        else {
		          Write("am "#iPeriod#". ");
		          if ( (iWdays & 1) != 0) { Write(" Montag"); }
			        if ( (iWdays & 2) != 0) { Write(" Dienstag"); }
			        if ( (iWdays & 4) != 0) { Write(" Mittwoch"); }
			        if ( (iWdays & 8) != 0) { Write(" Donnerstag"); }
			        if ( (iWdays & 16) != 0) { Write(" Freitag"); }
			        if ( (iWdays & 32) != 0) { Write(" Samstag"); }
			        if ( (iWdays & 64) != 0) { Write(" Sonntag"); }
		        	Write(" im Monat "#iRepVal);
			      }
		      }
		      
		      string sBegin = tmObj.Begin();
		      string sEnd = tmObj.End();
		      integer iCalCount = tmObj.CalRepetitionCount();
		      Write("; Gültigkeitsdauer: "#sBegin);
		      if ( (iCalCount == 0) && (tmObj.EndSeconds() == 0) ) 
		      {
		        Write(", kein Enddatum");
		      }
		      else 
		      {
		        if (iCalCount == 0) 
		        {
		          Write(", endet am "#sEnd);
		        }
		        else 
		        {
		          Write(", endet nach"#iCalCount#" Terminen");
		        }
		      }
					WriteLine("");		      
        }
      	gesdp = gesdp + 1;
      }
      z = z + 1;
    }
  }
	
	multi = multi + anzahlschleifendurchlaeufe + 1;
	z = multi;
}
Write(gesdp # " DP gesamt");
Herzliche Grüße, anli

Alle Angaben ohne Gewähr und Haftung meinerseits. Verwendung der von mir zur Verfügung gestellten Downloads auf eigene Gefahr. Ich bitte um Verständnis, dass ich aus zeitlichen Gründen keine unaufgeforderte Hilfestellung per PN/Mail geben kann. Bitte allgemeine Fragen ins Forum stellen, hier können viele fähige User viel schneller helfen.

Homematic-Manager v2: einfaches Tool zum Erstellen von Direktverknüpfungen und Bearbeiten von Gerätenamen, -parametern etc. für Homematic und HomematicIP (Alternative diesbzgl. zur WebUI)

Einsteiger-Hilfeerweiterter Skript-Parser

mule
Beiträge: 1168
Registriert: 06.07.2010, 00:24
Hat sich bedankt: 3 Mal
Danksagung erhalten: 35 Mal

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von mule » 11.11.2017, 13:36

anli hat geschrieben: auch via Skript angelegt werden (was anderes macht die WebUI auch nicht. Das ist für automatisierte Tests vielleicht interessant.
Ja, dies wäre mein zweites Testszenario. Ich wollte zunächst extra über die GUI gehen, da dies wohl der am häufigsten vorkommende Anwendungsfall ist. Letztendlich kann es ja auch noch "Übertragungsbugs" von der GUI zur Scriptengine geben. Ist zwar eher unwahrscheinlich, da dies wohl schon längst aufgefallen wäre und kein spezielles Problem im Zusammenhang mit der Zeitumstellung wäre. Wenn man eh schon am Testen ist, kann man ja gleich "zwei Fliegen mit einer Klappe" erschlagen.
Aktuelle Projekte:
Direkter SMS-Versand und -Empfang über CCU2&Raspberrymatic ohne Cloud:
viewtopic.php?f=31&t=39483

Automower (G2) steuern über Homematic per WLAN:
viewtopic.php?f=31&t=7295

Benutzeravatar
jmaus
Beiträge: 9848
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von jmaus » 15.11.2017, 17:00

Hallo ,

nach weiteren Änderungen an ReGaHss gibt es nun eine weitere Betaversion (beta24) zum testen.

Verfügbar wie immer im OCCU Repository. Die darin vorgenommenen Änderungen können aus dem ChangeLog (siehe hier) herausgelesen werden.

Die Anpassungen die gegenüber der letzten hier benannten Version (beta23) vorgenommen habe lassen sich wie folgt zusammenfassen:
  • Bugfix: ReGa – Das Löschen von Systemvariablen die als Nutzerfavoriten hinzugefügt waren wurde nicht aus diesen Favoriten entfernt und konnten daher zu einem späteren Zeitpunkt zu Problemen führen (sogenannte 'Geister- oder Schläfervariablen').
  • Bugfix: ReGa – ToTime() auf einem time Objekt und Filename() auf einem xml Objekte lieferten falsche Datentypen zurück
Bei dieser Version würde ich darum bitten, erneut entsprechende Tests durchzuführen (vor allem bzgl. des Zeitumstellungsproblems) und mir Fehler/Hinweise/FeatureRequests zeitnah zukommen zu lassen. Dies soll helfen etwaige weitere Fehler aufzudecken und bis zur letztendlichen Integration in die nächste RaspberryMatic oder CCU2 Firmware diese noch ggf. zu beseitigen.

Bitte beachten, dass inzwischen das von hobbyquaker entwickelte Testframework für ReGaHss genutzt wird (siehe https://github.com/hobbyquaker/occu-test). Dieses erlaubt in sehr professioneller Art und Weise Testcases (sogar Zeitumstellungstests) automatisiert durchzuführen. Wenn hier jemand freie Ressourcen hat mögliche Testcases (auch ReGa-Skriptests sind möglich) mit zu entwickeln die wir da mit aufnehmen können (lediglich Javascript-KnowHow notwendig), dann bitte melden oder aber auch einfach hier mal ein paar ReGa-Skripte einstellen die als mögliche Testcases genutzt werden können um Funktionalität auf ihre Konsistenz hin zu überprüfen.

Um die neue Betaversion zu installieren / testen bitte einfach wie im ersten Beitrag in diesem Thread vorgehen und die Version über die existierende /bin/ReGaHss bzw. /bin/ReGaHss.community drüberinstallieren.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von Bulli » 20.11.2017, 17:13

Hallo
Rega 124 Sommer Winterzeit Test bei festen Timern kein Problem erkennbar. Bei Winterzeit laufen alle Timer normal.
rega124_sommer.JPG
Hier das komplette Log.
History(2).csv
(12.82 KiB) 64-mal heruntergeladen
Gruß
Bulli

Benutzeravatar
jmaus
Beiträge: 9848
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von jmaus » 20.11.2017, 17:55

Danke für die Bestätigung.

Allerdings habe ich auch nichts anderes erwartet, weil ja auch die inzwischen automatisierten Tests die ich dank hobbyquakers Arbeit für meine Weiterentwicklung an ReGaHss nutze (siehe https://travis-ci.org/hobbyquaker/occu-test bzw. https://github.com/hobbyquaker/occu-test) zeigen, dass die Timer korrekt funktionieren an den DST und Schaltjahrgrenzen.

Wenn Ihr allerdings noch mehr Testcases vorschlagen könnt und sogar ReGa-Skripte bereits dafür ausarbeiten könnt dann wäre das natürlich sehr hilfreich, weil das der Weiterentwicklung von ReGa wirklich sehr helfen würde!
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

mule
Beiträge: 1168
Registriert: 06.07.2010, 00:24
Hat sich bedankt: 3 Mal
Danksagung erhalten: 35 Mal

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von mule » 20.11.2017, 20:06

Wobei die Probleme:
a) das ein Einmaltimer für 03:05Uhr bereits um 03:00Uhr ausgeführt wird
b) Frequenztimer zum Zeitpunkt vor und nach der Umstellungszeit nicht ausgeführt werden
weiterhin bestehen.

Leider bin ich noch nicht wie geplant und gehofft zu weiteren Tests gekommen.
Aktuelle Projekte:
Direkter SMS-Versand und -Empfang über CCU2&Raspberrymatic ohne Cloud:
viewtopic.php?f=31&t=39483

Automower (G2) steuern über Homematic per WLAN:
viewtopic.php?f=31&t=7295

Benutzeravatar
jmaus
Beiträge: 9848
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von jmaus » 04.12.2017, 13:49

Hallo ,

für die die es interessiert ist heute eine neue ReGaHss beta (beta25) im OCCU Repository erschienen:

Verfügbar wie immer im OCCU Repository. Die darin von mir vorgenommenen Änderungen können aus dem ChangeLog (siehe hier) herausgelesen werden.

Die Anpassungen die gegenüber der letzten hier benannten Version (beta24) vorgenommen habe lassen sich wie folgt zusammenfassen:
  • Bugfix: ReGa – system.MaxIterations(max) Methode hinzugefügt die es erlaubt die maximale Anzahl von Iterationen von while()/foreach() global zu setzen bzw. abzufragen.
  • Bugfix: ReGa – Alle zur falschen Konstantenliste hinzugefügten ID_XXXXX_MAX_COUNT Einträge wieder entfernt.
  • Bugfix: ReGa – Problem beseitigt bei dem das komplette Aufräumen der User Shared Objekte mehrere Neustarts benötigte.
Bei dieser Version würde ich darum bitten, erneut entsprechende Tests durchzuführen (vor allem bzgl. des Zeitumstellungsproblems) und mir Fehler/Hinweise/FeatureRequests zeitnah zukommen zu lassen. Dies soll helfen etwaige weitere Fehler aufzudecken und bis zur letztendlichen Integration in die nächste RaspberryMatic oder CCU2 Firmware diese noch ggf. zu beseitigen.

Wie auch die vorherige Version wurde diese Version mit dem von hobbyquaker entwickeltem Testframework getestet (siehe https://github.com/hobbyquaker/occu-test). Wenn hier jemand freie Ressourcen hat mögliche Testcases (auch ReGa-Skriptests sind möglich) mit zu entwickeln die wir da mit aufnehmen können (lediglich Javascript-KnowHow notwendig), dann bitte melden oder aber auch einfach hier mal ein paar ReGa-Skripte einstellen die als mögliche Testcases genutzt werden können um Funktionalität auf ihre Konsistenz hin zu überprüfen.

Um die neue Betaversion zu installieren / testen bitte einfach wie im ersten Beitrag in diesem Thread vorgehen und die Version über die existierende /bin/ReGaHss bzw. /bin/ReGaHss.community drüberinstallieren.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: WebUI/ReGaHss Beta für CCU2 & RaspberryMatic (2.29.x)

Beitrag von Cash » 07.12.2017, 17:06

Frau BadenPower hat geschrieben:...

Dann installiert die soeben erschienene Beta25 und führt unter Skript testen folgenden Code (mit ausdrücklicher Genehmigung von BadenPower) aus:

Code: Alles auswählen

integer lInt = 1;
system.MaxIterations(1);
while(lInt < 100000000)
{
  WriteLine(lInt);
  lInt = lInt + 1;
}
WriteLine("Ende");
und wundert euch kurz über die Ausgabe. :shock:

Danach viel Spass mit eurer WebUI und Ausführungen auf der CCU.
Da ich die Beta bei mir nicht installiert habe aber bisher nirgends eine Reaktion auf diesesn Code lesen konnte, dachte ich mir mal, ich poste es hier hin.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“