FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gahle am 05 November 2017, 18:27:22

Titel: GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: gahle am 05 November 2017, 18:27:22
Hallo,
ich möchte einen GPIO (05) schalten, allerdings in Abhängigkeit eines anderen (AutomatikBetrieb).
Nur wenn der GPIO AutomatikBetrieb auf "off" steht, kann der GPIO.05 extern gesteuert werden.
Funktioniert leider nicht...warum ?


Zu schaltender GPIO.05:

define FilterManuell_an notify FilterManuell:on
IF ([AutomatikBetrieb:STATE] eq "off")(set GPIO.05 on)
    ELSE (set GPIO.05 off)



#***********************************************
# Einlesen eines GPIO (hier GPIO.8)
#***********************************************
define AutomatikBetrieb RPI_GPIO 8
attr AutomatikBetrieb active_low yes
attr AutomatikBetrieb direction input
attr AutomatikBetrieb interrupt both
attr AutomatikBetrieb poll_interval 20
attr AutomatikBetrieb pud_resistor up
attr AutomatikBetrieb room DigitalPins


Wo liegt der Fehler??
Danke ;-)

Gruss
gahle
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: Otto123 am 05 November 2017, 18:46:01
Hi,

mir ist nicht ganz klar was Du wirklich erreichen willst.
Gibt mal bitte ein list AutomatikBetrieb

Gruß Otto
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: gahle am 05 November 2017, 19:14:15
Hallo,

ich schalte mit dem GPIO.05 eine Filterpumpe unseres Pools zeitgesteuert ein-/aus. Ich möchte gerne einen zweiten GPIO als Eingang nutzen und mit einem Schalter dann einen manuellen/automatischenm Betrieb erzeugen. ISt immer schön wenn alles per tablet geht, aber eine manuelle Steuerung im Pumpenraum hat sich las praktusch erforderlich heraustgestellt.

Also der GPIO.08 Automatilbetrieb dient als Eingang und erkennt die Stellung eine Schalters ausserhalb der Elektronik (Funktioniert). Nur wenn der Schalter auf "off" steht, dann darf die Pumpe den zeitgesteuerten Betrieb fahren, andernfalls nur manuell.

GG
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: Otto123 am 05 November 2017, 19:24:09
Zitat von: Otto123 am 05 November 2017, 18:46:01

Gibt mal bitte ein list AutomatikBetrieb
Sorry ich sehe da keine Automatik Betrieb, ich sehe lediglich einen Trigger auf FilterManuell on

Und was an diesem notify nicht geht schreibst Du leider auch nicht. Also Deine Textaufgabe versteh ich schon, Deine Lösung aber leider nicht.
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: KölnSolar am 05 November 2017, 20:44:37
Ich benutze kein IF aber
STATE ist ein internal und müsste daher mit & "geprefixed" werden oder das Reading state nehmen.
Grüße Markus
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: Otto123 am 05 November 2017, 22:21:06
Zitat von: KölnSolar am 05 November 2017, 20:44:37
Ich benutze kein IF aber
STATE ist ein internal und müsste daher mit & "geprefixed" werden oder das Reading state nehmen.
Grüße Markus
Das ist wieder so eine Sonderlocke? von IF und DOIF !? -> http://fhem.de/commandref_DE.html#IF

Gruß Otto
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: KölnSolar am 05 November 2017, 22:35:05
jaja und hier (https://forum.fhem.de/index.php/topic,79095.0.html) die nächste "Umgehung" von at, notify, Perl.
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: gahle am 07 November 2017, 12:36:30
Hallo,
also, ich habe einen GPIO als Ausgang definiert, der ein Relais schaltet. Des Weiteren habe ich einen "Zeitschalter" definiert, der dieses Relais zu bestimmten Uhrzeiten ein-/ausschaltet. Nun möchte ich das erweitern und einen GPIO mit einem Schalter versehen, der entweder den "Zeitschalter" als Steurung für das Relais zulässt, oder manuelle das Relais einschaltet?. Wie verknüpfe ich nun den GPIO des Relais mit dem GPIO des Umschalters?
Also entweder Zeitbetrieb oder manuelles einschalten?

GPIO.05 schaltet das Relais:

# define GPIO.05 / Filterpumpe
define GPIO.05 RPI_GPIO 5
attr GPIO.05 direction output
attr GPIO.05 room DigitalPins


GPIO08 ist als Eingang des Schalters definiert:

#***********************************************
# Einlesen eines GPIO (hier GPIO.8)
#***********************************************
define AutomatikBetrieb RPI_GPIO 8
attr AutomatikBetrieb active_low yes
attr AutomatikBetrieb direction input
attr AutomatikBetrieb interrupt both
attr AutomatikBetrieb poll_interval 20
attr AutomatikBetrieb pud_resistor up
attr AutomatikBetrieb room DigitalPins


Und das hier die Definition des "Zeitschalters":

#********************************************************************
#define Zeitschalter Filterpumpe Intervall 1
#
#********************************************************************
# Einschaltzeit 1
define TimerFilterManuell1_ein at *07:00:00 set GPIO.05 on

# Ausschaltzeit 1
define TimerFilterManuell1_aus at *10:00:00 set GPIO.05 off



Wie stelle ich jetzt die Abhängigkeit GPIO.05 vom zustand GPIO.08 her?

Danke.
Gruss
gahle
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: Otto123 am 07 November 2017, 12:55:15
Hi,

irgendwie trägst Du mit Deinen Erklärungen wenig zum Verständnis bei  :-X
Mal als Grundlage, wenn hier jemand ein list <Gerätename> wissen möchte gibst Du bitte genau das in die Kommandozeile von FHEM ein -> list <Gerätename> und postest die Ausgabe in Codetags.

Was Du am Anfang mit dem notify wolltest ist mir immer noch nicht klar, aber deine jetzige Frage würde ich einfach so lösen
defmod TimerFilterManuell1_ein at *07:00:00 IF ([AutomatikBetrieb] eq "off") (set GPIO.05 on)
defmod TimerFilterManuell1_aus at *10:00:00 IF ([AutomatikBetrieb] eq "off") (set GPIO.05 off)

Das sind Befehle für die FHEM Kommanozeile! Lass bitte die Editiererei der fhem.cfg

Allerdings weiß ich immer noch nicht ob AutomatikBetrieb wirklich off liefert.

Gruß Otto
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: gahle am 07 November 2017, 13:19:54
Hier die Lists:

Internals:
   DEF        8
   EXCEPT_FD  11
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    8
   NAME       AutomatikBetrieb
   NR         100
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2017-11-06 22:09:37   Dblclick        off
     2017-11-06 22:09:37   Longpress       off
     2017-11-07 12:57:17   Pinlevel        low
     2017-11-07 12:57:17   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   direction  input
   interrupt  both
   poll_interval 20
   pud_resistor up
   room       DigitalPins


Internals:
   DEF        5
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    5
   NAME       GPIO.05
   NR         26
   STATE      on
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2017-11-06 20:51:25   Pinlevel        low
     2017-11-07 12:00:00   state           on
   fhem:
     interfaces switch
Attributes:
   direction  output
   room       DigitalPins



Ich  habe 2 Fhem-Instanzen über FHEMWeb gekoppelt die notifier zu Beginn bedienen auf meinem "Main-Server" nur Dummy-Schalter, um den Zustand der einzelnen Schalter darzustllen. Die darfst du vergessen, war eine falschen Information, sorry. Letzlich gehts nur darum entweder das Realais wie bisher mir dem Zeitintervall zu schalten oder mit einem anderen Schalter das Relais manuell einzuschalten. Werde das nachher ausprobieren.

Gruss
gahle
Titel: Antw:GPIO in Abhängigkeit des Zustand eines anderen GPIO schalten
Beitrag von: Otto123 am 07 November 2017, 21:21:41
Hi,

das sieht gut aus. Ich weiß es leider nicht ganz genau was IF jetzt wirklich genau abfragt wenn man kein Reading angibt, ich denke aber der state sieht gut aus.  ;D
ZitatIF Statusabfrage des Devices "outdoor" in der Bedingung:

define check at +00:10 IF ([outdoor] eq "open") (set switch1 on)

entspricht mit Angabe des Internals mit &:

define check at +00:10 IF ([outdoor:&STATE] eq "open") (set switch1 on)

Wenn der Reading "state" abgefragt werden soll, dann wird der Readingname ohne & angegeben:

define check at +00:10 IF ([outdoor:state] eq "open") (set switch1 on)
Gruß Otto