state "on" soll eigentlich "on-for-timer" auslösen

Begonnen von meimi039, 26 August 2013, 10:36:15

Vorheriges Thema - Nächstes Thema

meimi039

Hallo FHEMler!

Nach viel Grübelei nun mal meine erste Frage hier im Forum:
Seit langer Zeit betreibe ich einen großen Zoo an Hardware, welchen ich über cron-jobs gesteuert habe. Darunter AVRNETIOs, USB-Steckdosen, FS20 und HM. Nun möchte ich auf einer Fritzbox alles unter FHEM zusammenführen, da die Familie die Geräte mit andFHEM steuern soll.
Im konkreten Beispiel geht es um die Zirkulationspumpe der Heizung. Ich möchte über EINEN Button die Pumpe anschalten. Also erstmal mit einem Testknopf probieren:

Ich habe folgendes definiert:

define Testknopf dummy
attr Testknopf room Labor
attr Testknopf setList on on-for-timer off
define Testknopf_on notify Testknopf:on set Testknopf on-for-timer 20
define Testknopf_oft notify Testknopf:on-for-timer "echo 'Testknopf on'"
define Testknopf_off notify Testknopf:off "echo 'Testknopf off'"


Der Button bleibt dann aber leider nur im Status "on-for-timer" und wechselt nicht nach "off". Das musste ich hier selbst tun:

2013.08.25 16:34:07 4: HTTP FHEMWEB:192.168.x.y:58369 GET /fhem?XHR=1&cmd=set+Testknopf+on
2013.08.25 16:34:07 4: dummy set Testknopf on
2013.08.25 16:34:07 4: dummy set Testknopf on-for-timer 20
2013.08.25 16:34:07 4: /fhem?XHR=1&cmd=set+Testknopf+on / RL: 0 / text/plain; charset=UTF-8 /  /
2013.08.25 16:34:50 4: HTTP FHEMWEB:192.168.x.y:58369 GET /fhem?XHR=1&cmd=set+Testknopf+off
2013.08.25 16:34:50 4: dummy set Testknopf off
Testknopf off
2013.08.25 16:34:50 4: /fhem?XHR=1&cmd=set+Testknopf+off / RL: 0 / text/plain; charset=UTF-8 /  /


Wo denke ich hier in die falsche Richtung?



Paul

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

meimi039

Hi Paul!

Das sind ja wahnsinns Reaktionszeiten hier!
Ich vermute du meinst "follow-on-for-timer". Das klingt sehr verlockend. Aber "Anfängerfrage": Wo baue ich das ein? Schon direkt bei der Definition von on?:

define Testknopf dummy
attr Testknopf room Labor
attr Testknopf setList on on-for-timer off
define Testknopf_on notify Testknopf:on set Testknopf follow-on-for-timer 10
define Testknopf_off notify Testknopf:off "echo 'Testknopf off'"


Das habe ich gerade getestet - mit Teilerfolg, denn der Button ist Tatsächlich auf off. Aber:

Internals:
   NAME       Testknopf
   NR         176
   STATE      follow-on-for-timer 10
   TRIGGERTIME 2013-08-26 11:04:31
   TYPE       dummy
   Readings:
     2013-08-26 11:04:31   state           follow-on-for-timer 10
Attributes:
   alias      Scriptschalter zum Testen
   room       Labor
   setList    on on-for-timer off


Der STATE bleibt auf "follow-on-for-timer 10" und wechselt nicht auf off. Daher wird mein OFF-Script nicht ausgeführt.

Was fehlt mir da noch?


Paul

Nein ich meinte follow-for-timer

Also:

attr Testknopf follow-for-timer 10
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Paul

Warum willst du eigentlich ein off-Script ausführen?
Das on-for-timer 10 schaltet doch automatisch auf off nach der angegebenen Zeit
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

meimi039

Das habe ich mal hinzugefügt... Dann sagt das logfile:

Testknopf: unknown attribute follow-for-timer, choose one of room ....

Bei mir läuft fhem 5.4...

meimi039

Ich habe da ein kleines Shell-Script, welches meine AVRNIOs schaltet. Das sieht so aus:

#!/bin/sh
############################################################################
##                                                                        ##
## avrnetio [IP/HOTNAME] [RELAIS] [on/off/an/aus/0/1]                     ##
##           ohne RELAIS und ACTION wird der STATUS ausgegeben            ##
##                                                                        ##
############################################################################

BOARDIP=$1
PORT=$2
ACTION=$3

if [[ "$PORT" == "" ]]
then
echo getstatus | nc $BOARDIP 50290
exit 0
fi

case $ACTION in
on | an | 1)
echo setport $PORT.1 | nc $BOARDIP 50290 > /dev/null
;;

off | aus | 0)
echo setport $PORT.0 | nc $BOARDIP 50290 > /dev/null
;;

toggle)
STATUS=$(echo getstatus | nc $BOARDIP 50290)
QUERY=$((9-$PORT))
PORTSTATE=${STATUS:$QUERY:1}

if [[ $PORTSTATE == 0 ]]
then
echo setport $PORT.1 | nc $BOARDIP 50290 > /dev/null
else
echo setport $PORT.0 | nc $BOARDIP 50290 > /dev/null
fi
;;
esac

STATUS=$(echo getstatus | nc $BOARDIP 50290)
QUERY=$((9-$PORT))
PORTSTATE=${STATUS:$QUERY:1}

echo $PORTSTATE | sed -e 's/0/aus/;s/1/an/'


In meiner fhem.cfg gibt es dafür:
define FLUTLICHT dummy
attr FLUTLICHT room Aussen
attr FLUTLICHT setList on off
define FLUTLICHT_on notify FLUTLICHT:on "/tmp/flash/_/avrnetio avrnetio1 2 on"
define FLUTLICHT_off notify FLUTLICHT:off "/tmp/flash/_/avrnetio avrnetio1 2 off"


Im Falle der Z-PUMPE will ich auf den Button drücken und die Pumpe für 5 min laufen lassen - was derzeit mein watchdog per cronjob alle paar Minuten prüft. Und wenn er die Pumpe zweimal beim Laufen erwischt schaltet er sie ab.
Das ist es, was ich mit fhem einfach per on-for-timer umsetzen wollte.

meimi039

Es gibt neue Erkenntnisse:

Da mein "Testknopf" ein "dummy" ist, gibt es für ihn das Attribut follow-on-for-timer nicht. Das ist wirklich schade. Ich habe die Tests mit einem FS20 Device gemacht, und das geht ohne Probleme. Die Config dafür sah so aus:

define Testknopf fs20 dead 01
attr Testknopf model fs20st
attr Testknopf room Labor
attr Testknopf eventMap /on-for-timer 10:on/
attr Testknopf follow-on-for-timer 1


Das bedeutet, Ich muß entweder ins blaue funken, oder noch ein wenig nachdenken...

Paul

Probier es doch so:

define FLUTLICHT_on notify FLUTLICHT:on "/tmp/flash/_/avrnetio avrnetio1 2 on"; define 5min at +00:05:00 set Flutlicht off
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

rudolfkoenig

>  Das bedeutet, Ich muß entweder ins blaue funken, oder noch ein wenig nachdenken...

Oder das FS20 dummy Attribut setzen: http://fhem.de/commandref.html#FS20

meimi039

Hallo Rudolf!

Schön, daß Du Dir die Zeit nimmst. Mit all den Infos, die bis jetzt hier im Thread stehen, kann ich das Problem lösen. Danke auch an Paul.
Ich werde wohl am einfachsten tote FS20 devices anlegen, dann behandelt auch andFHEM die Buttons richtig.

Ok. Dann kann es jetzt an die kniffeligen Automationsaufgaben gehen.

Grüße


Michael