Dual-Schaltaktor mit ESP01 für Hutschienenmontage

Begonnen von Papa Romeo, 30 Juli 2018, 22:43:37

Vorheriges Thema - Nächstes Thema

andies

Kannst Du mal Deine FHEM-Definition des Eltakos (idealerweise mit zwei Schaltern) hier angeben? Danke!
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Papa Romeo

Hallo Andies,

hier meine Definitionen:

define DEVICE_234 MQTT_DEVICE;
attr DEVICE_234 alias ESP01_Universal;
attr DEVICE_234 IODev myBroker;
attr DEVICE_234 icon temperature_humidity;
attr DEVICE_234 room ESP01_U;
attr DEVICE_234 subscribeReading_SWITCH1 ESP01_234/Switch_1;
attr DEVICE_234 subscribeReading_SWITCH2 ESP01_234/Switch_2;
attr DEVICE_234 subscribeReading_BATT ESP01_234/Spannung

define MQTT_DEVICE_234_Aktor1 MQTT_BRIDGE DEVICE_234_Aktor1;
attr MQTT_DEVICE_234_Aktor1 IODev myBroker;
attr MQTT_DEVICE_234_Aktor1 event-on-change-reading .*;
attr MQTT_DEVICE_234_Aktor1 publishState ESP01_234/Befehl_1;
attr MQTT_DEVICE_234_Aktor1 room ESP01_U;

define MQTT_DEVICE_234_Aktor2 MQTT_BRIDGE DEVICE_234_Aktor2;
attr MQTT_DEVICE_234_Aktor2 IODev myBroker;
attr MQTT_DEVICE_234_Aktor2 event-on-change-reading .*;
attr MQTT_DEVICE_234_Aktor2 publishState ESP01_234/Befehl_2;
attr MQTT_DEVICE_234_Aktor2 room ESP01_U;

define MQTT_DEVICE_234_ASensor  MQTT_BRIDGE DEVICE_234_ASensor;
attr MQTT_DEVICE_234_ASensor IODev myBroker;
attr MQTT_DEVICE_234_ASensor event-on-change-reading .*;
attr MQTT_DEVICE_234_ASensor subscribeSet ESP01_234/Switch_1;
attr MQTT_DEVICE_234_ASensor room ESP01_U;

define MQTT_DEVICE_234_BSensor MQTT_BRIDGE DEVICE_234_BSensor;
attr MQTT_DEVICE_234_BSensor IODev myBroker;
attr MQTT_DEVICE_234_BSensor event-on-change-reading .*;
attr MQTT_DEVICE_234_BSensor subscribeSet ESP01_234/Switch_2;
attr MQTT_DEVICE_234_BSensor room ESP01_U;

define DEVICE_234_Aktor1 dummy;
attr DEVICE_234_Aktor1 alias ESP01 Befehl 1;
attr DEVICE_234_Aktor1 devStateIcon on:FS20.on Off:FS20.off;
attr DEVICE_234_Aktor1 event-on-change-reading .*;
attr DEVICE_234_Aktor1 icon remotecontrol/black_btn_HOMEDroid;
attr DEVICE_234_Aktor1  room ESP01_U;
attr DEVICE_234_Aktor1 webCmd On: Off;

define DEVICE_234_Aktor2 dummy;
attr DEVICE_234_Aktor2 alias ESP01 Befehl 2;
attr DEVICE_234_Aktor2 devStateIcon on:FS20.on Off:FS20.off;
attr DEVICE_234_Aktor2 event-on-change-reading .*;
attr DEVICE_234_Aktor2 icon remotecontrol/black_btn_HOMEDroid;
attr DEVICE_234_Aktor2  room ESP01_U;
attr DEVICE_234_Aktor2 webCmd On: Off;

define DEVICE_234_ASensor dummy;
attr DEVICE_234_ASensor alias ESP01 Switch 1;
attr DEVICE_234_ASensor event-on-change-reading .*;
attr DEVICE_234_ASensor icon edit_settings;
attr DEVICE_234_ASensor room ESP01_U;

define DEVICE_234_BSensor dummy;
attr DEVICE_234_BSensor alias ESP01Switch 2;
attr DEVICE_234_BSensor event-on-change-reading .*;
attr DEVICE_234_BSensor icon edit_settings;
attr DEVICE_234_BSensor room ESP01_U;

define DEVICE_234_Aktor1ESP01 doif ([DEVICE_234_Aktor1] eq "On") (set DEVICE_234_Aktor1 on, sleep 0.5 set DEVICE_234_Aktor1 off) DOELSEIF ([DEVICE_234_Aktor1] eq "Off") (set DEVICE_234_Aktor1 on, sleep 0.5 set DEVICE_234_Aktor1 off);
attr DEVICE_234_Aktor1ESP01 do always;
attr DEVICE_234_Aktor1ESP01 icon recycling;
attr DEVICE_234_Aktor1ESP01 room ESP01_U

define DEVICE_234_Aktor2ESP01 doif ([DEVICE_234_Aktor2] eq "On") (set DEVICE_234_Aktor2 on, sleep 0.5 set DEVICE_234_Aktor2 off) DOELSEIF ([DEVICE_234_Aktor2] eq "Off") (set DEVICE_234_Aktor2 on, sleep 0.5 set DEVICE_234_Aktor2 off);
attr DEVICE_234_Aktor2ESP01 do always;
attr DEVICE_234_Aktor2ESP01 icon recycling;
attr DEVICE_234_Aktor2ESP01 room ESP01_U


!!! bei den DOIF nach .... "sleep 0.5"  einen Strichpunkt setzen !!!

Wenn ich`s bei den Definitionen schon setze, zeigt FHEM einen Fehler.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

#47
Danke!

<edit> Für diejenigen, die das nachbauen wollen (ich wollte nur ein MQTT-Device dafür haben),
const char* start         = "Raspberry";                // Name frei waehlbar
Dieses Wort definiert die Willkommensnachricht, wenn der Eltako ans Netz geht.

Ich habe die Befehle in der ino-Datei ein wenig geändert, weil ich alles identisch zu vorhandenen devices haben wollte (Kleinschreibung und Änderung der Bezeichnungen der Befehle). Bei mir steht jetzt da
String      NAME          = "eltako";                   // Name des Device --> erster Teil des MQTT-Topics
...
String      ID            = "";                   // bei mir Wunsch-IP bei statischer IP-Zuweisung --> wahlweise zweiter Teil des MQTT-Topics z.B. auch fuer DHCP
...
String ClientID      = NAME + ID;                    // ClientID
const char* CLIENTID = (ClientID.c_str());
String Ziel1         = (ClientID + "/switch_1");     // sendet an MQTT Switch_1 ON / OFF
const char* ZIEL1    = (Ziel1.c_str());
String Ziel2         = (ClientID + "/switch_2");     // sendet an MQTT Switch_2 ON / OFF
const char* ZIEL2    = (Ziel2.c_str());
String Quelle1       = (ClientID + "/cmnd_1");     // empfaengt von MQTT Befehl On / Off für Switch_1
const char* QUELLE1  = (Quelle1.c_str());
String Quelle2       = (ClientID + "/cmnd_2");     // empfaengt von MQTT Befehl On / Off für Switch_2
const char* QUELLE2  = (Quelle2.c_str());
...
void relais()
     {if (set_Switch1 == 1){digitalWrite(AKTOR1, HIGH); const char *state  = "on"; client.publish(ZIEL1, state);}
      if (set_Switch1 == 0){digitalWrite(AKTOR1, LOW); const char *state  = "off"; client.publish(ZIEL1, state);}
      if (set_Switch2 == 1){digitalWrite(AKTOR2, HIGH); const char *state  = "on"; client.publish(ZIEL2, state);}
      if (set_Switch2 == 0){digitalWrite(AKTOR2, LOW); const char *state  = "off"; client.publish(ZIEL2, state);}}
...
                     {if (nachricht1 == "on")
                         {set_Switch1 = 1;}
                      if (nachricht1 == "off")   
                          {set_Switch1 = 0;}}}


Wenn man überhaupt das so umschreibt, kann man mit dem FHEM-Gerät
defmod Eltako MQTT_DEVICE
wie folgt schalten:
attr Eltako publishSet_switch1 on off eltako/cmnd_1
attr Eltako publishSet_switch2 on off eltako/cmnd_2
attr Eltako stateFormat transmission-state
attr Eltako subscribeReading_switch1 eltako/switch_1
attr Eltako subscribeReading_switch2 eltako/switch_2

siehe Screenshot.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Zitat von: Papa Romeo am 03 September 2018, 06:53:35
...hast du schon das richtige Gehäuse?

Dieses hier: https://www.pollin.de/p/hutschienengehaeuse-2-c-35x71x90-mm-460145
Für diejenigen, die da auch Löcher bohren wollen. Bei mir waren die Bohrungen so. Man misst von der Innenkante (da ist so eine kleine Erhöhung rund um die Abdeckung, ca 2mm breit - ich messe von der Innenseite der Erhöhung):
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Noch eine Frage an die Elektriker unter Euch. Mir hat ein befreundeter Elektriker (der mit mir momentan kein Geld verdienen wird) erklärt, welchen Aufwand die Lobby betreibt, um Häuslebauer an ein einheitliches System (Relais, FI, Sicherung...) zu binden. Wenn ich also etwas selbst gebautes wie diesen Aktor einbaue und etwas passiert - Ihr könnt Euch den Rest des Satzes denken.

Nun bin ich nicht so hysterisch, dass ich aus Angst vor herunterfallenden Meteoriten besser gar nicht mehr aus dem Haus gehe. So etwas ist einfach zu unwahrscheinlich um Ernst genommen zu werden. Mich würde aber interessieren, wie Ihr mit dem Risiko aus dem Elektrobereich bei Eigenkreationen, wie ich das gerade versucht habe zu beschreiben, umgeht. Wenn ich mit einem Sachverständigen für Hausbrände rede, wird das Gespräch vermutlich anders verlaufen als mit jemanden, der früher in rana plaza gearbeitet hat.

Also macht Ihr Euch Gedanken? Manchmal? Wird irgendwas kontrolliert? Wie oft?


Gesendet von iPad mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Per

Ich finde das "Teil" richtig Klasse!
Auch das mit den rausgezogenen L/L2, mit denen sich eine Rollo-Steuerung realisieren lässt.


Zwei Vorschläge hätte ich noch:
- je eine Kontroll-LED (muss man ja nicht bestücken)
- Ta1 und Ta2 außen um N platzieren. Dann ist der Aktor besser Links-Rechts geteilt (als Ersatz leichter zu verkabeln; evtl. sogar Ta1-N-Ta2-N bzw. N-Ta1-N-Ta2, kenne den Original Eltako nicht)

Papa Romeo

Hallo Per,

freut mich, dass das "Teil" gefällt.  ;) :D
Die LED´s sind schon vorgesehen.
Schau hier auf dem aktuellen Platinenlayout: https://forum.fhem.de/index.php/topic,89818.msg822931.html#msg822931 ansi

Das mit den Taster´n muss ich mir mal anschauen, wie sich das auf dem Layout eventuell bewerkstelligen lässt.

Gruß

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

rippi46

Hallo,

habe meinen Dual-Schaltaktor mit MQTT2 eingerichtet und er funktioniert auch.

hier meine Konfiguration:
Internals:
   CID        ESP01_ELTAKO
   DEF        ESP01_ELTAKO
   DEVICETOPIC MQTT2_ESP01_ELTAKO
   IODev      mqtt2
   LASTInputDev mqtt2
   MSGCNT     1406
   NAME       MQTT2_ESP01_ELTAKO
   NR         1161
   STATE      <span><img style='float:center' width='32px' height='32px' src='/fhem/images/fhemSVG/rc_RED.svg'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span><img style='float:center' width='32px' height='32px' src='/fhem/images/fhemSVG/rc_RED.svg'><br>&nbsp;&nbsp;[Switch1: Off / Switch2: Off / Spannung: 3.28V ]
   TYPE       MQTT2_DEVICE
   mqtt2_MSGCNT 1406
   mqtt2_TIME 2018-10-23 12:54:48
   READINGS:
     2018-10-23 11:58:20   EltakoFlurUnten ESP01_ELTAKO
     2018-10-23 12:54:48   Spannung        3.28
     2018-10-23 12:09:44   Switch_1        Off
     2018-10-23 12:09:44   Switch_2        Off
     2018-10-23 12:09:43   state           off2
Attributes:
   IODev      mqtt2
   readingList ESP01_ELTAKO:EltakoFlurUnten:.* EltakoFlurUnten
ESP01_ELTAKO:ESP01_ELTAKO/Switch_1:.* Switch_1
ESP01_ELTAKO:ESP01_ELTAKO/Switch_2:.* Switch_2
ESP01_ELTAKO:ESP01_ELTAKO/Spannung:.* Spannung
   room       Flurunten,Küche,MQTT2_DEVICE
   setList    on1 ESP01_ELTAKO/Befehl_1 On
off1 ESP01_ELTAKO/Befehl_1 Off
on2 ESP01_ELTAKO/Befehl_2 On
off2 ESP01_ELTAKO/Befehl_2 Off
   stateFormat {
my $state1 = ReadingsVal($name, "Switch_1", "Off");
my $state2 = ReadingsVal($name, "Switch_2", "Off");
my $devStateIcon1 = 'rc_GREEN.svg';
my $devStateIcon2 = 'rc_GREEN.svg';

if ($state1 eq "Off")
{
$devStateIcon1 = 'rc_RED.svg';
}

if ($state2 eq "Off")
{
$devStateIcon2 = 'rc_RED.svg';
}

"<span><img style='float:center' width='32px' height='32px' src='/fhem/images/fhemSVG/" . $devStateIcon1 . "'>". "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span><img style='float:center' width='32px' height='32px' src='/fhem/images/fhemSVG/" . $devStateIcon2 . "'><br>"  . sprintf(
"&nbsp;&nbsp;[Switch1: %s / Switch2: %s / Spannung: %.2fV ]",
ReadingsVal($name,"Switch_1","off"),
ReadingsVal($name,"Switch_2","Off"),
ReadingsVal($name,"Spannung",0)
)
}
   webCmd     on1:off1:on2:off2


Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

hanswerner1

Hallo,

ich habe mit dem Dual-Schaltaktor folgenden Problem:

Schalte ich per FHEM das Licht ein, muss ich einen angeschlossenen Taster 2x drücken damit das Licht wieder ausgeht. Wenn ich über Taster einschalte geht es mit 1x Taster drucken wieder aus. Auch über Taster einschalten und über FHEM ausschalten funktioniert es wie es soll.


RaspiLED

Hi,
Hast Du espeasy drauf? Und dort den Schalter als Taster eingetragen. Oder ist Dein Taster fest? Also zweimal=ausschalten und danach einschalten?
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

hanswerner1

Ich habe die Software von Papa Romeo aus dem 1. Post drauf. Nach dem Einschalten per FHEM gehts über die Taster nur noch mit 2x schalten zum Ausschalten. Wenn mit Taster eingeschaltet wurde gehts auch mit 1x schalten über den Taster aus.

Gruß
HW1

Papa Romeo

Hallo hanswerner1,

hast recht. Hab gerade meinen Testaktor aufgebaut und dein Szenario nachgestellt. Ist bei mir genau so.
(Tja...da isses wieder...nobody is perfekt  ;))
Muss ich bei Gelegenheit im Sketch nachvollziehen warum das so ist bzw. wo da der Haken sitzt.

Danke für die Info.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

rippi46

Hallo

bei mir ist das gleiche Verhalten.

Habe jetzt auch mal Tasmota drauf geflascht, da ist dieses Verhalten nicht vorhanden.

Ich weiss nur nicht, wie ich die beide Geräte vereinzeln kann. Also MQTT2 erzeugt mir ein Gerät und ich hätte aber lieber zwei einzelne Geräte.

Hat vielleicht jemand eine Idee

Gruß rippi
FHEM, LMS, VDR ,Dell 9010 Ubuntu 20.04,Raspimatic, HM/HMIP, Max, Elro, Brennenstuhl u. Intertechno mit Connair.
Picoreplayer, Raspi IR-Lanadapter, Firmata(wifi), LaCrosse,
nanocul433, nanocul868, Signalduino, Connexoon,
MySensor-GW+Sensoren, RGBWW, Zigbee2mqtt,Xiaomi,Nextion,LEDMatrix,Alexa

Katzechrisu

Hallo PapaRomeo, wieso hast Du im Dual- und einfach Hutschienen Aktor nicht den 47K pullup widerstand an GPIO3 wie beim intelligenten Wechselschalter oder Malmbergsclone?
Könnte es da zu den selben Fehlern kommen die ich beim Malmbergsclone hatte?



Papa Romeo

Da der interne Pullup des GPIO ausreichend ist hab ich sie weggelassen.
Bisher hat bei keiner Ausführung jemand Probleme gemeldet.

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary