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

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

virgin
Beiträge: 495
Registriert: 09.01.2013, 18:36
Wohnort: Leichlingen
Hat sich bedankt: 3 Mal
Kontaktdaten:

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

Beitrag von virgin » 20.06.2017, 08:51

Könnte bitte ein Moderator oder jmaus als Ersteller diesen Thread schließen, damit weitere Posts hier nicht mehr möglich sind. Jeder (inkl. meiner Person, leider) fühlen sich jetzt dazu aufgerufen, den Konflikt zu diskutieren und Vorschläge zu machen. Das sollten die Betroffenen am besten nicht öffentlich ausfechten.

Und dann eröffnet bitte einen neuen moderierten, sachlichen Thread, auf dem nur Sachbeiträge zugelassen sind.
Bernd

quickmic
Beiträge: 496
Registriert: 20.01.2011, 14:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 4 Mal

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

Beitrag von quickmic » 20.06.2017, 09:38

Ich haette auch einen Vorschlag bzw Frage. Ich hoffe das passt hierher, folgendes:
Auch wenn ich eine sehr spezielles Setup laufen habe, nutzt mein Anliegen vielleicht auch dem ein oder anderem mit Stock CCU Setup.

Ich wuerde es begruessen, wenn es im Script eine Funktion gibt, einen Aktor-Parameter zu setzen, OHNE ein Event zu triggern.
Bsp meiner Elero-Implementation:
Vitrueller Jalousieschalter (cuxd) triggert bei mir ein Script system.Exec("/opt/scripts/sendcommand.sh Elero|1|1");
Ich will garnicht ins Detail gehen, aber nur zum Verstaentnis.
sendcommand.sh sendet per netcat ein Kommando an an das 5000er port (/bin/echo [email protected] | /bin/netcat 192.168.0.212 5000`), das von einem Command & Control Python-script (das im Hintergrund laeuft) gelesen wird.
Ein kleine Anketote.. Ich sende das netcat nicht direkt per system.Exec weil imho system.Exec etwas pingelig mit timeouts ist. Ich gehe da lieber auf nummer sicher, und schalte das sh-script dazwischen.
Soweit sogut, ich kann also meine Jalousie rauf/runter fahren, aber ich will auch den Status haben. Das Command & Control Python-script liest auch den Status von Elero aus und schreibt alles in ein Textfile.
Das Textfile mit dem Status wird per Timer-script von der CCU ausgelesen und der Vitrueller Jalousieschalter (cuxd) entsprechend aktualisiert.

Soweit mein Setup, ich selbst habe noch diverse vergleichbare Faelle am Start, es geht aber immer ums Gleich. Steuer-Kommando per CCU-script rauschicken, Status per CCU-script einlesen.
Das eigentliche Problem ist jedoch, dass das Aktualisierungs-script den Wert des Jalousieaktor setzt, was wiederrum das Event triggert, was wiederum den Status aendert, was wiederum den Jalousieaktor setzt usw. Es kann zu einer Endlosschleife kommen, vor allem weil ja auch von ausserhalb der Status geandert werden kann (Elero Fernbedieung).
Ich muss daher extreme verrenkungen machen, damit das nicht passiert. Alten Wert Speichern, Status-Aktualisierung mit altem Wert vergleichen. Nur wenn unterschied, dann Status aktualisieren und Event nur Triggern wenn neuer Wert und alter Wert unterschiedlich ist etc.
Das Ganze wuerde sich so einfach loesen lassen, wenn ich den Aktor-Status per Script setzen kann, ohne das Event zu triggern.

btw, das ganze wird nur schlagend, wenn ich den Status meines Gewerkes von aussen aendern kann und will (Elero Fernbedieung). Ansonsten brauch der der Status ja nie von extern eingelesen werden, es kann die CCU intern speichern.

Warum ich glaube, dass sowas fuer die Stock-CCU auch vorteilhaft ist... Ich verwende zwar ein Python-script fuer meine individuellen Status-Implementationen, man kann das aber auch auslagern und z.b. per wget den Status von irgendwoher auslesen. Dann steht man genau vor dem geliche Problem.

Ich verwende das ganze uebrigens noch fuer eine Raspberry LED-Lichtsteuerung, meinen Onkyo-Receiver, einen IR-Transmitter, einer eigenen Lightify Anbindung (mit Status) und eben Elero, sowie diverse Ping-Abfragen.
Man kann sicher einen Teil davon an cuxd auslagern, trotzdem.

Bratmaxe
Beiträge: 1412
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

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

Beitrag von Bratmaxe » 20.06.2017, 09:45

Wenn du den Aktor mit .Variable() statt mit .State() setzt wird kein neuer Zeitstempel gesetzt und somit wird diese Änderung nicht getriggert.
Oder habe ich die Frage falsch verstanden?
Gruß Carsten

Benutzeravatar
jmaus
Beiträge: 4943
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 6 Mal
Danksagung erhalten: 56 Mal
Kontaktdaten:

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

Beitrag von jmaus » 20.06.2017, 09:48

quickmic hat geschrieben:Ich haette auch einen Vorschlag bzw Frage. Ich hoffe das passt hierher, folgendes:
Auch wenn ich eine sehr spezielles Setup laufen habe, nutzt mein Anliegen vielleicht auch dem ein oder anderem mit Stock CCU Setup.

Ich wuerde es begruessen, wenn es im Script eine Funktion gibt, einen Aktor-Parameter zu setzen, OHNE ein Event zu triggern.

[...]

Ich verwende das ganze uebrigens noch fuer eine Raspberry LED-Lichtsteuerung, meinen Onkyo-Receiver, einen IR-Transmitter, einer eigenen Lightify Anbindung (mit Status) und eben Elero, sowie diverse Ping-Abfragen.
Man kann sicher einen Teil davon an cuxd auslagern, trotzdem.
Ich hoffe ich verstehe das richtig: Du willst im Grunde eine Art "dom.GetObject('1234').State('blah')" haben das aber nur dafür sorgt das intern in ReGa der Status des jeweiligen Objektes gesetzt wird und nicht an einen möglichen Aktor ein Schaltbefehl getriggert wird? D.h. also sowas wie "dom.GetObject('1234').State('blah', false)" oder so? Wenn dem so ist wäre das natürlich prinzipiell möglich das zu implementieren (oder eben schauen ob .Variable() das macht was du willst), jedoch würden dann auch externe Applikationen (z.B. ioBroker, etc.) nichts von dieser Statusänderungen mitbekommen und somit einen anderen Status mitunter darstellen als ReGa intern. Oder habe ich etwas falsch verstanden?
RaspberryMatic 3.47.18.20190918 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

Benutzeravatar
Herbert_Testmann
Beiträge: 11096
Registriert: 17.01.2009, 11:30
Danksagung erhalten: 1 Mal

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

Beitrag von Herbert_Testmann » 20.06.2017, 09:49

virgin hat geschrieben:Könnte bitte ein Moderator oder jmaus als Ersteller diesen Thread schließen, damit weitere Posts hier nicht mehr möglich sind.
Georgee hat geschrieben:Hallo,
dieses Forum wird, wenn man Rega-Aspekte finden möchte, sehr schwer lesbar.
Vorschlag: Neues Forum für die Diskussion etc. der Zusammenarbeit für Rega etc.
Georgee
Hallo

Beiträge werden nur selten geschlossen, wenn die Diskussion extrem unsachlich wird oder das Thema in einem neuen Beitrag (z.B. wegen neuer Version) neu gestartet wird.

Mit der nächsten ReGaHss beta Version oder der Überführung in die CCU FW könnte Jens dann einen neuen Beitrag auf machen, um Fehler dieser neuen Version zu sammeln. Sollte ja nicht mehr allzu lange dauern.

Da auch Moderatoren hier einem Hobby nach gehen und es extrem viel Arbeit macht sinnvoll zu selektieren und neu zusammen zu stellen, bitte ich um Verständnis, dass der OffTopic Müll hier nicht verschoben wird. Jedenfalls nicht von mir.
---
Dieses Schreiben wurde maschinell erstellt und ist ohne Unterschrift gültig

quickmic
Beiträge: 496
Registriert: 20.01.2011, 14:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 4 Mal

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

Beitrag von quickmic » 20.06.2017, 10:04

Ich hoffe ich verstehe das richtig: Du willst im Grunde eine Art "dom.GetObject('1234').State('blah')" haben das aber nur dafür sorgt das intern in ReGa der Status des jeweiligen Objektes gesetzt wird und nicht an einen möglichen Aktor ein Schaltbefehl getriggert wird? D.h. also sowas wie "dom.GetObject('1234').State('blah', false)" oder so? Wenn dem so ist wäre das natürlich prinzipiell möglich das zu implementieren (oder eben schauen ob .Variable() das macht was du willst), jedoch würden dann auch externe Applikationen (z.B. ioBroker, etc.) nichts von dieser Statusänderungen mitbekommen und somit einen anderen Status mitunter darstellen als ReGa intern. Oder habe ich etwas falsch verstanden?
Ja, richtig verstanden :) , exakt das ist mein Anliegen.
Ich selbst verwende keine externen Applikationen ausser Abfragen mittels XML-API. Ich weiss leider nicht genau, wie exterene Applikationen angebunden sind.
Daran hatte ich garnicht gedacht, dass es diesbezueglich Probleme geben kann.
Aber das ganze macht auch nur Sinn im Falle von virtuellen Geraeten.

robsdobs
Beiträge: 514
Registriert: 08.08.2015, 22:52

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

Beitrag von robsdobs » 20.06.2017, 12:17

Hallo,

erstmal Vielen Dank an alle die hier ihre Freizeit opfern.

Einen paar Wünsche hätte ich, wobei ich weiß jetzt nicht ob das Teil der ReGaHss ist.

Was mir in der Script-Sprache oft fehlt ist ein "elseif" (oder ähnliches).

also anstelle

Code: Alles auswählen

if (bla) {

} else {
    if (bli) {
        if (blu) {

        } else {

        }
    } else {

    }
}
ein

Code: Alles auswählen

if (bla) {

} elseif (bli) {

} elseif (blu) {

} else {

}
Das würde die Script Programme besser lesbar gestalten.

Danke!
sehr selten im Forum

Benutzeravatar
jmaus
Beiträge: 4943
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 6 Mal
Danksagung erhalten: 56 Mal
Kontaktdaten:

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

Beitrag von jmaus » 20.06.2017, 12:54

robsdobs hat geschrieben: Einen paar Wünsche hätte ich, wobei ich weiß jetzt nicht ob das Teil der ReGaHss ist.

Was mir in der Script-Sprache oft fehlt ist ein "elseif" (oder ähnliches).
[...]
Das würde die Script Programme besser lesbar gestalten.
Da bist du in der Tat hier richtig. Ich nehme es mal in meine Wunschliste mit auf denn es macht in der Tat sinn und sollte auch recht einfach zu implementieren sein meines Erachtens.
RaspberryMatic 3.47.18.20190918 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

robsdobs
Beiträge: 514
Registriert: 08.08.2015, 22:52

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

Beitrag von robsdobs » 20.06.2017, 14:01

dann mach ich mal weiter mit wünschen :D

Für den String Datentyp wäre ein "Replace(a,b)" nett

also anstelle sowas:

Code: Alles auswählen

string tmpB = "";
string tmpC = "";
! +++++ Umwandlung von Sonderzeichen gem. UTF-8 +++++
foreach(tmpC, tmpA.Split("%")){tmpB = tmpB + tmpC + "%25";}
if(tmpA.Substr(tmpA.Length()-1, tmpA.Length()-1) <> "%"){tmpA = tmpB.Substr(0, tmpB.Length()-3);}
else{tmpA = tmpB;}
tmpB = "";
foreach(tmpC, tmpA.Split(" ")){tmpB = tmpB + tmpC + "%20";};
if(tmpA.Substr(tmpA.Length()-1, tmpA.Length()-1) <> " "){tmpA = tmpB.Substr(0, tmpB.Length()-3);}
else{tmpA = tmpB;}
tmpB = "";
foreach(tmpC, tmpA.Split("ä")){tmpB = tmpB + tmpC + "%C3%A4";}
if(tmpA.Substr(tmpA.Length()-1, tmpA.Length()-1) <> "ä"){tmpA = tmpB.Substr(0, tmpB.Length()-6);}
else{tmpA = tmpB;}
tmpB = "";
das so

Code: Alles auswählen

! +++++ Umwandlung von Sonderzeichen gem. UTF-8 +++++
tmpA = tmpA.Replace("%","%25");
tmpA = tmpA.Replace(" ","%20");
tmpA = tmpA.Replace("ä","%C3%A4");
vielleicht zusätzlich gleich ein "HtmlEncode()"/"HtmlDecode()" ...
sehr selten im Forum

Benutzeravatar
jmaus
Beiträge: 4943
Registriert: 17.02.2015, 14:45
Wohnort: Dresden
Hat sich bedankt: 6 Mal
Danksagung erhalten: 56 Mal
Kontaktdaten:

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

Beitrag von jmaus » 20.06.2017, 14:15

robsdobs hat geschrieben:dann mach ich mal weiter mit wünschen :D

Für den String Datentyp wäre ein "Replace(a,b)" nett
[...]
Ok, hab ich auch auf meine TODO Liste für weitere Arbeiten an ReGa gesetzt. Danke.
RaspberryMatic 3.47.18.20190918 @ TinkerS mit ~160 HomeMatic Geräten + ioBroker – GitHubPayPalTwitter

Antworten

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