vergleichen von Stringvariablen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Matsch
Beiträge: 5449
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 740 Mal

Re: vergleichen von Stringvariablen

Beitrag von Matsch » 26.10.2021, 21:54

Baxxy hat geschrieben:
26.10.2021, 20:17
BDO hat geschrieben:
26.10.2021, 19:21
einer sich ändernden Systemvariable vom Typ Zeichenkette (die Werte kommen von der HmIP-RC8),
Das ist aber auch wieder kryptisch beschrieben. Ich habe zwar viel Fantasie, kann mir darunter aber nix vorstellen.
Warum nicht die Tastendrücke "auswerten"?

Grüße, Baxxy
Ja, das ist ein großes Rätsel! Von der RC8 werden die Ereignisse "Tastendruck" gemeldet und keine Zeichenketten (von der RC8 kommen per se keine Zeichenketten). Wie zum Teufel entstehen daraus Strings? Die vielleicht gar keiner braucht?

BDO
Beiträge: 75
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 26 Mal
Danksagung erhalten: 1 Mal

Re: vergleichen von Stringvariablen

Beitrag von BDO » 27.10.2021, 18:58

Hallo,
um deutlich zu werden:
ich besitze ein Pflegebett mit einer Spiralkabel-Fernbedienung. Mit einer Hand (ansonsten bin ich weitgehend gelähmt), lässt sich diese kaum bedienen. Deshalb meine Idee eine RC8 einzusetzen. Die Kabel-FB hat 12 Funktionen, wobei darauf zu achten ist, dass nie 2 Tasten gleichzeitig gedrückt werden dürfen.
Ich habe nun eine zweite Kabelfernbedienung derart modifizieren lassen, dass 12 Schalterkontakte mit den Relais von 3 x HM-LC-Sw4 verbunden sind. Diese Schalteinheit befindet sich am Bett, wobei die Stromversorgung des Bettes über die Schalt-Mess-Steckdose HMIP-PSM erfolgt, da ich über die Leistungsmessung feststellen kann, ob einer der Stellmotoren seine Endposition erreicht hat. Weiterhin ist noch ein HM-LC-Sw4-SM im Einsatz über diese FB.

Die Funktion habe ich mir folgendermaßen vorgestellt, da ich 12 Funktionen auf 8 Tasten verteilen möchte:
Taste 1 - 1 x drücken Kopfteil hoch, 2 x drücken stop, 3 x drückenKopfteil runter
Taste 2 - 1 x drücken Fußteil hoch, 2 x drücken stop, 3 x drücken Fußteil runter
Taste 3 - 1 x drücken Leseposition hoch, 2 x drücken stop, 3 x drücken Leseposition runter
Taste 4 - 1 x drücken Bett hoch, 2 x drücken stop, 3 x drücken Bett runter
Die Rückstellung der Relais erfolgt über einen 4. Tastendruck oder über die Mess-Steckdose.

über die Taste 5 läuft ein „Routineprogramm“ mit mehreren Funktionen fürs Zubettgehen und Aufstehen ab. Zusätzliche Funktionen wie Türöffnen (HmIP-DLD), Alarm, Licht, Notruf… laufen auch über teilweise doppelt belegte (langer Druck) Tasten.

Um das jeweils richtige Relais zu adressieren, habe ich mir den folgenden Code überlegt:
Einen String mit 2 Zahlen, die durch ein Semikolon getrennt sind. Das erste HM-LC-Sw4 erhält eine “1“ gefolgt von einer Kanalnummer 1-4. Und so weiter bis “4;4“.
Folgendes Script habe ich hierfür gedacht:

Code: Alles auswählen

var trans = dom.GetObject("SV_BRS").Value().ToString(0);
if(trans == "true"){quit;};
var SU = trans.StrValueByIndex(";", 0);
var CAN = trans.StrValueByIndex(";", 1);
var arr = "-;QEQ1334176;QEQ1334367;QEQ1334324;JEQ0143962";
var SNr = arr.StrValueByIndex(";", SU);

!Schaltzustand (n) des gewählten Relais holen und ändern:
boolean n = dom.GetObject("BidCos-RF."# SNr #":"# CAN #".STATE").Value();
if (n ==0) {n = 1;}
else{n = 0;}
dom.GetObject("BidCos-RF."# SNr #":"# CAN #".STATE").State(n);

! alles Folgende nur bei ausgeschaltetem Relais…
! Kanalumschaltung (mittels even & 1) von hoch auf runter
if (n == 0)
{integer CANX = CAN.ToFloat();
if (CANX & 1) {CANX = CANX + 1;}
else {CANX = CANX - 1;}
CAN = CANX.ToString(0);

! Relais auf ermittelten Gegenwert umschalten
dom.GetObject("BidCos-RF."# SNr #":"# CAN #".STATE").State(n);
! Schaltstatus ispeichern…
dom.GetObject("SV_BRS").State(SU#";"#CAN);}
Ich hoffe, ich konnte die “Kryptik“ etwas auflösen. Mag ja auch sein, ich liege mit meinen Gedanken völlig schief, aber ich wollte mit so wenig Script wie nötig auskommen.

Ich freue mich auf ein Feedback.
Zuletzt geändert von alchy am 27.10.2021, 19:49, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Gruß Boris

Benutzeravatar
Baxxy
Beiträge: 10826
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 607 Mal
Danksagung erhalten: 2225 Mal

Re: vergleichen von Stringvariablen

Beitrag von Baxxy » 27.10.2021, 23:56

BDO hat geschrieben:
27.10.2021, 18:58
Feedback
Ui, das ist ja ein "Projekt". So ganz kann ich der Steuerung per String-SysVar aber noch nicht folgen.
Ich frage mich aber warum du nicht einfach eine 2te 8fach Fernbedienung (HM-RC-8) irgendwo am Bett deponierst die per DV'en die 8 nötigen Kanäle für die Bettsteuerung bedient. Oder warum nicht gleich mit Rollladenaktoren gearbeitet wird. Da bräuchte man sich um "Endabschaltung" und Fehlbedienung (zugleich hoch/runter geht nicht) keine Gedanken machen.

Ich nutze auch gerne Scripte, aber nur wenn es wirklich nicht anders geht. Deine Anforderung für die Ansteuerung der 4 "Bettebenen" über 4 verschiedene Tasten lässt sich auch über WebUI-Programme realisieren (eins pro Bettebene + jeweils eine Werteliste SysVar).
Beispiel:
Bettsteuerung_SV_Werteliste.JPG
Bettsteuerung_Test_prg.JPG
Hier "steuere" ich mittels virtueller Taste im Wechsel 2 Ausgänge eines HmIP-OC8.
Quasi...
BDO hat geschrieben:
27.10.2021, 18:58
Taste 1 - 1 x drücken Kopfteil hoch, 2 x drücken stop, 3 x drückenKopfteil runter, 4x drücken stop
Darf jetzt wirklich nur eine "Bedienebene" gleichzeitig aktiv sein könnte man noch eine Logik-Sperrvariable einbauen.

Grüße, Baxxy

BDO
Beiträge: 75
Registriert: 14.07.2017, 13:27
Hat sich bedankt: 26 Mal
Danksagung erhalten: 1 Mal

Re: vergleichen von Stringvariablen

Beitrag von BDO » 28.10.2021, 18:52

Hallo Baxxy,

vielen Dank für Deine Mühe und Ideen zu meinem Thema. Beim nächsten Mal greife ich Deine Idee mit den Rollladenaktoren auf. Jetzt ist alles leider schon gekauft und verbaut. Der Ansatz über WebUI-Programme sieht sehr gut aus! Will mal versuchen das hinzukriegen und mit meinem Script vergleichen. Also, erst einmal Danke für Dein Gehirnschmalz.
Gruß Boris

Antworten

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