Finde den Fehler

Begonnen von NehCoy, 12 Dezember 2017, 11:20:07

Vorheriges Thema - Nächstes Thema

NehCoy

Hallo zusammen!

Ich versuche mich gerade darin, die ersten "komplizierteren" Automatisierungsregeln umsetzen. Bis jetzt leider vergeblich.
KNX_0403019 {
    my $wohnzimmer = Value("dy.Weihnachtsbeleuchtung.Automatik.Wohnzimmer");;
    my $kueche = Value("dy.Weihnachtsbeleuchtung.Automatik.Kueche");
    my $garten = Value("dy.Weihnachtsbeleuchtung.Automatik.Garten");;
    my $vorgarten = Value("dy.Weihnachtsbeleuchtung.Automatik.Vorgarten");;
    if($EVENT eq "true" && $hour gt 16)
    {         
        if($wohnzimmer eq "on" )
        {
            fhem "set KNX_0502000 on";;
            fhem "define Weihnachtsbeleuchtung.Automatik.Wohnzimmer.Off_Active at 22:00:00 set KNX_0502000 off";;
        }
        if($kueche eq "on" )
        {
            fhem "set KNX_0501004 on";;
            fhem "define Weihnachtsbeleuchtung.Automatik.Kueche.Off_Active at 23:00:00 set KNX_0501004 off";;
        }
        if($garten eq "on" )
        {
            fhem "set KNX_0502004 on";;
            fhem "define Weihnachtsbeleuchtung.Automatik.Garten.Off_Active at 22:00:00 set KNX_0502004 off";;
        }
        if($vorgarten eq "on" )
        {
            fhem "set KNX_0503000 on";;
            fhem "define Weihnachtsbeleuchtung.Automatik.Vorgarten.Off_Active at 23:00:00 set KNX_0503000 off";;
        }
    }
}


Die Syntax der FHEM-Befehle habe ich schon auf unterschiedliche Weise durchprobiert:

  • fhem "set KNX_0502000 on;; define Weihnachtsbeleuchtung.Automatik.Wohnzimmer.Off_Active at 22:00:00 set KNX_0502000 off"
  • fhem ("set KNX_0502000 on;; define Weihnachtsbeleuchtung.Automatik.Wohnzimmer.Off_Active at 22:00:00 set KNX_0502000 off")
  • fhem ("set KNX_0502000 on");fhem("define Weihnachtsbeleuchtung.Automatik.Wohnzimmer.Off_Active at 22:00:00 set KNX_0502000 off")

Für einen für euch, mit mehr Erfahrung als ich, wird der Fehler sicherlich ins Auge springen. - Ich bin blind!

Könnt ihr bitte helfen?

Vielen Dank & Grüße
NehCoy

P.S.:
Habe inzwischen auch in Erfahrung gebracht, dass es "on-until"gibt, um die beiden Befehle zusammenzufassen. Dennoch würde ich gerne für zukünftige Aufgaben wissen, wie ich mehrere beliebige Befehle bei einer Bedingung ausführen kann.

Prof. Dr. Peter Henning

Es wäre sehr viel sinnvoller, diese Regeln in ein Perl-Programm auszulagern, das in den 99_myUtils gespeichert wird.

LG

pah

CoolTux

Ich mag kein raten. Sage mir mal was nicht geht und dann schauen wir mal.
Ansonsten bin ich bei pah was die myUtils an geht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

NehCoy

Zitat von: CoolTux am 12 Dezember 2017, 11:40:54
Ich mag kein raten. Sage mir mal was nicht geht und dann schauen wir mal.

Ganz einfach: Nix geht. Licht geht nicht an.


Zitat von: Prof. Dr. Peter Henning am 12 Dezember 2017, 11:26:28
Es wäre sehr viel sinnvoller, diese Regeln in ein Perl-Programm auszulagern, das in den 99_myUtils gespeichert wird.
Zitat von: CoolTux am 12 Dezember 2017, 11:40:54
Ansonsten bin ich bei pah was die myUtils an geht.
Aber dazu müsste der Code auch erstmal funktionieren. ;)

CoolTux

Na dann fangen wir doch mal an

oberste Ebene

if($EVENT eq "true" && $hour gt 16)


Wird die Bedingung erfüllt?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

NehCoy

Ein "Merker" (eine weitere Dummy-Variable) , der diese Frage beantwortet, habe ich gestern gesetzt und warte darauf, dass das Event ausgelöst wird...

CoolTux

#6
Und warum generierst Du nicht selber das Event?

Schau Dir mal trigger an

Und Du bist Dir sicher das das Event einzig allein nur aus dem String true besteht? Da dies Dein oberster Ansatz ist würde ich Deine Regex entsprechend anpassen


KNX_0403019.true {


Das löst das Notify schon mal nicht Sinnlos aus.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

NehCoy

Das Gerät KNX_0403019 ist vom Typ "dpt1.002". Es hat also nur die States "true" oder "false".
Das dazugehörige "devStateIcon"-Attribut sieht wie folgt aus: true:10px-kreis-gruen false:10px-kreis-rot

Gruß
NehCoy

CoolTux

und hast schon mal trigger aus geführt
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Prof. Dr. Peter Henning

Aber dazu müsste der Code auch erstmal funktionieren.
Unsinn. Dann gibt es sehr viel mehr Möglichkeiten zum Loggen und Debuggen.

pah

CoolTux

Man könnte ja erstmal mit einem einfachen printf anfangen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nils_

Zitat von: CoolTux am 12 Dezember 2017, 12:55:47
Das löst das Notify schon mal nicht Sinnlos aus.

wie kommst du auf ein notify?

aus dem geposteten code und der _aussagekräftigen_ fehlermeldung kann man eigentlich gar nichts erkennen.
(auf den threadtitel will ich mal gar nicht eingehen....)

viele Wege in FHEM es gibt!

CoolTux

Zitat von: nils_ am 12 Dezember 2017, 16:00:05
wie kommst du auf ein notify?

aus dem geposteten code und der _aussagekräftigen_ fehlermeldung kann man eigentlich gar nichts erkennen.
(auf den threadtitel will ich mal gar nicht eingehen....)

Hab versucht zwischen den Zeilen des Wahnsinns zu lesen.
Und der Threadersteller hat nicht protestiert. Gebe Dir aber Recht, man erkennt wenig um zu helfen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nils_

Zitat von: CoolTux am 12 Dezember 2017, 16:08:25
Und der Threadersteller hat nicht protestiert. Gebe Dir aber Recht, man erkennt wenig um zu helfen.

guter trick um das herauszufinden :D
viele Wege in FHEM es gibt!

NehCoy

So, da bin ich wieder!
Guten Abend erstmal!

Kann es sein, dass FHEM damit Probleme hat, wenn da Leerzeichen am Ende der Zeile sind!?

Eine Dummy  nach dem Prüfen der if-Bedingung ($EVENT eq "true" && $hour gt 16) wurde nämlich gesetzt.
Die Abfrage ob die Automatik für einen Raum aktiv ist habe ich zusätzlich erneut mit Dummys getestet.
Und irgendwann nach x-mal hin und her kopieren ging es, nachdem ich ein paar Leerzeichen nach den ";;" entfernt hatte.

Grüße
NehCoy