Ich hab mit Scripte nix am Hut außer C&P.
Bin noch nicht in die Verlegenheit gekommen mich da einarbeiten zu müssen. Was nicht als Programm funktioniert, tja shit Happens.
Aber was die Eigenarten der CCU angeht … hätte ja auch ausnahmsweise mal ein Schreibfehler sein können.
if mit mehrere Bedigungen: zweite Bedingung wird ignoriert
Moderator: Co-Administratoren
-
- Beiträge: 14085
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 580 Mal
- Danksagung erhalten: 1492 Mal
Re: if mit mehrere Bedigungen: zweite Bedingung wird ignoriert
Nö, die Rechnung z.B. von rechts nach links ist sogar in der zugegebenermaßen mageren Scriptdoku zu finden. Macht übrigens das Rechnen in komplexeren Formeln nicht gerade einfach. Ich hatte mich da mal vor einiger Zeit an Sonnenstandsformeln versucht. Glücklicherweise wurde das Thema in der Zwischenzeit besser gelöst.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
- homematic_jolle
- Beiträge: 11
- Registriert: 31.05.2023, 07:51
- System: CCU
- Hat sich bedankt: 3 Mal
Re: if mit mehrere Bedigungen: zweite Bedingung wird ignoriert
Vielen herzlichen Dank - ich hab es eben ausprobiert und ENDLICH klappt es. Was hat mich das Nerven gekostet.
An die anderen. Das Handbuch habe ich hier liegen, aber manchmal ist es nicht so leicht die wenigen Beispiele bzw. Anweisungen auf sein eigenes Skript gedanklich umzusetzen. Da bitte ich um etwas Nachsicht.
Mein Use-Case ist ein Skript, mit dem ich einen Shelly RGBW auf Knopfdruck eines Homematic-Tasters die nächste Farbe schalten lasse.
SO sieht es nun aus, falls es jemand gebrauchen kann.
Code: Alles auswählen
var r = dom.GetObject("sv_rgbw_bad_r").Value();
var g = dom.GetObject("sv_rgbw_bad_g").Value();
var b = dom.GetObject("sv_rgbw_bad_b").Value();
var w = dom.GetObject("sv_rgbw_bad_w").Value();
WriteLine("vorher");
WriteLine(r);
WriteLine(g);
WriteLine(b);
WriteLine(w);
if ((r == 255) && (g == 0) && (b == 0)) {
r = 0;
g = 255;
b = 0;
w = 0;
WriteLine("rot festgestellt, grün gesetzt");
} else {
if ((r == 0) && (g == 255) && (b == 0)) {
r = 0;
g = 0;
b = 255;
w = 0;
WriteLine("grün festgestellt, blau gesetzt");
} else {
if ((r == 0) && (g == 0) && (b == 255)) {
r = 255;
g = 0;
b = 255;
w = 0;
WriteLine("blau festgestellt, lila gesetzt");
} else {
if ((r == 255) && (g == 0) && (b == 255)) {
r = 255;
g = 255;
b = 0;
w = 0;
WriteLine("lila festgestellt, gelb gesetzt");
} else {
if ((r == 255) && (g == 255) && (b == 0)) {
r = 0;
g = 255;
b = 255;
w = 0;
WriteLine("rot festgestellt, cyan gesetzt");
} else {
if ((r == 0) && (g == 255) && (b == 255)) {
r = 0;
g = 0;
b = 0;
w = 255;
WriteLine("cyan festgestellt, weiss gesetzt");
} else {
if ((r == 0) && (g == 255) && (b == 0) && (w == 255)) {
r = 255;
g = 0;
b = 0;
w = 0;
WriteLine("weiss festgestellt, rot gesetzt");
} else {
r = 255;
g = 0;
b = 0;
w = 0;
WriteLine("kein Wert passt, rot gesetzt");
}
}
}
}
}
}
}
;
dom.GetObject("sv_rgbw_bad_r").State(r);
dom.GetObject("sv_rgbw_bad_g").State(g);
dom.GetObject("sv_rgbw_bad_b").State(b);
dom.GetObject("sv_rgbw_bad_w").State(w);
WriteLine("--1--");
WriteLine(r);
WriteLine(g);
WriteLine(b);
WriteLine(w);
r = r.ToString();
g = g.ToString();
b = b.ToString();
w = w.ToString();
var string1 ="'http://XXXXXXXX/color/0?turn=on&red=";
var string2 ="&green=";
var string3 ="&blue=";
var string4 ="&white=";
WriteLine("--2---");
WriteLine(r);
WriteLine(g);
WriteLine(b);
WriteLine(w);
var URL = string1 + r + string2 + g + string3 + b + string4 + w + "'";
WriteLine("--3---");
WriteLine(r);
WriteLine(g);
WriteLine(b);
WriteLine(w);
dom.GetObject("CUxD.XXXXXXX:1.CMD_EXEC").State("wget -q -O - "+URL);