Schalten bei einem Schwellwert

Begonnen von Backyardboy, 24 November 2013, 20:08:56

Vorheriges Thema - Nächstes Thema

Backyardboy

Hallo Alle

Ich versuche gerdae mich in die FHEM programmierung einzuarbeiten... da ich mich noch für kein CUL entscheiden konnte habe ich mal einen Arduino mit Firmata bespielt und über USB angeschlossen. Soweit funktioniert auch alles.
FHEM läuft auf einem kleien HP-Server  (N36L) , also genug von allem vorhanden.
Testweise ist am Analogeingang ein Lichtempfindlicher Widerstand angeschlossen, der Liefert auch fleissig Daten. Als Schalter benutze ich den Ausgang einer Aldi-IR-Webcam (Maginon IPC-1), auch das funktioniert.

Das Notify läuft auch grundsätzlich, es wird aber momentan dauernd aufgerufen, wodurch der Schalter erst nach mehreren Minuten reagiert und die Weboberfläche nahezu blockiert.  Ich habe zu dieser Problematik zwar einige Beiträge gefunden, aber bis jetzt noch keine der Antworten begriffen... hier mal was ich habe:

1. Die Definition des Analogeingangs

#LDR am Arduino 0=Dunkel  >300=Licht an
define Firmata_IN_7 FRM_IN 7
attr Firmata_IN_7 count-mode rising
attr Firmata_IN_7 room Testlabor
attr Firmata_IN_7 stateFormat reading

2. Eine Anzeige fürs GUI (funktioniert)

define WebSchalter_01 dummy
attr WebSchalter_01 alias Licht Kellertreppe
attr WebSchalter_01 room Haus
attr WebSchalter_01 setList off on

3. das Notify
define KTLicht notify Firmata_Analog_0* { if ( "$EVTPART1" > 300 ) { fhem ("set WebSchalter_01 on");;{system("wget -o /dev/null 'http://192.168.2.60/decoder_control.cgi?command=94&user=admin&pwd='")} } else { fhem ("set WebSchalter_01 off");;{system("wget -o /dev/null 'http://192.168.2.60/decoder_control.cgi?command=95&user=admin&pwd='")} } }

Fragen:
-Was wäre nun die einfachste Möglichkeit das Notify nur bei über/unter -schreiten eines Schwellwerts (300) zu aktivieren?

-Wie würde man das bei einem digitalen Eingang lösen? Z.B. bei aktivem Eingang X soll einen aktion ausgelöst werden, aber nur einmal. (Ich denke an eine Mail bei drücken der Türklingel)

Grüsse und Danke für die Hilfe

Backyardboy

P.S. könnte man die Captchas für Leute ab 40 nicht etwas einfacher machen, meine armen Augen...  ;)




Icebear

Hi,

zu 1: modul threshold (ist genau dafür)
zu 2:dürfte über watchdog gehen oder über den parameter event-min-interval
gruss
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

Backyardboy

Hallo Icebear

Ja, THRESHOLD habe ich auch gefunden...

Das Beispiel aus der Referenz:

define thermostat THRESHOLD temp_sens heating
set thermostat desired 20

Bei mir wäre das:

define TestLicht THRESHOLD Firmata_Analog_0 WebSchalter_01
set TestLicht desired 300

Das gibt dann aber eine Fehlermeldung: Unknown actor device WebSchalter_01 specified
Obwohl ich von Hand z.B "set WebSchalter_01 on" problemlos eingeben kann

Kann ich den Dummy Webschalter_01 nicht als Aktor ansprechen?
Und wie kann ich dann ein Script (den wget Aufruf) als Aktor benutzen?

Icebear

Hi

du kannst einmal einen Aktuator angeben (das hast du getan) dafür muss threshold aber den Device Typen kennen (bei einem Dummy schwierig) oder du kannst dem treshold auch einen befehl geben der auszuführen ist (anstatt eines aktuators)

grüsse
Raspberry PI mod B (Wheezy), Fhem 5.4, CUL868, CUL433 , RfxTrx, HM-USB-CFG2, Wlan, HomeEasy, IT, FS20, TFA, HomeMatic, Oregon Scientific, HMLand auf Fritzbox
Raspberry PI mod B (RaspBMC)

Damian

Zitat von: Backyardboy am 24 November 2013, 21:09:10
Hallo Icebear

Ja, THRESHOLD habe ich auch gefunden...

Das Beispiel aus der Referenz:

define thermostat THRESHOLD temp_sens heating
set thermostat desired 20

Bei mir wäre das:

define TestLicht THRESHOLD Firmata_Analog_0 WebSchalter_01
set TestLicht desired 300

Das gibt dann aber eine Fehlermeldung: Unknown actor device WebSchalter_01 specified
Obwohl ich von Hand z.B "set WebSchalter_01 on" problemlos eingeben kann

Kann ich den Dummy Webschalter_01 nicht als Aktor ansprechen?
Und wie kann ich dann ein Script (den wget Aufruf) als Aktor benutzen?

Es funktioniert auch mit DUMMY:

define TH_Test THRESHOLD T_Keller WebSchalter_01

funktioniert bei mir ohne Probleme (list TH_Test):

Internals:
   CFGFN     
   CHANGED   
   DEF        T_Keller WebSchalter_01
   NAME       TH_Test
   NR         6830
   NTFY_ORDER 50-TH_Test
   STATE      initialized
   TYPE       THRESHOLD
   cmd1_gt    set WebSchalter_01 off
   cmd2_lt    set WebSchalter_01 on
   cmd_default 2
   hysteresis 1
   offset     0
   sensor     T_Keller
   sensor_reading temperature
   Readings:
Attributes:
   state_cmd1_gt off
   state_cmd2_lt on
   state_format _m _dv _sc

WebSchalter_01 ist bei mir ein DUMMY und T_Keller ein Temp-Sensor.

Bitte Groß- bzw. Kleinschreibung beachten.

Gruß

Damian

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