Beiträge von stonev

    Danke das hat gepasst.

    Das Mappen per Rule ist etwas umfangreich angesichts maximal 512 Zeichen per Ruleset. In Tasmota kann man einen Pin des ESP als Relay<x> deklarieren und dann ist das soweit fertig (und es erscheinen bei gleichzeitig deklariertem Switch1 auch Schalter). Hatte gehofft, man könnte irgendwie einfach MCP Pin<x> als Relay<x> deklarieren. Könnte ich vlt. mal als Verbesserungsvorschlag im Git posten...

    Kurze Rückmeldung auf die Schnelle:

    Die Rules funktionieren. Der Trigger funktioniert mit

    Code
    on MCP230XX#D1=1 do

    ...wie von NoitaercX beschrieben.

    Sobald ich Zeit habe, muss ich mich mit Rule<x> 5 bzw. 6 (once) beschäftigen, da mir die Rules derzeit das Log vollhauen. Dazu kommt dann nochmal ne Rückmeldung.


    Ich bastel jetzt noch an der Einbindung in FHEM. Das MQTT2 Device wurde da erkannt. Die Frage ist nur, mit welchem Topic ich das jeweilige Relais anspreche. Normalerweise ist der Pfad für normale Relais

    Code
    cmnd/<Topic aus MQTT Einstellungen Tasmota>/Power<x> 
    cmnd/Gartenhaus/Power1     

    Den MCP230XX kann ich nicht mit Power<x> ansprechen - das ist klar. Aber was muss hin?

    Folgende varianten habe ich erfolglos versucht:

    Code
    cmnd/Gartenhaus/sensor29 1
    cmnd/Gartenhaus/MCP230XX_D1
    cmnd/Gartenhaus/MCP230_OUT_OUT_D1
    cmnd/Gartenhaus/S29cmnd_D1

    Kann man eigenlich z. B. den Ausgang MCP230XX_D1 auch auf "Relay1" von Tasmota mappen und anschließend dann auch mit Power1 ansprechen?

    Moin,

    alle Pins meines MCP23017 sind als Output definiert (Pinmode 5). Die Relais schalten auch, wenn man sie mit

    Code
    sensor29 <x>,on
    sensor29 <x>,off   oder
    sensor29 <x>,t

    anspricht. Soweit ist das alles kein Problem.

    Das Problem ist (und bleibt), den jeweiligen Pin in einer Rule zu triggern. Das will einfach nicht funktionieren.

    Der Trigger

    Code
    event#MCPINT_D1=1

    funktioniert leider auch nicht. Er funktioniert nur im Interrupt Mode - also nur dann, wenn die Pins des MCP als Eingänge mit aktiviertem IntMode definiert sind (Pinmodes 2-4). Bei Output (Pinmode 5 und 6) steht der IntMode aber nicht zur Verfügung.

    Bei Outputs steht wohl nur Telemetry zur Verfügung. Ein Event - wenn ich richtig verstehe - wird im Fall des Outputs vom Treiber nicht generiert.

    Die Rules sind natürlich aktiviert.

    Ich babe am I2C einen MCP230017 Port Expander an dem insgesamt 12 Relais hängen.

    Die Ausgänge des MCP können nicht als Relais 1...12 definiert und mit Power1...12 angesprochen werden (so mein Kenntnisstand bisher).

    Die Ausgänge vom MCP werden angesprochen mit

    sensor29 <portnummer>,<Befehl>

    Sensor29 1,on schaltet Relais am Port 1 ein.

    Sorry, hatte gedacht, es oben erwähnt zu haben.

    power1#state=1 funktioniert also nicht. Habe dann verschiedene Syntax probiert (s. o.), aber leider ohne Erfolg. Der Trigger funktioniert nicht.


    Edit:

    Hab gerade doch noch etwas gefunden. Demnach müsste die Syntax für den MCP (hier Pin 1) wie folgt lauten:

    Code
    event#MCPINT_D1=1

    Ich teste das heute Abend und geb Rückmeldung.

    Ich habe eben mal ein wenig rumgespielt, bekomme es aber nicht so recht hin. Problem scheint aber nicht die Logik der Rules an sich zu sein, sondern die Statusabfrage des Pin vom MCP. Der ESP steigt nämlich gar nicht erst in die Rule ein.

    Also die Syntax des Triggers (Beispiel):

    Code
    power1#state=1

    Ich habe einige Schreibweisen probiert:

    Code
    sensor29 1#state=1
    sensor29 1,on
    sensor29_D1#state=1
    sensor29 1,state=1

    Im Netzt habe ich zur korrekten Syntax auch nicht gefunden. Habt ihr eine Idee?

    Genial, die Idee ist Klasse und müsste funktionieren - Danke! Ich gebe Rückmeldung, wenn ich es getestet habe.

    gemu2015: Ich wusste bisher nicht, dass das geht. Habe aber jetzt deinen Beitrag im Github gefunden. Ich müsste aber wohl neu kompilieren. Daher teste ich erst mal die Variante mit den Rules.

    Vielleicht noch zum Hintergrund der Anwendung - falls es interessiert:

    Mit Rel1-3 sollen Magnetventile angesteuert werden die mit 24V AC laufen, also einen einfachen Trafo benötigen. Um den wegen des Stromverbrauchs nicht permanent am Netz zu haben, soll er mit Rel4 jedesmal automatisch dazu geschaltet werden. Könnte man letztlich auch per zusätzlichem MQTT Befehl lösen, aber per Rules oder Script gibt es eine Fehlerquelle weniger und die Zuverlässigkeit steigt.

    Mir fällt gerade nichts sinnvolles ein, daher bitte ich um einen Tipp:

    Ziel:

    Es gibt vier Relais. Relais 4 soll immer dann mit anziehen, wenn eines der drei anderen anzieht und wieder abfallen, wenn jedes der drei anderen abgefallen ist.

    Klassisch also beim Trigger eine Oder-Verknüfung: Wenn Relais1 oder 2 oder 3 = On, dann Relais 4 on, sonst off

    Wie kann ich sowas mit den Tasmota Rules umsetzen? Wenn ich richtig verstehe, kann beim Trigger keine Oderverknüfungen von drei Bedingungen vornehmen.

    OK, wenn ich ein Relais am MCP z.B. Port 10 ansprechen will, dann heißt es z. B. <sensor29 10,on>.

    Wie könnte ich dieses Relais dann zum Relais1 machen, um es mit dem zugeordneten Button1 zu schalten?

    per Rule müsste doch so gehen:

    Rule1 on button1#state=2 do sensor29 10,toggle endon

    Soll bedeuten:

    Schreibe in RuleSet 1, dass wenn Taster 1 toggelt dann toggle das Relais an Ausgang 10 des MCP


    Edit:

    Per Rule hat auf jeden Fall funktioniert:

    Rule1 on button1#state=2 do sensor29 10,t endon

    Hallo erst mal,

    ich versuche gerade den MCP230017 ans laufen zu bekommen und könnte etwas Unterstützung beid er fehlersuche gebrauchen.

    Was habe ich gemacht?

    Ich habe einen ESP-07 mit Tasmota 6.5.0 per Arduino Software geflasht. Kernel 2.5.0 wurde verwendet. In der my_user_config.h wurden alle drei Zeilen (außer Display) für den MCP durch entfernen der beiden "//" aktiviert. Adresse 0x20 eingestellt (Standard).

    Der ESP hat einen eigenen Spannungsregler für 3.3v und wird darüber von extern mit 5V (600mA) versorgt. Der MCP wird mit 5V versorgt. A0-2 liegen auf GND und Adresse 0x20 wurde dadurch eingestellt. SDA und SCL liegen auf GPIO 4 und 5. SDA und SCL sind mit je 4K7 Pullups versehen.

    Problem:

    Gebe ich in Tasmota unter Konsole den Befehl "i2cscan" ein, bekomme ich kein Ergebnis.

    Bisher gemacht:

    - Verkabelung geprüft - alles in Ordnung

    - testweise einen weiteren MCP angeschlossen - gleicher Effekt

    heute Geplant:

    - anderen I2C Sensor anschließen, um grds. I2C auf Funktion zu prüfen

    - Prüfen, ob die Treiber für den MCP eingebunden wurden

    Fragen:

    Punkt "Prüfen, ob die Treiber für den MCP eingebunden wurden" => wie kann ich das machen?

    Fällt euch sonst noch was ein (z. B. Kompatibilitätsprbleme mit der verwendeten Kernelversion) o. ä.


    Edit:

    Stunden hab ich gesucht und gelesen, aber 30 Min. nach diesem Thread kommt die Erleuchtung. Ein Blick ins Datenblatt hilf manchmal einfach weiter als Google ;)

    Ich habe den Reset Pin offen gelassen. Der muss aber auf VDD gelegt werden. Ich gehe mal davon aus, dass es das ist. Sonst melde ich mich wieder...