nachdem bereits vor einigen Tagen von eQ3 eine Betaversion von WebUI (ReGaHss) für RaspberryMatic zur Verfügung gestellt worden ist und diese auch in die neueste Version von RaspberryMatic Einzug gehalten wurde heute auch eine Version davon für die CCU2 zur Verfügung zu stehen (siehe https://github.com/eq-3/occu/tree/maste ... WebUI-Beta).
Laut dort verfügbarem ChangeLog beinhaltet diese Version die folgenden Bugfixes und Enhancements:
- Bugfix: Aufheben der max. 200 Skriptvariablen Limitation (siehe hier).
- Bugfix: Reparatur der bekanntermaßen defekten ReGa Timer Funktionalität die gerade die Nutzung von regelmäßigen Intervaltimern < 15 min unnutzbar machte (siehe hier).
- Bugfix: falsche Time format Ausgaben (siehe hier)
- Bugfix: Aufheben der max. 100KiB Limitation für ReGa-Skripte
- Bugfix: Abstürze/Speicherfehler beim Beenden/Neustart von ReGaHss/WebUI
- Bugfix: Crashes beim automatischen Speichern der Konfiguration beim Beenden/Neustart
- Bugfix: Race Conditions die zu möglichen Abstürzen führen konnte
- Bugfix: Fehlerausgaben für '11622' Problem zu INFO level verschoben und neue "ScriptRuntimeError" Ausgabe mit Ausgabe des verursachenden Quellcodes hinzugefügt
- Bugfix: '+' Operator kann nun für Strings verwendet werden
- Bugfix: ToInteger() nutzt nun eine optimiertere Konvertierung von Gleitkommazahlen in Integerzahlen
- Bugfix: '!' Operator für Kommentare kann nun alleine auf einer Zeile verwendet werden ohne das die nächste Zeile mit auskommentiert wird
- Bugfix: Entfernen von inkorrekten Thread-Fehlermeldungen beim Beenden von ReGaHss
- Bugfix: Unerlaubte Funktionsaufrufe (z.B. .ToInteger() für ein 'object') erzeugen nun korrekterweise eine Fehlermeldung statt in undefinierter Weise andere Funktionen aufzurufen (z.B. o.ToInteger() und o.BuildLabel() gaben das selbe Ergebnis für eine Variable vom type 'object').
- Bugfix: xmlrpc.ActivateLinkParamset() führt nicht mehr zu einem Absturz von 'rfd'
- Bugfix: xmlrpc.ActivateLinkParamset() akzeptiert nun entsprechend der XMLRPC Dokumentation einen zusätzlichen optionalen parameter für 'long_press'
- Bugfix: Alle Methoden des xmlrpc Namespace prüfen vor ausführen eines XMLRPC calls die korrekte Anzahl an übergebenen Parametern
- Bugfix: Der /bin/hm_startup script konnte mitunter nicht korrekt beim Starten von ReGaHss ausgeführt werden. Durch eine eingeführte Verzögerung sollte dies nun funktionieren
- Bugfix: inkorrekte Funktionsaufrufe innerhalb while() und foreach() erzeugen jetzt eine entsprechende Fehlerausgabe
- Bugfix: Eine Anwendung der .AlDestMapDP() Methode auf ein AlarmTrigger Objekt gibt jetzt statt eines Fehlers eine Warnung im Syslog aus damit Entwickler auf notwendige Anpassungen hingewiesen werden.
- Bugfix: Falsch benannte ID_GW_CHANNEL konstante korrigiert
- Bugfix: system.Exec() kann nun ohne Fehlerausgabe ohne jegliche Parameter aufgerufen werden.
- Bugfix: dom.GetObject() Aufrufe mit Objektnamen die mit einer Zahl beginnen jedoch Zeichenketten sind funktionieren nun (siehe hier)
- Bugfix: Beseitigung von möglichen Abstürzen im Signalhandler von ReGaHss
- Bugfix: Beseitigung des 50-Zeichen Limits von Objektnamen (vor allem bei Nutzung von HmIP Geräte relevant)
- Bugfix: HM-Skript – '+' Operator gibt in Kombination mit Strings und anderen Datentypen falsche Ergebnisse zurück (siehe hier)
- Bugfix: WebUI - Speichern von großen Skripten dauert unverhältnismäßig lange (siehe hier und siehe hier)
- Bugfix: HM-Skript – Falsch benannter Identifier "ClendarDPs" in "CalendarDPs" umbenannt.
- Bugfix: HM-Skript – Inkonsistente Ausgaben bei Mehrfachnutzung von EnumTypeName() (siehe hier und siehe hier)
- Bugfix: HM-Skript – Control Character (z.B. "\t") erzeugten SyntaxError in Methodenaufrufen (z.B. string.Replace("\t", "TAB")), jedoch nicht in Variablendefinitionen.
- Bugfix: HM-Skript – "RulePRogramID" in "RuleProgramID" umbenannt.
- Bugfix: HM-Skript – "SINGLECOND" identifier in "SINGLECONDITION" umbenannt.
- Bugfix: ReGa – HTTPListener Initialisierung überarbeitet damit mehr als 10 parallele Listener Prozesse möglich werden
- Bugfix: ReGa - Fehler in XmlRpcDataType zu ISE variable Konvertierung behoben der dazu führte das gewisse integer abfragen fälschlicherweise in byte werte konvertiert wurden.
- Bugfix: ReGa – Inkonsistente Gleitkommazahlenrundung bei Nutzung von ToString(p) vs. Round(p) repariert.
- Bugfix: ReGa – WriteLine() Ausgaben von Gleitkommazahlen werde nun ungerundet ausgegeben um dem exakten Wert einer Variable näher zu kommen.
- Bugfix: ReGa – Problem repariert das bei Einsatz von Systemvariablen in Programmbedingungen es zu "CompatibleForCompare" Fehlern kam wenn der Typ der Systemvariable im Nachhinein angepasst wurde.
- Bugfix: ReGa – Bei Programmbedingungen mit Gleitkommazahle behafteten Dimmerwerten kam es zu weiteren "CompatibleForCompare" Fehlern.
- Bugfix: ReGa – Bei Nutzung von elseif() kam es zu mehrfachem Ausführen der alternativen Bedingungbranches.
- Bugfix: ReGa – Problem behoben das bei Übermittlung von Gleitkommazahlenwerten über das BINRPC Protokoll es zu numerischen Ungenauigkeiten kommt, sodass Sensorwerte (z.B. Dimmer) leicht ungenaue Werte lieferten.
- Bugfix: ReGa – Problem behoben das in Skripten mit Variablen die unvollständige html/xml tags beinhalten es zur Rückgabe eines nicht validen xml Responses kam und damit zu keinerlei Ausgabe im Skript Editor bzw. Skript test Fenster.
- Bugfix: ReGa - Die Nutzung von Trunc() gibt nun den selben Wert wie ToInteger() zurück. Durch Nutzung von Trunc(p) mit angäbe der Genauigkeit kann jedoch auf eine beliebige Genauigkeit gekürzt werden.
- Bugfix: ReGa – ToInteger() gibt nun eine Ganzzahl zurück die auf der selben Operation wie ToString() entsprechend gerundet wurde.
- Bugfix: ReGa – Nutzung von ToString() gibt wieder auf die sechste Nachkommastelle gerundete Gleitkommawerte zurück.
- Bugfix: ReGa – Nutzung von ToString(p) auf eine leere Zeichenkette gab einen falschen Wert zurück.
- Bugfix: ReGa – Zeichenketten, Listen- und Binäre Systemvariablen konnten in Programmbedingungen nicht mehr gesetzt werden.
- Bugfix: ReGa – Zeichenketten-basierte Systemvariablen konnten nicht mehr geleert werden.
- Bugfix: ReGa – Weiteres Problem mit Nutzung von elseif() behoben.
- Feature: ToString() Methode zu 'idarray' Datentyp hinzugefügt.
- Feature: Maximale Anzahl an Interationen für foreach()/while() auf 50000 gesetzt.
- Feature: Alle Datentypen (inkl. var, object, idarray) können nun via VarType() und Type() nach ihrem Variablentyp geprüft werden
- Feature: Konfigurationsmöglichkeit für die Erhöhung des HTTP Session Limits
- Feature: Mögliche Anpassung der Standardwerte für das intervalgetriebene speichern der WebUI Konfiguration geschaffen
- Feature: Implementierung von Funktionen zur Generierung von Zufallszahlen: system.Random(min, max), system.Srandom(val)
- Feature: Implementierung folgender gängiger Mathe-Funktionen für die Nutzung mit Gleitkommavariablen: Abs(), Mod(y), Min(y), Max(y), Exp(), Exp2(), Exp10(), Expm1(), Log(), Log2(), Log10(), Log1p(), Sqrt(), Cbrt(), Pow(y), Sin(), Cos(), Tan(), Asin(), Acos(), Atan(), Sinh(), Cosh(), Tanh(), Asinh(), Acosh(), Atanh(), Ceil(), Floor(), Trunc(p), Round(p)
- Feature: Implementierung folgender gängiger Mathe-Konstanten: M_E, M_LOG2E, M_LOG10E, M_LN2, M_LN10, M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_2_SQRTPI, M_SQRT2, M_SQRT1_2
- Feature: HM-Skript – Hinzufügen aller bekannter interner Enumtypen für EnumTypeName() Methodenausgabe.
- Feature: HM-Skript – Implementierung von UriEncode() und UriDecode() um einen String RFC3986 konform umzuwandeln (%xx).
- Feature: HM-Skript – Implementierung von ToUTF8 und ToLatin() um einen String in- bzw. von UTF8 zu konvertieren.
- Feature: HM-Skript - Implementierung mehrerer String Methoden – z.B. Replace(a,b), Trim(c), LTrim(c), RTrim(c), ToLower(), ToUpper(), StartsWith(), EndsWith(), Contains() (siehe hier und siehe hier)
- Feature: HM-Skript – Implementierung elseif() (siehe hier)
- Feature: HM-Skript - fehlende OT Konstanten hinzufügen (siehe hier)
- Feature: ReGa – Konfigurationsmöglichkeit für die Anzahl maximal paralleler HTTP Verbindungen
- Feature: HM-Skript – Nutzung der .ToString(p) Methode auch mit Zeichenketten die lediglich eine Gleitkommazahl beinhalten.
- Feature: HM-Skript – Nutzung von Shell Pipes "|", Redirections ">" und mehr als 9 Argumente in system.Exec() Aufrufen.
- Feature: HM-Skript – zusätzliche symbolische ID_XXXXXX Identifier für all konstanten ISE ids hinzugefügt (u.a. ID_GW_SYSALARM, ID_GW_SYSSERVICE)
- Feature: ReGa – Limitierung der ToString() Ausgabe von Gleitkommazahlen auf 15 Nachkommastellen (wie in Dokumentation angegeben) um eine benutzerfreundlichere Ausgabe / Vergleich zu ermöglichen.
- Feature: ReGa - Gleichheits (==, !=) und Differenzoperatoren (<, >) Nutzen nun einen Epsilon-basierten Vergleich (basierend auf DBL_EPSILON) um den Vergleich von Gleitkommazahlen an das Verhalten der WebUI basierten Vergleiche anzupassen und einen benutzerfreundlicheren Vergleich von Gleitkommazahlen in Skripten zu ermöglichen.
- Feature: ReGa – Implementierung von ToInteger(p) bei der man die Genauigkeit angeben kann auf der die Rundung durchgeführt wird bevor der ganzzahlige Wert bestimmt wird.
WARNUNG:
Als erstes sei hier angemerkt das nur erfahrene Nutzer die vor allem problemlos mit dem SSH Zugang und der Kommandozeile umgehen können die folgende Installation der Betaversion vornehmen sollten. Des Weiteren wird natürlich vorausgesetzt das ein vollständiges Backup der CCU2 existiert bevor die folgenden Anpassungen erfolgen. Auch sollte man sich natürlich vor Augen führen das man hier auf eine Betaversion setzt die ggf. unschöne Nebeneffekte mit sich bringen könnte bis zum kompletten Datenverlust (deshalb ja auch das Backup). Bitte also nicht mich oder die eQ3 Entwickler in irgendeiner Art dahingehend anfeinden das etwas in dieser Betaversion nicht so oder anders funktioniert als vorher. Sinn dieser Betaaktion ist eben mögliche Fehler in den Bugfixes zu finden bzw. weitere mögliche Bugfixes vorzubereiten (sofern es noch weitere dringende Bugs gibt in ReGaHss).
Installation:
Hat man die WARNUNG gelesen und verinnerlicht kann man wie folgt mit der Installation der Betaversion fortfahren:
- Sicherstellen das man die CCU/RaspberryMatic Firmware 2.29.x installiert hat (ältere Versionen werden nicht unterstützt).
- Erstellen eines Backups via WebUI und Einstellungen->Systemsteuerung->Sicherheit->Backup erstellen
- Freischalten des SSH Zugangs + Vergabe eines 'root' Passworts via WebUI und Einstellungen->Systemsteuerung->Sicherheit->SSH
- Einloggen in die CCU bzw. RaspberryMatic via SSH (entweder Putty oder Konsolen-SSH) mit Loginname "root" und den vorher vergebenen Passwort.
- Beenden eines laufenden ReGaHss via:
Code: Alles auswählen
killall crond; /etc/init.d/S70ReGaHss stop
- Mounten des Root-Filesystems im ReadWrite Modus:
Code: Alles auswählen
mount -o rw,remount /
- In Abhängigkeit des genutztes Systems (RaspberryMatic / CCU2) und der Firmwareversion wie folgt vorgehen:
- RaspberryMatic (2.29.x):
- Umbenennen der zu ersetzenden Dateien in *.bak Dateien (als Backup) via
Code: Alles auswählen
mv /bin/ReGaHss /bin/ReGaHss.bak mv /lib/libxmlparser.so /lib/libxmlparser.so.bak mv /lib/libXmlRpc.so /lib/libXmlRpc.so.bak
- Herunterladen/Installieren der Betaversion (bitte beachten, dass jeder 'wget' Befehl jeweils in einzelne Zeilen gehört):
Code: Alles auswählen
wget --no-check-certificate -O /bin/ReGaHss https://github.com/eq-3/occu/raw/master/arm-gnueabihf/packages-eQ-3/WebUI-Beta/bin/ReGaHss wget --no-check-certificate -O /lib/libxmlparser.so https://github.com/eq-3/occu/raw/master/arm-gnueabihf/packages-eQ-3/WebUI-Beta/lib/libxmlparser.so wget --no-check-certificate -O /lib/libXmlRpc.so https://github.com/eq-3/occu/raw/master/arm-gnueabihf/packages-eQ-3/WebUI-Beta/lib/libXmlRpc.so
- Korrektur der Dateipermissions:
Code: Alles auswählen
chmod a+rx /bin/ReGaHss /lib/libxmlparser.so /lib/libXmlRpc.so
- Umbenennen der zu ersetzenden Dateien in *.bak Dateien (als Backup) via
- CCU2 (2.29.x):
- Umbenennen der zu ersetzenden Dateien in *.bak Dateien (als Backup) via
Code: Alles auswählen
mv /bin/ReGaHss.community /bin/ReGaHss.community.bak mv /lib/libxmlparser.so /lib/libxmlparser.so.bak mv /lib/libXmlRpc.so /lib/libXmlRpc.so.bak
- Herunterladen/Installieren der Betaversion (bitte beachten, dass jeder 'wget' Befehl jeweils in einzelne Zeilen gehört):
Code: Alles auswählen
wget --no-check-certificate -O /bin/ReGaHss.community https://github.com/eq-3/occu/raw/master/CCU2/packages-eQ-3/WebUI-Beta/bin/ReGaHss wget --no-check-certificate -O /lib/libxmlparser.so https://github.com/eq-3/occu/raw/master/CCU2/packages-eQ-3/WebUI-Beta/lib/libxmlparser.so wget --no-check-certificate -O /lib/libXmlRpc.so https://github.com/eq-3/occu/raw/master/CCU2/packages-eQ-3/WebUI-Beta/lib/libXmlRpc.so
- Korrektur der Dateipermissions:
Code: Alles auswählen
chmod a+rx /bin/ReGaHss.community /lib/libxmlparser.so /lib/libXmlRpc.so
- Umbenennen der zu ersetzenden Dateien in *.bak Dateien (als Backup) via
- RaspberryMatic (2.29.x):
- Dateisystem wieder Read-Only mounten:
Code: Alles auswählen
mount -o ro,remount /
- Neustart RaspberryMatic/CCU2:
Code: Alles auswählen
reboot
Um das Feedback zu diesen Betaversionen zu bündeln wäre es schön wenn dies zu diesem Thread hier hinzugefügt werden könnte. Interessant wäre in der Tat ob mit dieser Betaversion in den oben genannten Bereichen wirklich alle Bugs nun beseitigt sind und trotzdem ReGaHss/WebUI immer noch gleich stabil oder gar stabiler läuft als vorher. Diese Information würde eQ3 dann sicherlich sehr helfen einzuschätzen wie schnell diese Version dann in die normale/offizielle nächste Firmwareversion Einzug halten kann.