[GELÖST] Notify Bewegungsmelder: Kombination von Schaltzuständen

Begonnen von Michi240281, 02 März 2014, 19:37:27

Vorheriges Thema - Nächstes Thema

Michi240281

#15
Mag er auch nicht.

ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:state

Der ERROR kommt ständig. Auch wenn ich nen anderes Device incl. Reading nehme, kommt der Fehler?!?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Zitat von: Michi240281 am 03 März 2014, 19:38:52
Mag er auch nicht.

ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:state

dubios???

Welche Meldung kommt, wenn du in der Commandozeile eingibst:

IF (1) ([BM_Terasse:brightness])

ansonsten, mache bitte noch mal list BM_Terasse_Motion, vielleicht ist da noch ein Leerzeichen zu viel.

Gruß

Damian




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Zitat von: Damian am 03 März 2014, 19:48:41
Welche Meldung kommt, wenn du in der Commandozeile eingibst:

IF (1) ([BM_Terasse:brightness])


Unknown command 45, try help.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Zitat von: Michi240281 am 03 März 2014, 19:50:18
Unknown command 45, try help.

ok, das ist schon ein gutes Zeichen, dann ist der Fehler in der Definition des Notifys drin.

Dann kopiere 1:1 das, was du eingibst für deinen Notify und poste es hier.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Genau wie du es gepostet hast habe ich es eingefügt:

define BM_Terasse_Motion notify BM_Terasse:motion.*
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Ich habe beim mir den Fall genauso mit einem Notify und einem dummy nachgestellt - es funktioniert.


Ich kann den Fehler provozieren, wenn ich [BM_Terrasse: brightness] oder [BM_Terrasse:brightness ] eingebe, also vor oder hinter brightness ein Leerzeichen eingebe.

Es muss ein Leerzeichen vor oder hinter brightness bei einem der beiden Angaben im Notify bei dir drin sein, denn grundsätzlich funktioniert es, weil IF (1) ([BM_Terrasse:brightness]) den korrekten Wert "45" liefert.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Ok, ich verstehe!

Nur da ist dummerweise kein Leerzeichen! :(

Ich kopiere nochmal hier rein:

define BM_Terasse_Motion notify BM_Terasse:motion.*
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

OK, dann jetzt noch mal mit Paste und Copy um sicher zu gehen - den Fehler werden wir schon einkreisen.

Was macht in die Kommandozeile kopiert:

IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90)

wenn es keinen Unknown-Fehler bringt, dann den zweiten Teil in die Kommandozeile kopieren:

IF (1) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Also:

Beide Befehlszeilen in die Kommandozeile und es folgt kein Fehler. Habe den notify nun auch endlich einfügen können, es waren 2 Leerzeichen vor dem IF.

Nur leider tut der notify nix! Also die Lampe wird nicht eingeschaltet!

Und dann hätte ich noch ne Frage, falls ich ihn irgendwann zum Laufen bekomme: Wie bekomme ich denn dann den letzten Wert wieder hergestellt für die Lampe? So wie ich das verstehe, nimmt die Lampe nach dem Ausschalten den Wert des Readings [BM_Terasse:brightness] an, aber es soll ja der Wert von der Lampe angenommen werden, die diese hatte, bevor das notify ausgelöst wurde.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

#24
Soooooooooooooooo,

der notify läuft!!!!! :)

Hiermit:


define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})


Nur wie in meinem vorherigen Post, wird nach 90 Sekunden die Lampe_Terasse mit dem Helligkeitswert des BM gefüttert. So macht das aber keinen Sinn und war ja auch garnicht gewünscht. Ich möchte dass die Lampe den Wert wieder annimmt, den sie hatte, bevor der Notify die Lampe auf 100% gesetzt hat. Ne Idee? Hattest in deinem ersten Post ja geschrieben dass es einfach umsetzbar wäre?!?

Was ich nicht verstehe: Wenn ich den Notify so umbaue:

define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[Lampe_Terasse:state]})

geht er wieder nicht. Warum das denn? Ich sage doch hiermit: Wenn Bewegung erkannt wird und brightness <100 ist, dann mache die Lampe an. Nach 90 Sekunden nehme den Wert vom Reading Lampe_Terasse:state an. Oder nicht??????
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Zitat von: Michi240281 am 03 März 2014, 23:03:19
Soooooooooooooooo,

der notify läuft!!!!! :)

Hiermit:


define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})


Nur wie in meinem vorherigen Post, wird nach 90 Sekunden die Lampe_Terasse mit dem Helligkeitswert des BM gefüttert. So macht das aber keinen Sinn und war ja auch garnicht gewünscht. Ich möchte dass die Lampe den Wert wieder annimmt, den sie hatte, bevor der Notify die Lampe auf 100% gesetzt hat. Ne Idee? Hattest in deinem ersten Post ja geschrieben dass es einfach umsetzbar wäre?!?

Der Code macht nichts anderes, als dein vorheriger in Perl. Denn du hast dir dort genau den Wert gemerkt, der nach dem notify im Reading steht, um ihn 1,5 Minuten später zu setzen und dein jetziger Einzeiler macht nichts anderes: Wenn Motion ausgelöst wird der aktuelle Wert, sofern er kleiner 100 ist z. B. 40 anderthalb Minuten später wieder gesetzt.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Ne, da hatte ich mir aber den Wert von "Lampe_Terasse" gemerkt, nicht den Wert von brightness!!!!!!!!!!!

Macht ja keinen Sinn, die Lampe mit dem brightness Wert, der vom Bewegungsmelder kommt zu füttern! Ich möchte ja, dass die Lampe wieder den Wert annimmt, den sie hatte, bevor der Notify ausgelöst wurde!

Was ich nicht verstehe: Wenn ich das 2. [BM_Terasse:brightness] z.B. durch [Lampe_Terasse:level] ersetze, macht der notify die Lampe erst garnicht an. Wieso das denn?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Damian

Zitat von: Michi240281 am 03 März 2014, 23:23:36
Ne, da hatte ich mir aber den Wert von "Lampe_Terasse" gemerkt, nicht den Wert von brightness!!!!!!!!!!!

Macht ja keinen Sinn, die Lampe mit dem brightness Wert zu füttern! Ich möchte ja, dass die Lampe wieder den Wert annimmt, den sie hatte, bevor der Notify ausgelöst wurde!

Was ich nicht verstehe: Wenn ich das 2. [BM_Terasse:brightness] z.B. durch [Lampe_Terasse:level] ersetze, macht der notify die Lampe erst garnicht an. Wieso das denn?

Du hast recht - habe ich gerade auch gesehen.

Wenn der Wert der Lampe im reading "state" steht, dann könntest du [Lampe_Terasse:state] im define angeben. Was steht den im Level-Reading drin?

Gruß

Damian


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Michi240281

Ja der Wert steht da drin, in %! Man könnte auch das reading "level" nehmen. Allerdings weiß ich nicht, ob der sich dann den Wert von 90 Sekunden vorher merkt?!?

Und was ich halt nicht verstehe: Ich habe das schon ausgetauscht, und zwar so:

define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[Lampe_Terasse:state]})

Doch dann tut der Notify garnix!! Nur wenn der hintere Ausdruck auch [BM_Terasse:brightness] lautet, arbeitet das notify!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

@ Elektrolurch: Hast du ne Idee, warum in deiner Variante der letzte Wert nicht reingeschrieben wird? Es existiert wie gesagt ein reading namens "AlterWert" welches auch tatsächlich den letzten Wert hat, und es kommt dann auch ein "set_", doch dann geht die Lampe doch aus. Es sieht so aus, als würde da direkt wieder ein off kommen. Im EventMonitor sieht man aber kein command dafür.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905