if mit mehrere Bedigungen: zweite Bedingung wird ignoriert

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
robbi77
Beiträge: 13785
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 732 Mal

Re: if mit mehrere Bedigungen: zweite Bedingung wird ignoriert

Beitrag von robbi77 » 31.05.2023, 19:30

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.

Xel66
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

Beitrag von Xel66 » 01.06.2023, 00:29

robbi77 hat geschrieben:
31.05.2023, 19:30
Aber was die Eigenarten der CCU angeht … hätte ja auch ausnahmsweise mal ein Schreibfehler sein können.
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

Benutzeravatar
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

Beitrag von homematic_jolle » 15.07.2023, 23:54

Roland M. hat geschrieben:
31.05.2023, 12:39

Versuche einmal
if ((i == 2) && (j == 2))
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);





Antworten

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