Electrodragon- sechs Relais steuern

Begonnen von chq, 18 Juli 2018, 08:46:15

Vorheriges Thema - Nächstes Thema

chq

Hallo,

ich würde gerne in Summe sechs Relais eines tasmotageflashten Electrodragons steuern. Vier der sechs Relais befinden sich auf einer Relaiskarte, die ich auch schon über die Tasmotaoberfläche steuern kann.

Muss man hierzu via publishSet erstmal sämtliche zu schaltenden Relais anlegen und falls ja, wie?

So?

ON OFF cmnd/heizung/power1 ON2 OFF2 cmnd/heizung/power2 ON3 OFF3 cmnd/heizung/power3..

Was ist da ein sinnvoller Weg?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

helmut

Hallo Chris,

sieh Dir dazu publishSet_<reading> an:
Zitatattr <name> publishSet_<reading> [<values>]* <topic>
configures reading that may be used to both set 'reading' (to optionally configured values) and publish to configured topic
attr <mqtt-device> publishSet_power1 ON,OFF  cmnd/heizung/power1
attr <mqtt-device> publishSet_power2 ON,OFF  cmnd/heizung/power2
...


Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

chq

So einfach wie möglich, so kompliziert wie nötig

chq

#3
Hallo,

ich versuche gerade mit den Relais und einer Widerstandsleiter am Zielgerät (Wärmepumpe, deren Betriebsart sich über einen Widerstand steuern lässt) unterschiedliche Widerstände zu "erzeugen". Es wäre nun natürlich super, wenn ich die unterschiedlichen Schaltzustäde der einzelnen Relais (0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111) in lesbare Zustände packen könnte, so dass z.B. der Schaltzustand 1011 dann in der FHEM-Weboberfläche "Heizmodus" heisst und die Relais dann mehr oder weniger gemeinsam schalten. Ein paar Millisekunden hin oder her ist egal.

Sprich die einzelnen Relais sollen dann abhängig vom gewählten Zustand gemeinsam schalten.

Geht das noch innerhalb des Devices, oder müsste ich das dann irgendwie "außerhalb" mit DOIFs oder etwas Ahnlichem abbilden?

Vier dieser sechs Relais bilden die Widerstandsleiter, während die zwei Anderen jeweils eine andere Funktion haben.
Wäre es dann für diesen Fall u.U. sinnvoller mehrere MQTT-Devices anzulegen, obwohl es sich ja physikalisch um ein Gerät handelt?

Gruß Chris

Internals:
   IODev      mqtt
   NAME       heizung
   NR         39
   STATE      ???
   TYPE       MQTT_DEVICE
   qos        *:1
   retain     *:1
   OLDREADINGS:
   READINGS:
     2018-07-22 11:32:16   resistor1       OFF
     2018-07-22 11:32:15   resistor2       OFF
     2018-07-22 11:32:14   resistor3       OFF
     2018-07-22 11:32:11   resistor4       OFF
     2018-07-22 11:41:16   transmission-state outgoing publish acknowledged
     2018-07-22 11:41:16   wwAnf           OFF
     2018-07-22 11:32:18   wwPumpe         OFF
   message_ids:
   publishSets:
     resistor1:
       topic      cmnd/heizung/power3
       values:
         ON,OFF
     resistor2:
       topic      cmnd/heizung/power4
       values:
         ON,OFF
     resistor3:
       topic      cmnd/heizung/power5
       values:
         ON,OFF
     resistor4:
       topic      cmnd/heizung/power6
       values:
         ON,OFF
     wwAnf:
       topic      cmnd/heizung/power1
       values:
         ON,OFF
     wwPumpe:
       topic      cmnd/heizung/power2
       values:
         ON,OFF
   sets:
     resistor1  ON,OFF
     resistor2  ON,OFF
     resistor3  ON,OFF
     resistor4  ON,OFF
     wwAnf      ON,OFF
     wwPumpe    ON,OFF
   subscribe:
   subscribeExpr:
   subscribeQos:
   subscribeReadings:
Attributes:
   IODev      mqtt
   alias      Heizung
   publishSet_resistor1 ON,OFF  cmnd/heizung/power3
   publishSet_resistor2 ON,OFF  cmnd/heizung/power4
   publishSet_resistor3 ON,OFF  cmnd/heizung/power5
   publishSet_resistor4 ON,OFF  cmnd/heizung/power6
   publishSet_wwAnf ON,OFF  cmnd/heizung/power1
   publishSet_wwPumpe ON,OFF  cmnd/heizung/power2
   qos        1
   retain     1
   room       UG
So einfach wie möglich, so kompliziert wie nötig

helmut

Zitat von: chq am 22 Juli 2018, 11:55:55
Geht das noch innerhalb des Devices, oder müsste ich das dann irgendwie "außerhalb" mit DOIFs oder etwas Ahnlichem abbilden?
Hallo Chris,

der gerade Weg waere der  direkt im Device "heizung" mit dem Tasmota Backlog Kommando gewesen.
Das Problem ist das Leerzeichen im Power Komando. Das hier funktioniert
attr heizung publishSet_P0000 state;;status cmnd/heizung/Backlog
und das leider nichtattr heizung publishSet_P0000 power3 off;;power4 off;;power5 off;;power6 off cmnd/heizung/Backlog
Ich habe alles mir bekannte versucht die Leerzeichen, die als Trenner fungieren, zu maskieren - ohne Erfolg.
Wenn Du das Tasmota-Device direkt ueber das "MQTT" Device, also die Verbindung zum Broker, ansprichst, geht es so.set <dein-mqtt-device> publish cmnd/heizung/Backlog power3 off;;power4 off;;power5 off;; power6 off
Das fuer die GUI ansprechend zu verpacken, fehlt mir momentan die Idee. Vielleicht faellt Dir da etwas ein.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

chq

Hallo Helmut,

vielen Dank für die Mühe, die Du Dir da gemacht hast! :)

Wenn ich das Ganze direkt über den MQTT-Broker ansprechen würde, hätte ich nur leider keinerlei Feedback über den Status meiner Wärmepumpe.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

helmut

Hallo Chris,

warum glaubst Du, da kaeme kein Feedback? Das sendet Tasmota doch in Form mehrerer RESULTs zurueck
und wenn Du RESULT subskribiert  hast und mit expandJSON auseinandernehmen laesst, hast den Status
der einzelnen Relais. Diese mit stateFormat aufzubereiten wird zwar etwas laenglich, ist aber mit ein wenig
Perl-Code moeglich.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

chq

Ich werde das vertiefen, danke!

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig