FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: AlexS am 03 März 2014, 18:06:03

Titel: [Gelöst]Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata ang.)
Beitrag von: AlexS am 03 März 2014, 18:06:03
Hallo zusammen.

Nach schier ewiger Suche wende ich mich nun ans Forum, auch auf die Gefahr hin das es sowas sicher schon als Frage/Antwort gibt.

Ich nutze seit einigen Wochen FHEM auf einem PRI erfolgreich. Er steuert sämtliche FunkSteckdosen (auch Zeitgesteuert) mittels eines am GPIO Port angeschlossenem 433MHz sender (3euro aus China) und liefert mir Verschiedene Analoge und digitale Werte von einem mittels USB angeschlossenem Arduino Nano. Nun zum Thema:

Ich möchte die gemessenen Werte von einem LDR am Arduino in Fhem zum Schalten einer Funksteckdose nutzen.
In Fhem werden die gemessenen Werte bereits Angezeigt. Realisiert ist das in der config wie folgt:

       define LDR FRM_AD 14
       attr LDR room Wohnzimmer

Fehlt nur noch das "Werte-abhängige" schalten

Programmtechnisch also so in etwa      if LDR > 800   set Steckdose1 on
                                                        if LDR < 800   set Steckdose1 off

Ich habe bereits mehrfach versucht das ganze mit notify zu lösen, jedoch bin ich ein absoluter Perl Neuling.

Ich hoffe ihr könnt mir da weiterhelfen..

Vielen Dank Alex S.
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 03 März 2014, 18:11:40
schau dir THRESHOLD an.

gruss
  andre
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 03 März 2014, 18:23:36
Danke für die schnelle Antwort, aber da habe ich das gleiche Problem.

Ich sagte ja das ich mit dem Pearl-Code schreiben ein absoluter Anfänger bin.

Gruß Alex
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 03 März 2014, 18:24:39
du musst ja eben genau keinen perl code schreiben. schau dir doch mal die  beispiele zu THRESHOLD an,. in der commandref, im wiki und hier.

gruss
  andre
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 03 März 2014, 19:39:23
Hallo.

So viel Probiert und gelesen und irgendwie trotzdem kaum Schlauer.... Hoffentlich platzt der Knoten bald....

Lava ist eine Funksteckdose
Werte liegen bei      DUNKEL um die 700
                             Hell um die 1000
sollte also ein ausreichend großer Bereich sein

Mein Versuch

define Helligkeitindoor THRESHOLD LDR Lava
#set Helligkeitindoor desired 800
attr Helligkeitindoor state_cmd1_gt off
attr Helligkeitindoor state_cmd2_lt on
#attr Helligkeitindoor state_format _m _dv _sc
attr Helligkeitindoor webCmd desired
set Helligkeitindoor desired 1000

Aber irgendwie schaltet nichts. Im Log bekomme ich
2014.03.03 18:37:39 2: Helligkeitindoor: no reading yet for LDR temperature

Gruß Alex

Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 03 März 2014, 20:05:02
define Helligkeitindoor LDR:state:100:800 Steckdose1|set @ on|set @ off

für das device LDR mit dem reading state schalte den aktor Steckdose1 wenn der wert >800 ist an und wenn der wert < 800 ist aus. und das ganze mit hysterese 100.

gruss
  andre
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 03 März 2014, 21:31:58
Danke für die Hilfe.....

Ist zwar noch irgendwie der Wurm drin. Fehler im Log ist weg, aber es schaltet immer noch nichts.....

Aber ich versuche heut erstmal das alleine herauszubekommen....

Gruß Alex
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 05 März 2014, 18:21:27
Hallo zusammen.

Die letzten beiden Abende bin ich kein Stück weiter gekommen.

Deswegen jetzt hier ein Auszug aus meiner config. Vielleicht fällt euch ja die Lösung ein.

Das Licht/die Steckdose lässt sich so einwandfrei schalten. Der Wert vom LDR am Arduino stimmt auch.
Nur aus der THRESHOLD Geschichte heraus geschieht nichts. Wieso? Was mache ich falsch


Gruss Alex

#GPIO sender
define Lichtleiste dummy
attr Lichtleiste room Wohnzimmer
attr Lichtleiste setList on off
attr Lichtleiste icon light_light
define off_Lichtleiste  notify Lichtleiste:off {system("/usr/local/bin/send433 10110 3 0 &")}
define on_Lichtleiste  notify Lichtleiste:on {system("/usr/local/bin/send433 10110 3 1 &")}

define Arduino1 FRM /dev/ttyUSB0@57600
attr Arduino1 sampling-interval 1000

define LDR FRM_AD 14
attr LDR room Wohnzimmer

define Helligkeit THRESHOLD LDR:state:100:800 Lichtleiste|set @ on|set @ off
attr Helligkeit room Wohnzimmer
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 05 März 2014, 18:32:59
in welchem reading steht die helligkeit  LDR?

was zeigt ein list auf Hellikeit?

gruss
  andre
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 05 März 2014, 18:44:40
Hallo

das list zeigt

Internals:
   CHANGED   
   DEF        LDR:state:100:800 Lichtleiste|set @ on|set @ off
   NAME       Helligkeit
   NR         130
   NTFY_ORDER 50-Helligkeit
   STATE      active 800
   TYPE       THRESHOLD
   cmd1_gt    set Lichtleiste on
   cmd2_lt    set Lichtleiste off
   cmd_default 0
   hysteresis 100
   init_desired_value 800
   offset     0
   sensor     LDR
   sensor_reading state
   Readings:
     2014-03-05 11:47:05   cmd             wait for next cmd
     2014-03-05 11:47:05   desired_value   800
     2014-03-05 11:47:05   mode            active
     2014-03-05 11:47:06   state           active 800
     2014-03-05 11:47:05   threshold_max   800
     2014-03-05 11:47:05   threshold_min   700
Attributes:
   room       Wohnzimmer
   state_format _m _dv


was meinst du mit dem Reading?

Gruß Alex

Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 05 März 2014, 18:47:10
mach bitte auch ein list auf LDR.
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 05 März 2014, 18:50:18
Internals:
   DEF        14
   IODev      Arduino1
   NAME       LDR
   NR         125
   PIN        14
   STATE      305
   TYPE       FRM_AD
   resolution 10
   Readings:
     2014-03-05 17:49:48   reading         305
     2014-03-05 11:47:05   state           Initialized
Attributes:
   event-min-interval 5
   room       Wohnzimmer
   stateFormat reading
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: justme1968 am 05 März 2014, 18:52:00
du musst im THRESHOLD device reading statt state verwenden.

gruss
  andre
Titel: Antw:Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata angebunden)
Beitrag von: AlexS am 05 März 2014, 18:55:52
Na klar.

Logisch :-)

1000send Dank. Läuft wunderbar, auch mit den anderen Sensoren.


VG Alex S