Relais Status Pin 24V auslesen ?

Begonnen von jumperger, 20 Oktober 2019, 20:08:44

Vorheriges Thema - Nächstes Thema

Amenophis86

Ich bitte die persönliche Fehde hier zu stoppen und zum Thema zurück zu kommen. Danke
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Otto123

Zitat von: jumperger am 22 Oktober 2019, 23:42:59
Das mit der galvanischen Trennung im ,,Schaltkanal" verstehe ich nun gar nicht.
Ist mit Schaltkanal der Weg vom RPi zum CP24 RelaisModul (240V) gemeint?
Wenn ja, müsste doch die Chinarelaisplatine eine Trennung sein, die hat ja ein mechanisches Relais und davor noch einen Optokopler?
Ich sag mal hierzu meine Sicht auf das was ich hier bisher gesehen/gelesen habe:
Das CP24 Modul macht eine galvanische Trennung zwischen Netz (240 Volt) und dem Steuerkreis (24 Volt). Alles andere wäre nicht zulässig.
Du schaltest mit den Relais deines Moduls den Steuerkreis am CP24, habe ich verstanden. Das wäre die zweite Trennung.
Das Relais Modul hat Optokoppler im Steuereingang. Es kann damit den Steuereingang von der Spannungsversorgung des Relais Moduls trennen, wenn man es richtig macht. Das wäre dann die dritte Trennung im Steuerkreis.
Genau genommen brauchst Du im Signalisierungskanal nur Eine (die vom CP24) man könnte aber auch nochmal mit Optokoppler trennen.

Nur um bestehende Technik weiter zu verwenden, würde ich den Aufwand nicht höher treiben als nötig (der Wert der bestehenden Technik). Ansonsten könnte man sie besser komplett ersetzen. :D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

jumperger

Vielen, vielen Dank um die Klarstellung.
Genau so hatte ich es verstanden , aber lieber mal nachfragen.

Zitat von: Otto123 am 23 Oktober 2019, 09:50:23
Nur um bestehende Technik weiter zu verwenden, würde ich den Aufwand nicht höher treiben als nötig (der Wert der bestehenden Technik). Ansonsten könnte man sie besser komplett ersetzen. :D
Das ist nicht das Ziel des Ganzen. Mir ging es drum ein Idee zu haben, ein Lösung zu suchen und sie umzusetzen und dabei etwas neues zu lernen und das dank eurer Hilfe.

Also möchte ich jetzt einen Versuch machen den Status des Relais auszulesen.

Wenn ich die konstruktiven Beiträge richtig verstanden habe würde also eine direkte Verbindung zwischen CP24 und dem GPIO Pin .
Zu klären bleibt dann noch ob der GPIO Expander Pin genau so behandelt werden kann wie der direkte GPIO am RPi.
Um das Expander Problem zu umgehen kann ich ja testweise direkt einen GPIO benutzen, die sind alle am Expander durchgeschleift, und er sollte ja nur einen benutzen.

Nur müsst ihr mir jetzt auf die Sprünge helfen damit ich weiss nach was ich suchen soll um den GPIO richtig zu konfigurieren und dann mit fhem auszulesen.


Otto123

Wie sprichst Du die GPIO denn in die andere Richtung an?

Ich würde spontan sagen: RPI-GPIO aber ich habe das nicht im Einsatz.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Prof. Dr. Peter Henning

#19
Die ganze Misere rührt doch daher, dass die Steuertaster für die ursprüngliche Relais-Mimik 240V auf die Eingänge der Relais legen, parallel zu diesen Steuertastern sind jetzt (soweit man das verstehen kann) andere Relais angeschlossen, die über je einen Optokoppler aus einem I2C-Interface (?) und dieses FHEM gesteuert werden. Das ist die von Otto aufgelistete dreifache Trennung.

Es entzieht sich meinem Verständnis, warum jetzt auch noch die GPIO-Ports mit einbezogen werden sollen. Wenigstens sollte man so konsistent sein, auch die Eingänge über I2C abzufragen, Teile dafür gibt es genug: https://www.horter-shop.de/de/i2c-hutschienen-module/105-bausatz-i2c-digital-input-modul-4260404260714.html

Und bei den Schaltausgängen kann man ebenfalls eine Stufe einsparen, wenn man die Leistungstransistoren (z.B. in einem der Horter-Module) durch ordentliche Triacs ersetzt, siehe z.B. https://www.mikrocontroller.net/articles/I2C-Schaltmodul

LG

pah

Frank_Huber

GPIO als Eingang definiert z.B.:
defmod GPIO_IN_21 RPI_GPIO 21
attr GPIO_IN_21 active_low yes
attr GPIO_IN_21 debounce_in_ms 20
attr GPIO_IN_21 direction input
attr GPIO_IN_21 interrupt both
attr GPIO_IN_21 pud_resistor up


Es sollte WiringPI installiert sein, sonst gehen die internen Pull Up nicht.
Besse wäre es aber ohnehin einen externen 10K Pull Up gegen 3,3V zu ziehen.

jumperger

Zitat von: Frank_Huber am 23 Oktober 2019, 19:00:36
Besse wäre es aber ohnehin einen externen 10K Pull Up gegen 3,3V zu ziehen.
1. das wäre dann so wie von Bartmann empfohlen?
Sein Bild

2. Desweiteren verstehe ich das richtig dass dein Code für den RPi GPIO ist und nicht für die GPIOs des I2C.

3. Wenn der externe Pull-Up benutzt wird, leben die I2C GPIOs ja sicher, also würde ja nichts gegen deren Benutzung sprechen, oder?

(die Ziffern sollen dem einfacheren Beantworten dienen.)

Frank_Huber

#22
Zitat von: jumperger am 23 Oktober 2019, 19:25:13
1. das wäre dann so wie von Bartmann empfohlen?
2. Desweiteren verstehe ich das richtig dass dein Code für den RPi GPIO ist und nicht für die GPIOs des I2C.
3. Wenn der externe Pull-Up benutzt wird, leben die I2C GPIOs ja sicher, also würde ja nichts gegen deren Benutzung sprechen, oder?
1. Ja.
2. Ja, RPI_GPIO. zum verwenden der MCCP23017 musst noch einen Interrupt Pin zu einem RPI_GPIO legen und diesen abfragen. Ich würde daher alle Eingänge auf den PI legen und die Ausgänge auf dem MCP23017. spart einiges an Logik.
3. siehe 2.

EDIT zu 2.:
Aus der Commandref zum MCP23017:
Ermöglicht die Verwendung eines MCP23017 I2C 16 Bit Portexenders. Auf einem Raspberry Pi kann der Interrupt Pin des MCP23017 mit einem GPIO verbunden werden und über die Interrupt Funktionen von RPI_GPIO lässt sich dann ein get für den MCP23017 bei Pegeländerung auslösen.

jumperger

Danke für die klare Antwort.
A. Alle Eingänge auf den Pi, das sollte in dem Test-Unterverteiler kein Problem sein es sin ja nur 8 Relais benutzt.
Ich setze eine 3B+ ein, ich habe folgende Pin-Belegung gefunden: 3B+_GPIOs.PNG (von dieser SEITE )
Pin 3 + 5 wären demnach für die I2C-Expander Platine, als Eingang GPIOs könnte ich die grünen Pins 11 / 13 / 15 / 16 / 18 / 22 / 36 / 37 benutzen das sind zwar nur 7 aber für meine ersten Tests sollte das reichen.

B. Darf ich nachfragen ob ich richtig verstehe was ein Interrupt ist? Der MCP hat jeweils eine 9-fach Stiftleiste, 1-8 sind die GPIOs und der 9 ist der Interrupt. Der MCP schaut ständig ob sich an den 1-8 Pins was geändert hat und falls das eintritt meldet er das über den Interrupt-Pin an den entsprechenden RPi GPIO ?

Zitat von: Otto123 am 23 Oktober 2019, 17:07:32
Wie sprichst Du die GPIO denn in die andere Richtung an? ...

Dank der Hilfe von Frank mache ich das mit:
defmod Licht_Buro_Taster_DOIF DOIF (xyz) (set OUT_1 PortB5 on)(set OUT_1 PortB5 off)
attr Licht_Buro_Taster_DOIF cmdState M26_L1-2_On_Off
attr Licht_Buro_Taster_DOIF do always
attr Licht_Buro_Taster_DOIF room E1_Buro
attr Licht_Buro_Taster_DOIF wait 0,0.3
attr Licht_Buro_Taster_DOIF webCmd M26_L1-2_On_Off

setstate Licht_Buro_Taster_DOIF M26_L1-2_On_Off
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 cmd 1.2
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 cmd_event set_M26_L1-2_On_Off_cmd_1
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 cmd_nr 1
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 cmd_seqnr 2
setstate Licht_Buro_Taster_DOIF 2019-10-10 21:25:13 mode enabled
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 state M26_L1-2_On_Off
setstate Licht_Buro_Taster_DOIF 2019-10-23 18:27:58 wait_timer no timer


EDIT:
@ Frank_Huber ich war am Schreiben als du dein Edit geschrieben hast

Frank_Huber

#24
Du hast (die i2c schon abgezogen) 24 gpio zur Verfügung.

https://images.app.goo.gl/4ZKKPnanC2RY52TD9

verfügbare GPIO: (Liste meiner definierten RPI_GPIO)
GPIO_IN_04
GPIO_IN_05
GPIO_IN_06
GPIO_IN_07
GPIO_IN_08
GPIO_IN_09
GPIO_IN_10
GPIO_IN_11
GPIO_IN_12
GPIO_IN_13
GPIO_IN_14
GPIO_IN_15
GPIO_IN_16
GPIO_IN_17
GPIO_IN_18
GPIO_IN_19
GPIO_IN_20
GPIO_IN_21
GPIO_IN_22
GPIO_IN_23
GPIO_IN_24
GPIO_IN_25
GPIO_IN_26
GPIO_IN_27


Frank_Huber

Zitat von: jumperger am 23 Oktober 2019, 20:56:15
Dank der Hilfe von Frank mache ich das mit:
btw, das ist NUR für das schalten aus FHEM.
Da sind die GPIO Eingänge noch nicht berücksichtigt.

jumperger

Vielen Dank.
10kOhm hab ich noch hier also wäre alles verfügbar zum testen , nur dass jetzt endlich besseres Wetter bei uns eingesetzt hat und somit der Garten von meiner Prime Minister zum Premium Ziel ausgerufen wurde. Es wird also etwas dauern bevor ich berichten kann ob ich weiter gekommen bin.

@Frank :
es mit dem MCP23017 auszulesen wäre aber schon irgendwie cool.

PS: ich habe im Tablet-UI Bereich ein Thema eröffnet, falls sich da jemand auskennt wäre ich auch sehr dankbar, denn da hab ich keine Ahnung wo ich ansetzen soll. Mein Tablet-UI funktioniert tadellos auf meinem iPhone und iPad, auf 2 anderen iPhones und einem Android hingegen nicht obwohl die Passwortabfrage kommt. HIER der entsprechende Threat.

Frank_Huber

#27
Zitat von: jumperger am 24 Oktober 2019, 15:59:15
@Frank :
es mit dem MCP23017 auszulesen wäre aber schon irgendwie cool.
Habe ich nicht so umgesetzt da mir dann die 32 GPIO pro Instanz nicht gereicht hätten.
So hab ich jetzt aufgeteilt. Eingang am PI selbst, Ausgang am MCP23017

sollte aber generell machbar sein.
die Interrupt Leitungen auf einen PI-GPIO verdrahten, diesen per Notify abfragen und damit ein get auf den MCP23017.

jumperger

#28
Wenn ich Pin Nummer 15 als GPIO In benutze und Pin 17 als 3,3V ist dann dein code:
defmod GPIO_IN_22 RPI_GPIO 22
In dem Fall würde die Kolonne BCm benutzt und nicht NAME der Ausgabe von Gpio readall?
Als Anhang ein readall der GPIOs.

Wenn dann ein readall gemacht wird bei ausgeschaltetem Licht und ein neues bei eingeschaltetem Licht, sollte dann der Wert in Spalte "V" àndern?

Frank_Huber

Ja, das BCM sind die definitionen, das sind die GOIO Nummern.

Die Ausgabe ändert sich bei AUSGANGS-GPIO wenn Du sie schaltest und bei EINGANGS-GPIO je nach Pin Level. (1 mit Pull up zu 3v3, 0 wenn geschaltet gegen Masse.