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

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

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

Beitrag von jmaus » 08.12.2017, 09:40

Cash hat geschrieben:
...

Code: Alles auswählen

integer lInt = 1;
system.MaxIterations(1);
while(lInt < 100000000)
{
  WriteLine(lInt);
  lInt = lInt + 1;
}
WriteLine("Ende");
Erst einmal kann ich dazu sagen, dass was hier angesprochen wird ist lediglich der Punkt, dass bei Ausführung dieses Skriptes die Ausgabe wie folgt ist:

Code: Alles auswählen

1
2
Ende
Zu erwarten wäre allerdings das hier natürlich nur bis zur "1" gezählt wird. D.h. er macht trotz Anweisung "system.MaxIterations(1)" zwei Iterationen und nicht nur eine. Das habe ich natürlich bereits intern korrigiert (auch wenn das nicht wirklich notwendig gewesen wäre - siehe nächster Abschnitt).

Zusätzlich (und das ist viel wichtiger) muss man dazu sagen, dass dies in seiner aktuellen Form 0% der Skripte betrifft und ohnehin die Nutzung von "system.MaxIterations()" in einem Skript im besten Falle nicht vorkommen sollte. Es sollte damit nur ermöglicht werden die maximale Grenze von Iterationen einstellbar (und abfragbar) zu machen (für den Fall das man mehr als 500k Iterationen braucht). Diese neue Funktion darf nicht dazu genutzt werden nun z.B. immer vor einer while/foreach schleife MaxIterations() zu setzen um z.B. eine Zählvariable als Abbruchkriterium zu vermeiden. MaxIterations() wirkt sich nämlich global aus. D.h. es setzt für die gesamte Abarbeitung von Skripten innerhalb der ReGa die maximale Iterationsanzahl hoch.
Cash hat geschrieben:
Danach viel Spass mit eurer WebUI und Ausführungen auf der CCU.
Wer "system.MaxIterations(1)" ausführt darf sich ehrlich gesagt nicht darüber wundern, dass dann so einiges auf der CCU/RaspberryMatic nicht mehr geht. Weil das bedeutet das sämtliche Schleifen in sämtlichen (auch internen) ReGa-Skripten dann auch nach einer Iteration hart abgebrochen werden. Genau deshalb rate ich von einer generellen Verwendung von system.MaxIterations() zum setzen der Grenze auch in Nutzerskripten ab und wenn, dann nur um die Grenze über die Standardgröße hoch- und nicht darunter zu setzen. Und eben vor allem nicht um damit eben vor einer while()/foreach() schleife gar zu bestimmen das diese maximal X Iterationen durchlaufen soll.
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 » 08.12.2017, 09:48

Vielen Dank für die Erklärung. Also eigentlich keine große Sache...

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

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

Beitrag von Black » 08.12.2017, 10:16

gute Erklärung, Jens.

Mein SchnellTest auf meiner test raspimatik brachte von aussen sichtbar das gleiche zu Tage, dass ein Wert maxiteration von 1 zu inkonsistentem Ragaverhalten und der WebUI führen würde war klar und zu erwarten.
Hierbei ist aber auch zu erwähnen, das auch der Anwender für konsistente Werte eine Mitverantwortung trägt.
Ich kann in modernen Mainboards auch von Hand Spannungs und Timingsverhältnisse von Bauteilen so einstellen, das Bauteile gegrillt werden oder ein Board nicht mehr anbootet bzw instable wird. Das ist dann allerdings kein Fehler des Herstellers sondern eigene Blödheit.

je mehr Tuningmöglichkeiten der Anwender hat, desto mehr Möglichkeiten zum Einstellen von Murks gibts auch. is nunmal ein Fakt.

black

In einem würde ich aber jens doch nocmal bitten zu gucken: Kann dieser befehl auch über die :8181 Api geschickt werden ? Wenn ja, halte ich das für ein bösartige Sicherheitslücke
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

AlGu
Beiträge: 69
Registriert: 03.10.2012, 12:46

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

Beitrag von AlGu » 08.12.2017, 10:20

Hi Jens,

danke für die Arbeit. Du könntest ja auch noch eine Mindestgrenze z.B. 500k (wenn das der bisherige Wert war) einbauen und schon kann ein falsches setzen nichts kaputt machen?!

Gruß Alex

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 » 08.12.2017, 10:39

Ich würde auch ein Minimum setzen. So hatten wir im Zuge der Diskussion um die Genauigkeit von Floating-Werten auch darüber diskutiert wer die Zielgruppe der HM-Scripte ist und das ist im Zweifel eher nicht der seit 20Jahren tätige Entwickler der in zig Programmiersprachen zu Hause ist. Daher würde ich diese Zielgruppe möglichst vor Fehltritten (seien sie letztendlich auch eigenverschuldet) bewahren.
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

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

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

Beitrag von alchy » 08.12.2017, 10:41

Cash hat geschrieben:Also eigentlich keine große Sache...
Nö, keine grosse Sache. Nur eine Funktion, die dem ein oder anderen User einen weiteren Fallstrick bieten könnte.
Es waren mal 5k soweit ich mich erinnere. Dann wurden 500k ermöglicht, was die CCU dann mehrere Sekunden "lahmlegen" könnte
Nun kann es der (Un)geneigte User global selber festlegen. Klasse.
Aber bitte nicht zu niedrig, da ja eine zu niedrige Anzahl nur die Klickibunti zum Erliegen bringt. Wie niedrig denn eigentlich?
Es gibt natürlich auch noch keine Scripte, welche dies überhaupt benutzen. Das dann hinterher als Erklärung. Scheint ja die neue Art der Rechtfertigung für alles zu sein. Es gibt oder gibt nicht Scripte, welche...
Aber wo sind denn die vielen Scripte die 500k überhaupt benutzen?

Aber gross ist die Sache nun wirklich nicht.


Alchy
Out of Service

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

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

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

Beitrag von Black » 08.12.2017, 10:53

mule hat geschrieben:Ich würde auch ein Minimum setzen. So hatten wir im Zuge der Diskussion um die Genauigkeit von Floating-Werten auch darüber diskutiert wer die Zielgruppe der HM-Scripte ist und das ist im Zweifel eher nicht der seit 20Jahren tätige Entwickler der in zig Programmiersprachen zu Hause ist. Daher würde ich diese Zielgruppe möglichst vor Fehltritten (seien sie letztendlich auch eigenverschuldet) bewahren.
joah... HM script nutz ich auch nur für Funktionen, die sich nicht in clicki Bunti abblilden lassen aber die ich aber für so systemnah halte, das ich diese auf der CCu ausgeführt haben möchte.

für alle komplexeren Logiken, Abhängigkeiten, Verknüpfungen zwischen verschienden Systemem benutze ich javascript auf einem externen Orange Pi, der nur die CCU2 als Send/Receive daemon nutzt.

Vor allem Javascript ist ein offenes, extrem gut dokumentiertes System im gegensatz zu HM Script mit auch einer grossen community, wo man nicht drauf angewiesen ist, das man bei weiterführenden Fragen kein "Ätsch ich weiss es, aber ich sags nicht " vor den Kopp geknallt bekommt.

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
jmaus
Beiträge: 9820
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1857 Mal
Kontaktdaten:

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

Beitrag von jmaus » 08.12.2017, 12:04

Black hat geschrieben: In einem würde ich aber jens doch nocmal bitten zu gucken: Kann dieser befehl auch über die :8181 Api geschickt werden ? Wenn ja, halte ich das für ein bösartige Sicherheitslücke
Na klar kann man diesen Befehl auch via :8181 absenden (wenn man weiss wie). Aber da gibt es in der Tat noch viel schlimmere Befehle die man darüber absenden könnte und die dir z.B. alle deine Geräte löschen oder alle Programme ausführen lassen, etc. Da ist diese MaxIterations() Funktionalität nun wirklich die kleinste aller Probleme die man damit haben könnte. Genau deshalb gehört eine CCU eben nicht via Port Forwarding oder ähnliches ins Internet.

Und danke für die rege Diskussion. Auch ich hatte bereits überlegt da ein minimum einzubauen, schon alleine um dem Normalnutzer es nicht zu erlauben sich selbst in die Füße zu schiessen. Bisher hatte ich mich aber dagegen entschieden. Ich werde aber noch einmal drüber nachdenken.
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 » 08.12.2017, 13:21

ich halte nichts von Bevormundung der Nutzer wenn ein User dort eine 1 einträgt ist das doch seine ccu. Jeder kann zu Hause mit seiner CCU machen was er will...
OB sinnvoll oder nicht kann ich nur für meine ccu beurteilen. Vielleicht gibt es ja einen Fall wo der User froh ist wenn er es am Anfang des Scriptes auf 10 setzt und am Ende wieder hoch.

Wichtig wäre nur das es erstes irgendwo deutlich steht das diese Einstellung global gilt und auch wichtig das man es irgendwo unter den Einstellungen angezeigt bekommt...

Noch eine Frage: Der Wert gilt global. Überlebt er auch einen Neustart? Falls nicht wäre es natürlich unwichtig das man diesen Wert irgendwo sieht.

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

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

Beitrag von jmaus » 08.12.2017, 13:28

Cash hat geschrieben:Vielleicht gibt es ja einen Fall wo der User froh ist wenn er es am Anfang des Scriptes auf 10 setzt und am Ende wieder hoch.
Genau das sollte ein Nutzer aber definitiv nicht machen und dafür gibt es auch keinen Grund.
Cash hat geschrieben: Noch eine Frage: Der Wert gilt global. Überlebt er auch einen Neustart? Falls nicht wäre es natürlich unwichtig das man diesen Wert irgendwo sieht.
Nein, er überlebt den Neustart nicht und ist danach wieder auf 500k.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

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