32 Relais mit FHEM schalten?

Begonnen von jumperger, 04 Juli 2019, 12:41:53

Vorheriges Thema - Nächstes Thema

jumperger

Bingo,
i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- 21 22 -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- 


Einfach nur dein Board aufgesteckt und i2cdetect , schon bekomm ich eine Tabelle mit Adressen.

Also ist mein 64GPIO-Board defekt nehme ich an?

Frank_Huber

Ja, eindeutig.


defmod OUT_1 I2C_MCP23017 0x21
attr OUT_1 IODev I2C
attr OUT_1 OnStartup A0=last,A1=last,A2=last,A3=last,A4=last,A5=last,A6=last,A7=last
attr OUT_1 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7


Kannst zum Testen definieren wenn dein I2C Bus in Fhem I2C benannt ist.
Das gleiche dann mit 0x22 für die nächsten 16 ports.

Gesendet von meinem S60 mit Tapatalk


jumperger

Zitat von: Frank_Huber link=topic=102001.msg965186#
... wenn dein I2C Bus in Fhem I2C benannt ist....

Als totaler Anfänger, Fhem ist eine Neuinstallation, ohne alles.
Wie finde ich da heraus wie mein I2C-Bus benannt ist?

Für die weiteren 16Gpios, muss es da OUT_2 heissen?

Frank_Huber

Weiter oben hab ich die i2c Definition gepostet. [emoji6]
Ja, der zweite z. B. OUT_2 mit Adresse 22.

Gesendet von meinem S60 mit Tapatalk


jumperger

#64
Mein ertes Erfolgserlebniss mit Fhem DANKE Frank !!! siehe Bild

Jeweils der erste Pin pro Leiste auf on. ;D

Der eingeschaltete Pin soll je mein China-Relais betätigen , damit dieses einen Taster an meinen 240V Relais simuliert.

Welche Infos muss ich nun suchen um zu lernen wie anstatt eines permanenten ON oder OFF der Pin nur ein kurzfristiges "ON" hat um so das China-Relais auch nur kurzfristig anzuzehen um so wie ein Taster zu wirken?



Frank_Huber

Nabend, nix zu danken. Da die 23017er kein on-for-timer können musst das manuell machen. Bei doif z. B. Mit (set OUT_1 PortA0 on) (set OUT_1 PortA0) off.
Den zweiten Befehl dann mit dem wait Atibut verzögern.

Bei notify ist es ähnlich, kann ich dir aber nicht genau sagen.

Gesendet von meinem S60 mit Tapatalk


jumperger

Bastelt man sich so eine Art virtuellen Button , welcher dann dieses Komando an den I2C sendet?
Du weisst ja ich hab noch gar keine Ahnung von dem Ganzen und weiss meistens nicht nach was ich suchen soll.
Und doch : Vielen Dank!

Frank_Huber

Was wird denn dein Auslöser?
D. H. Was willst du am Ende für eine Funktion erreichen?

Gesendet von meinem S60 mit Tapatalk


jumperger

#68
Endfunktion, meine 240V Relais aus der Schalttafel auch mit Fhem bedienen. ( Taster auf Tablet und Smartphone)
Bis jetzt werden sie über mechanische Taster geschaltet, diese schliessen kurzfristig einen 24V Kreis und das 240V Relais wechselt die Position.
Für Fhem würde dann eine China-Relais-Platiene dazu kommen. Dieses China-Relais soll also ein weiterer "Taster" parrallel im 24V Kreis sein welcher den Zustand des 240V Relais triggert.
Über den I2C-Pin soll das China-Relais kurzzeitig angezogen werden um das 240v Relais (d.h. Lampe) ON/OFF zu schalten.
Das ist das erste Ziel.
Wenn das dann steht sollen 4 Doppel-Relais der Rolomotoren dazu kommen, müssten also gegenseitig blockierende Buttons Hoch/Runter haben.

Prof. Dr. Peter Henning

Das ist doch viel zu kompliziert gedacht. Relais, die andere Relais steuern, und Doppelrelais mit blockierenden Tastern - so etwas hat man in den 1970er Jahren gebaut. Es gibt mehrere Lösungen, die sehr viel besser wären.

Beispiel: 8x Shelly4Pro. Direkte Ansteuerung über Taster, und aus FHEM via WLAN.

LG

pah


Frank_Huber

Zitat von: jumperger am 12 August 2019, 20:23:52
Endfunktion, meine 240V Relais aus der Schalttafel auch mit Fhem bedienen. ( Taster auf Tablet und Smartphone)
Bis jetzt werden sie über mechanische Taster geschaltet, diese schliessen kurzfristig einen 24V Kreis und das 240V Relais wechselt die Position.
Für Fhem würde dann eine China-Relais-Platiene dazu kommen. Dieses China-Relais soll also ein weiterer "Taster" parrallel im 24V Kreis sein welcher den Zustand des 240V Relais triggert.
Über den I2C-Pin soll das China-Relais kurzzeitig angezogen werden um das 240v Relais (d.h. Lampe) ON/OFF zu schalten.
Das ist das erste Ziel.
Das ist aber hoffe ich auch nur ein Zwischenschritt um "irgendwann" die 24V Relais ganz zu ersetzen?
Die Variante von pah funktioniert hier bestimmt auch. Sind dann aber 8 WLAN Geräte mehr die umherfunken.

Zur Fragestellung, ein DOIF zum manuellen Auslösen über das WebIF:
defmod 3sec_DOIF DOIF (xyz) (set OUT_1 PortA0 on)(set OUT_1 PortA0 off)
attr 3sec_DOIF cmdState 3sec
attr 3sec_DOIF do always
attr 3sec_DOIF wait 0,3
attr 3sec_DOIF webCmd 3sec

im webIF drückst auf "3sec", dann wird OUT_1 Port A0 für 3 Sek angeschalten.

Zitat von: jumperger am 12 August 2019, 20:23:52
Wenn das dann steht sollen 4 Doppel-Relais der Rolomotoren dazu kommen, müssten also gegenseitig blockierende Buttons Hoch/Runter haben.
Dafür gibt es dann das ROLLO Modul.
blockierende Buttons brauchst bei richtiger Verschaltung der Relais dann nicht,

Prof. Dr. Peter Henning

ZitatSind dann aber 8 WLAN Geräte mehr die umherfunken
Sicher nicht. Denn die setzen von sich aus nur etwas ab, wenn lokal geschaltet worden ist. Ansonsten kann ich sie entweder pollen, oder komplett in Frieden lassen bis zu einem Schaltvorgang.

LG

pah

Frank_Huber

Zitat von: Prof. Dr. Peter Henning am 13 August 2019, 11:55:04
Sicher nicht. Denn die setzen von sich aus nur etwas ab, wenn lokal geschaltet worden ist. Ansonsten kann ich sie entweder pollen, oder komplett in Frieden lassen bis zu einem Schaltvorgang.

Nicht falsch verstehen,
ich habe nichts gegen Shellys. Viel Bandbreite brauchen die eh nicht, sind aber eben angemeldete WLAN Geräte die im WLAN mit verwaltet werden.
Bei einem "schlechten" WLAN AP kann es passieren dass es bei >20 Geräten beginnt Zicken zu machen.
Was ich ja mal schick finden würde wäre ein Shelly mit LAN Anschluss. :-)

jumperger

Hallo Frank,
vielen Dank erneut für den Code.
Ich habe nun versucht über die CommandRef zu verstehen was der Code macht. Tollpatschig wie ich bin habe ich einen ganzen Tag gesucht was ich als (xyz) eintragen muss  ::) bis ich dann einfach alles so wie von dir geschrieben eingetippt habe und es funktioniert hat  ;D Toll.
Darf ich dir noch ein Paar Fragen zu den Zeilen stellen da ich nicht immer eine Antwort in der CommandRef fand bzw. sie wahrscheinlich nicht erkannt habe?

defmod 3sec_DOIF DOIF (xyz) (set OUT_1 PortA0 on)(set OUT_1 PortA0 off)
Zu der Bedingung (xyz)
  • dies heisst ja in meinem speziellen Fall einfach nichts, also gehe ich davon aus dass die Bedingung in der Syntax des DOIF ein Muss ist?
  • benutz man also ein nichts sagende Bedingung mach das also sozusagen aus dem DOIF einen DO-Befehl

attr 3sec_DOIF do always
attr 3sec_DOIF wait 0,3

diese glaube ich verstanden zu haben, do always muss da sein da der Status von meinem DOIF nicht ändert und der Befehl also nur einmal ausgeführt würde bei mehrmaligem betätigen des Buttons. Wait ist auch klar, 0 damit der ON Befehl sofort ausgeführt wird und 3 damit der 2.Befehl 3Sekunden später ausgeführt wird. Oder 0.5 für eine halbe Sekunde.

attr 3sec_DOIF cmdState 3sec
Dies ist mein Problemkind, wozu brauch ich einen Status? Einfach weil er immer gesetzt sein muss?

attr 3sec_DOIF webCmd 3sec
Dazu fand ich keinen Eintrag in der Attribut Liste des DOIF, hatte aber geglaubt er sei sebsterklärend:
Erstellt einen Button im WebInterface namens 3sec welcher das Modul 3sec_DOIF auslöst, aber Pustekuchen , so einfach ist es dann doch nicht denn als ich den Namen 3sec in ON_OFF umgeändert habe hats nicht mehr funktioniert. Nach vielem Trial and Error habe ich dann gemerkt dass 3sec nicht nur der Name des Tasters ist sondern in Verbindung steht mit dem Status. Als ich also cmdState auf ON_OFF geändert habe hat es dann wieder geklappt.
Also stellt sich mir nun die Frage welches die logische Erklärung dieser Relation ist?

Kannst du mir da weiterhelfen?

jumperger

Ich hab jetzt noch einen Taster folgendermassen definiert:
defmod Taster_DOIF DOIF (xyz) (set OUT_1 PortB0 on)(set OUT_1 PortB0 off)
attr Taster_DOIF cmdState Taster_ON_OFF
attr Taster_DOIF do always
attr Taster_DOIF wait 0,1
attr Taster_DOIF webCmd Taster_ON_OFF


Habs jetzt auch geschaft dass ich einen Button im Tablet UI hab mit:

<li data-row="1" data-col="8" data-sizey="1" data-sizex="1">
                <header>GALERIE</header>
                <div data-type="button" data-device="Taster_DOIF" data-states='["Taster_ON_OFF"]' data-set-states='["Taster_ON_OFF"]' class="cell"></div>
                <div data-type="label" class="cell">Licht</div>
</li>