[Gelöst]Analogen Wert zum Schalten nutzen (vom Arduino per USB und Firmata ang.)

Begonnen von AlexS, 03 März 2014, 18:06:03

Vorheriges Thema - Nächstes Thema

AlexS

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.

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

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

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

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


justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

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

AlexS

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

justme1968

in welchem reading steht die helligkeit  LDR?

was zeigt ein list auf Hellikeit?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

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


justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

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

justme1968

du musst im THRESHOLD device reading statt state verwenden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

AlexS

Na klar.

Logisch :-)

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


VG Alex S