Einstiegshilfe FHEM mit Mosquitto & Lidl Funksteckdosen

Begonnen von Dattel01, 02 Februar 2018, 14:42:57

Vorheriges Thema - Nächstes Thema

Dattel01

Hi,
ich fange hier gerade erst an mit FHEM - vielleicht hab ich mir auch gleich zu viel zugemutet, aber vielleicht kann ja jemand mal meinen Anfängerknoten aufgelöst.

Doch zuerst :was will ich machen
Thema Hausautomatisierung bewegt mich schon seit einiger Zeit - ich wollte aber erstmal damit starten, was ich eh schon zu hause habe: Funksteckdosen der Marke SilverCrest. Hierzu gibt es eine Fernbedienung mit 10 Tasten; Gerät[1-4] an/aus und Alle an/aus.
Ich weiß, dass die wieder eine Sonderstellung beziehen, da die Verbindung nur einseitig ist und die Signale mit "Fire&Forget" geschossen werden, auch machen die RollingCodes die Sache nicht einfacher. Ich möchte aber ungern (nur weil es nicht auf den ersten Anlauf klappt) neue Hardware kaufen um ein Erfolgserlebnis zu haben.

Was hab ich schon geschafft?
Ich habe mir einen ESP8266 mit einem RF Sender&Empfänger zusammengebaut und mit OpenMqtt als Firmware bespielt.
Anschließend habe ich erstmal alle Signale mitgeschnitten und sortiert.

In FHEM habe ich entsprechend ein Device für Mosquitto angelegt
Zitat
define Mosquitto MQTT 127.0.0.1:1883
attr Mosquitto room Silvercrest

Anschließend ein MQTT Device, welches auf das Topic lauscht
Zitat
define sc_remote MQTT_DEVICE
attr sc_remote IODev Mosquitto
attr sc_remote room Silvercrest
attr sc_remote stateFormat transmission-state
attr sc_remote subscribeReading_KeyCode home/433toMQTT

Für jede Taste der Fernbedienung stellvertretend ein Dummy Device
Zitat
define sc_a_a dummy
attr sc_a_a room Silvercrest
attr sc_a_a webCmd on:off
define sc_a_b dummy
attr sc_a_b room Silvercrest
attr sc_a_b webCmd on:off
define sc_a_c dummy
attr sc_a_c room Silvercrest
attr sc_a_c webCmd on:off
define sc_a_d dummy
attr sc_a_d room Silvercrest
attr sc_a_d webCmd on:off

Jetzt noch einen Eventhandler, der die empfangenen Codes der Fernbedienung auswertet und abhängig davon das DummyDevice AN/AUS schaltet (wahrscheinlich unnütz?)
Zitat
define sc_notify notify sc_remote:KeyCode:.*  {
  if ($EVTPART1 eq 4913776 || $EVTPART1 eq 4372912 || $EVTPART1 eq 4557888 || $EVTPART1 eq 4719152)
    {fhem("set sc_a_a on")}   
  if ($EVTPART1 eq 4557892 || $EVTPART1 eq 4719156 || $EVTPART1 eq 4372916 || $EVTPART1 eq 4913780)
    {fhem("set sc_a_b on")}   
  if ($EVTPART1 eq 4913788 || $EVTPART1 eq 4557900 || $EVTPART1 eq 4719164 || $EVTPART1 eq 4372924)
    {fhem("set sc_a_c on")}   
  if ($EVTPART1 eq 5153682 || $EVTPART1 eq 4253346 || $EVTPART1 eq 5205538 || $EVTPART1 eq 4597522)
    {fhem("set sc_a_d on")}   
  if ($EVTPART1 eq 4597530|| $EVTPART1 eq 5153690|| $EVTPART1 eq 4253354|| $EVTPART1 eq 5205546)
    {fhem("set sc_a_.* on")}     

  if ($EVTPART1 eq 5205536 || $EVTPART1 eq 4597520 || $EVTPART1 eq 5153680 || $EVTPART1 eq 4253344)
    {fhem("set sc_a_a off")}   
  if ($EVTPART1 eq 5153684 || $EVTPART1 eq 4597524 || $EVTPART1 eq 5205540 || $EVTPART1 eq 4253348)
    {fhem("set sc_a_b off")} 
  if ($EVTPART1 eq 4253356 || $EVTPART1 eq 5153692 || $EVTPART1 eq 4597532 || $EVTPART1 eq 5205548)
    {fhem("set sc_a_c off")} 
  if ($EVTPART1 eq 4557890 || $EVTPART1 eq 4913778 || $EVTPART1 eq 4372914 || $EVTPART1 eq 4719154)
    {fhem("set sc_a_d off")}
  if ($EVTPART1 eq 4372922|| $EVTPART1 eq 4719162|| $EVTPART1 eq 4557898|| $EVTPART1 eq 4913786)
    {fhem("set sc_a_.* off")}     
}

Soweit funktioniert das alles ganz wunderbar. Wenn ich auf der FB eine Taste betätige, dann wird sowohl die Steckdose geschaltet (weil die direkt auf den Code gepaart ist) als auch in FHEM der State der Steckdose angezeigt....

Jetzt habe ich mittlerweile rausgefunden dass ich von FHEM mit dem folgenden Command tatsächlich auch eine Steckdose ansprechen kann:
Zitat
set Mosquitto publish home/commands/PLSL_520/433_5/RFBITS_24 4557888

Und jetzt?
Nur mir fehlt noch der Durchblick, wie ich dieses Wissen jetzt zusammenbringe.
Wahrscheinlich muss ich jetzt für jede physische Steckdose nochmal einen Dummy-Aktor definieren, der auf ON/OFF dann entsprechen das Script ausführt?
Ich würde gerne die Steckdosen FB und FHEM steuern, ohne dass die Steckdose zweimal angelernt werden muss. FHEM soll aber immer lauschen, damit das Frontend weis, welche Dose gerade in welchem Zustand ist.

Update:
Ich hab's mal noch etwas erweitert und ein Physikalisches Gerät angelegt.
Zitat
define sc_switch_1 MQTT_DEVICE
attr sc_switch_1 IODev Mosquitto
attr sc_switch_1 devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
attr sc_switch_1 publishSet ON OFF home/commands/PLSL_520/433_5/RFBITS_24
attr sc_switch_1 room Silvercrest
attr sc_switch_1 webCmd 4372912:4597520

Damit kann ich jetzt über FHEM die Dose schalten - die anderen Dummy-Devices bekommen die Änderungen sogar mit, da die Messages ja über MQQT wieder zurückgespiegelt werden...
Leider sieht das Teil im Frontend schei** aus.
-Wie kann ich da ein ON:OFF anzeigen lassen anstelle 4372912:4597520?
-So ganz hab ich das publishSet nicht verstanden.. ON OFF kann ich durch alles mögliche ersetzen - es macht keinen Unterschied. Wozu ist das?
-Da das ICON ja vom STATE abhängig ist, wird mir leider da auch nichts sinnvolles angezeigt, da der State immer nur "outgoing publish sent" bekommt.

Dattel01

#1
Dann hole ich das Thema hier doch nochmal hoch...
Mein ursprüngliches Problem habe ich bereits über EventMap gelöst

Aber vielleicht kann mir jemand bei dem folgenden Problem helfen..

Anbei nochmal eine komplette Definition, damit es etwas leichter ist, zu verstehen, wie derzeit die Strukturen sind...

Ich habe einen "mqqtBroker", der auf localhost läuft.
Dazu habe ich eine sc_remote (mqtt_device) angehängt, das die Readings aus dem passenden MQT-Topic liest.
Dieses wiederum löst dann über notify sc_notify_a, sc_notify_b und sc_notify_c aus..

a,b,c stehen hierbei für drei unterschiedliche 433mhz Fernbedienungen.
Da die Lidl hier mit rolling-Codes arbeitet um Steckdosen zu schalten, muss ich hier alle Codes entsprechend auswerten und mache dann ein "set" auf dem Dummy Device um den korrekten State im Frontend zu sehen

Das Konstrukt gefällt mir aber nicht und ich würde gerne auf die Dummies verzichten, da sie nichts tun, außer da zu sein und AN/AUS anzuzeigen. Das müssen doch die MQTT-Devices auch können. Deshalb habe ich heute zusätzlich mit "setstate" bei den eigentlichen MQTT-Devices den Status mit umgesetzt.
Ja ich weiß bereits, dass "SetState" kein Event auslöst und deshalb wird der korrekte Status erst nach einem Refresh im Browser angezeigt..... Leider scheiter ich da dran, dieses Problem zu umgehen. Wenn ich auf den MQTT-Devices einen "SET" anstelle des "SETSTATE" mache, dann wird das selber über die Fernedienung empfangende Signal nochmal über FHEM getriggert und ich stecke in einem LOOP fest...

Was kann ich dagegen tun???


Zitat# MQQT Broker
defmod mqttBroker MQTT 127.0.0.1:1883
attr mqttBroker room Mqqt

# Dummy Schalter
defmod sc_a_a dummy
defmod sc_a_b dummy
defmod sc_a_c dummy
defmod sc_a_d dummy
defmod sc_b_a dummy
defmod sc_b_b dummy
defmod sc_b_c dummy
defmod sc_b_d dummy
defmod sc_c_a dummy
defmod sc_c_b dummy
defmod sc_c_c dummy
defmod sc_c_d dummy

attr sc_a_.* room mqqt
attr sc_b_.* room mqqt
attr sc_c_.* room mqqt

attr sc_a_.* webCmd on:off
attr sc_b_.* webCmd on:off
attr sc_c_.* webCmd on:off

# RemoteControl -> auf MQQT lauschen
defmod sc_remote MQTT_DEVICE
attr sc_remote IODev mqttBroker
attr sc_remote room Mqqt
attr sc_remote stateFormat state
attr sc_remote subscribeReading_KeyCode home/433toMQTT

# die Steckdosen, die an MQTT Senden können

defmod sc_switch_a_a MQTT_DEVICE
defmod sc_switch_a_b MQTT_DEVICE
defmod sc_switch_a_c MQTT_DEVICE
defmod sc_switch_a_d MQTT_DEVICE
defmod sc_switch_a__all MQTT_DEVICE
defmod sc_switch_b_a MQTT_DEVICE
defmod sc_switch_b_b MQTT_DEVICE
defmod sc_switch_b_c MQTT_DEVICE
defmod sc_switch_b_d MQTT_DEVICE
defmod sc_switch_b__all MQTT_DEVICE
defmod sc_switch_c_a MQTT_DEVICE
defmod sc_switch_c_b MQTT_DEVICE
defmod sc_switch_c_c MQTT_DEVICE
defmod sc_switch_c_d MQTT_DEVICE
defmod sc_switch_c__all MQTT_DEVICE

attr sc_switch_.* IODev mqttBroker
attr sc_switch_.* room Mqqt
attr sc_switch_.* stateFormat state
attr sc_switch_a.* publishSet home/commands/PLSL_520/433_5/RFBITS_24
attr sc_switch_b.* publishSet home/commands/PLSL_350/433_4/RFBITS_24
attr sc_switch_c.* publishSet home/commands/PLSL_350/433_4/RFBITS_24

attr sc_switch_a__all group Alle Switches
attr sc_switch_b__all group Alle Switches
attr sc_switch_c__all group Alle Switches

attr sc_switch_a_.* group RemoteAlt
attr sc_switch_b_.* group RemoteWeiß
attr sc_switch_c_.* group RemoteSchwarz

attr sc_switch_.* webCmd on:off

attr sc_switch_a_a eventMap  4372912:on 4597520:off
attr sc_switch_a_b eventMap  4719156:on 4597524:off
attr sc_switch_a_c eventMap  4557900:on 5153692:off
attr sc_switch_a_d eventMap  4253346:on 4913778:off
attr sc_switch_a__all eventMap  5153690:on 4719162:off

attr sc_switch_b_a eventMap  8578416:on 8772512:off
attr sc_switch_b_b eventMap  9215028:on 8772516:off
attr sc_switch_b_c eventMap  8602188:on 8463404:off
attr sc_switch_b_d eventMap  8687506:on 9006514:off
attr sc_switch_b__all eventMap  8463402:on 9006522:off

attr sc_switch_c_a eventMap  13519216:on 13226144:off
attr sc_switch_c_b eventMap  12585652:on 13599892:off
attr sc_switch_c_c eventMap  13027404:on 13599900:off
attr sc_switch_c_d eventMap  13381410:on 13519218:off
attr sc_switch_c__all eventMap  13226154:on 13519226:off


# Notify für RemoteControl anlegen
defmod sc_notify_a notify sc_remote:KeyCode:.*  {}
defmod sc_notify_b notify sc_remote:KeyCode:.*  {}
defmod sc_notify_v notify sc_remote:KeyCode:.*  {}

attr sc_notify_a room Mqqt
attr sc_notify_b room Mqqt
attr sc_notify_c room Mqqt


defmod sc_notify_a notify sc_remote:KeyCode:.*  { \
  if ($EVTPART1 eq 4913776 || $EVTPART1 eq 4372912 || $EVTPART1 eq 4557888 || $EVTPART1 eq 4719152)\
    {fhem("set sc_a_a on;;setstate sc_switch_a_a on")}\
  if ($EVTPART1 eq 4557892 || $EVTPART1 eq 4719156 || $EVTPART1 eq 4372916 || $EVTPART1 eq 4913780)\
    {fhem("set sc_a_b on;;setstate sc_switch_a_b on")}   \
  if ($EVTPART1 eq 4913788 || $EVTPART1 eq 4557900 || $EVTPART1 eq 4719164 || $EVTPART1 eq 4372924)\
    {fhem("set sc_a_c on;;setstate sc_switch_a_c on")}   \
  if ($EVTPART1 eq 5153682 || $EVTPART1 eq 4253346 || $EVTPART1 eq 5205538 || $EVTPART1 eq 4597522)\
    {fhem("set sc_a_d on;;setstate sc_switch_a_d on")}    \
  if ($EVTPART1 eq 4597530|| $EVTPART1 eq 5153690|| $EVTPART1 eq 4253354|| $EVTPART1 eq 5205546)\
    {fhem("set sc_a_.* on;;setstate sc_switch_a_.* on")}      \
\
  if ($EVTPART1 eq 5205536 || $EVTPART1 eq 4597520 || $EVTPART1 eq 5153680 || $EVTPART1 eq 4253344)\
    {fhem("set sc_a_a off;;setstate sc_switch_a_a off")}   \
  if ($EVTPART1 eq 5153684 || $EVTPART1 eq 4597524 || $EVTPART1 eq 5205540 || $EVTPART1 eq 4253348)\
    {fhem("set sc_a_b off;;setstate sc_switch_a_b off")}  \
  if ($EVTPART1 eq 4253356 || $EVTPART1 eq 5153692 || $EVTPART1 eq 4597532 || $EVTPART1 eq 5205548)\
    {fhem("set sc_a_c off;;setstate sc_switch_a_c off")}  \
  if ($EVTPART1 eq 4557890 || $EVTPART1 eq 4913778 || $EVTPART1 eq 4372914 || $EVTPART1 eq 4719154)\
    {fhem("set sc_a_d off;;setstate sc_switch_a_d off")} \
\
  if ($EVTPART1 eq 4372922|| $EVTPART1 eq 4719162|| $EVTPART1 eq 4557898|| $EVTPART1 eq 4913786)\
    {fhem("set sc_a_.* off;;setstate sc_switch_a_.* off")}\
}\
   
defmod sc_notify_b notify sc_remote:KeyCode:.*  {\
  if ($EVTPART1 eq 8602176 || $EVTPART1 eq 8578416 || $EVTPART1 eq 9006512 || $EVTPART1 eq 9215024)\
    {fhem("set sc_b_a on;;setstate sc_switch_b_a on")}   \
  if ($EVTPART1 eq 8602180 || $EVTPART1 eq 9215028 || $EVTPART1 eq 9006516 || $EVTPART1 eq 8578420)\
    {fhem("set sc_b_b on;;setstate sc_switch_b_b on")}   \
  if ($EVTPART1 eq 8578428 || $EVTPART1 eq 8602188 || $EVTPART1 eq 9215036 || $EVTPART1 eq 9006524)\
    {fhem("set sc_b_c on;;setstate sc_switch_b_c on")}   \
  if ($EVTPART1 eq 9084946 || $EVTPART1 eq 8687506 || $EVTPART1 eq 8772514 || $EVTPART1 eq 8463394)\
    {fhem("set sc_b_d on;;setstate sc_switch_b_d on")}    \
  if ($EVTPART1 eq 8772522 || $EVTPART1 eq 8463402 || $EVTPART1 eq 9084954 || $EVTPART1 eq 8687514)\
    {fhem("set sc_b_.* on;;setstate sc_switch_b_.* on")}      \
\
  if ($EVTPART1 eq 8687504 || $EVTPART1 eq 8772512 || $EVTPART1 eq 8463392 || $EVTPART1 eq 9084944)\
    {fhem("set sc_b_a off;;setstate sc_switch_b_a off")}   \
  if ($EVTPART1 eq 8463396 || $EVTPART1 eq 8772516 || $EVTPART1 eq 8687508 || $EVTPART1 eq 9084948)\
    {fhem("set sc_b_b off;;setstate sc_switch_b_b off")}  \
  if ($EVTPART1 eq 9084956 || $EVTPART1 eq 8463404 || $EVTPART1 eq 8687516 || $EVTPART1 eq 8772524)\
    {fhem("set sc_b_c off;;setstate sc_switch_b_c off")}  \
  if ($EVTPART1 eq 8578418 || $EVTPART1 eq 9006514 || $EVTPART1 eq 9215026 || $EVTPART1 eq 8602178)\
    {fhem("set sc_b_d off;;setstate sc_switch_b_d off")} \
\
  if ($EVTPART1 eq 8602186|| $EVTPART1 eq 9006522|| $EVTPART1 eq 8578426|| $EVTPART1 eq 9215034)\
    {fhem("set sc_b_.* off;;setstate sc_switch_b_.* off")}      \
}
   
defmod sc_notify_c notify sc_remote:KeyCode:.*  {\
  if ($EVTPART1 eq 13027392 || $EVTPART1 eq 13519216 || $EVTPART1 eq 12585648 || $EVTPART1 eq 13349168)\
    {fhem("set sc_c_a on;;setstate sc_switch_c_a on")}   \
  if ($EVTPART1 eq 13349172 || $EVTPART1 eq 12585652 || $EVTPART1 eq 13519220 || $EVTPART1 eq 13027396)\
    {fhem("set sc_c_b on;;setstate sc_switch_c_b on")}   \
  if ($EVTPART1 eq 13349180 || $EVTPART1 eq 13027404 || $EVTPART1 eq 13519228 || $EVTPART1 eq 12585660)\
    {fhem("set sc_c_c on;;setstate sc_switch_c_c on")}   \
  if ($EVTPART1 eq 13226146 || $EVTPART1 eq 13381410 || $EVTPART1 eq 13478674 || $EVTPART1 eq 13599890)\
    {fhem("set sc_c_d on;;setstate sc_switch_c_d on")}    \
  if ($EVTPART1 eq 13599898 || $EVTPART1 eq 13226154 || $EVTPART1 eq 13381418 || $EVTPART1 eq 13478682)\
    {fhem("set sc_c_.* on;;setstate sc_switch_c_.* on")}      \
\
  if ($EVTPART1 eq 13381408 || $EVTPART1 eq 13226144 || $EVTPART1 eq 13381408 || $EVTPART1 eq 13599888)\
    {fhem("set sc_c_a off;;setstate sc_switch_c_a off")}   \
  if ($EVTPART1 eq 13226148 || $EVTPART1 eq 13599892 || $EVTPART1 eq 13478676 || $EVTPART1 eq 13381412)\
    {fhem("set sc_c_b off;;setstate sc_switch_c_b off")}  \
  if ($EVTPART1 eq 13226156 || $EVTPART1 eq 13599900 || $EVTPART1 eq 13478684 || $EVTPART1 eq 13381420)\
    {fhem("set sc_c_c off;;setstate sc_switch_c_c off")}  \
  if ($EVTPART1 eq 13027394 || $EVTPART1 eq 13519218 || $EVTPART1 eq 12585650 || $EVTPART1 eq 13349170)\
    {fhem("set sc_c_d off;;setstate sc_switch_c_d off")} \
\
  if ($EVTPART1 eq 13027402|| $EVTPART1 eq 13519226|| $EVTPART1 eq 12585658|| $EVTPART1 eq 13349178)\
    {fhem("set sc_c_.* off;;setstate sc_switch_c_.* off")}      \
}

Amenophis86

Hier ein Vorschlag:
Ersetzte die Dummies mit userreadings im jeweiligen MQTT Device, dazu nutzt du das attr subscribeReading mit dem du auf das MQTT Reading lauschen kannst. Dann hast du alles in einem und der Zustand dürfte auch immer passen. Wie genau das geht kann ich dir gerade nicht schreiben, müsstest aber genug Infos dazu in CommandRef / Forum / Wiki finden.

Sollte dir hier nicht genug geholfen werden empfehle ich das Thema nach MQTT zu verschieben.
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...

Dattel01

#3
Hmm... ich werd mich mal probieren...

KölnSolar

da ich kein Freund von WLAN-2,4-GHz für Hausautomatisierung bin: Ich denke, dass die Dosen das IT-Protokoll "sprechen". Warum dann nicht einen nanoCUL basteln und aculfw oder S'duino drauf flashen und das IT-Modul nutzen ?
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Dattel01

Das hätte ich wohl gerne so gemacht, allerdings senden die Dosen mit einem Rolling-Code... D.h die Fernbedienung sendet abwechselnd 4 unterschiedliche Codes je Taste...
Für das reine Senden von Codes über FHEM mag das reichen, da man hier sich aus den 4 Codes einfach einen rauspickt und diesen sendet...
Will man aber zusätzlich die Fernbedienung nutzen und den Status der Dosen im Frontend anzeigen lassen, dann wird das schon schwieriger.
Die WLan-Verbindung macht mir gerade die wenigsten Probleme... Eher die Empfangsleistung meines MX-RM-Billig-Empfängers. Da muss ich wohl oder übel noch eine Antenne basteln.

Das mit den UserReadings habe ich im Übrigen nicht hinbekommen...
Denn: Es gibt nur ein Topic, das ich subscriben kann. Der Value, der in diesem Topic gesendet wird, ist immer die gedrückte Taste.(z.B. 4913776,4372912,4557888,4719152,....)..

so hatte ich das ja schon drin ->
# RemoteControl -> auf MQQT lauschen
defmod sc_remote MQTT_DEVICE
attr sc_remote IODev mqttBroker
attr sc_remote room Mqqt
attr sc_remote stateFormat state
attr sc_remote subscribeReading_KeyCode home/433toMQTT



sc_switch_a_a soll aber nur als "ON" gewertet werden, wenn im sc_remote.KeyCode 4913776,4372912,4557888 oder 4719152 gelesen wird...




Beta-User

Zitat von: Dattel01 am 01 März 2018, 09:53:09
Eher die Empfangsleistung meines MX-RM-Billig-Empfängers. Da muss ich wohl oder übel noch eine Antenne basteln.
Spar dir den Aufwand und nimm einen vernünftigen Receiver. Die Dinger sind bekanntermaßen Schrott und werden durch eine Antenne auch nur bedingt "besser"...
Kostet praktisch kaum mehr, ist aber um Längen besser: RXB12 (gibt auch RXB's mit anderen Endnummern, sind dem Vernehmen nach auch alle ok).

Just my2ct

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

KölnSolar

ZitatDas hätte ich wohl gerne so gemacht, allerdings senden die Dosen mit einem Rolling-Code... D.h die Fernbedienung sendet abwechselnd 4 unterschiedliche Codes je Taste...
Dann ein code bzw. device als "normales" device, die anderen 3 in einen separaten Raum. Ein notify auf die 3 "unerwünschten devices" mit einem setreading(löst dann auch ein weiteres event aus)für das "normale" device.
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Dattel01

Das mit den RXB12 Modulen ist ein guter Tipp... Am liebsten würde ich ja einen noch vorhandenen TI-CC1101 nutzen, aber dazu müsste ich OpenMqttGateway anpassen, denn für meine Zwecke habe ich kein Modul gefunden, welches RF-Signale ähnlich auflöst, aber über SPI steuert. Es gibt nur eine Implementierung für RF69, welches ich als für mich unbrauchbar klassifiziert habe...

Zitat von: KölnSolar am 01 März 2018, 15:24:10
Dann ein code bzw. device als "normales" device, die anderen 3 in einen separaten Raum. Ein notify auf die 3 "unerwünschten devices" mit einem setreading(löst dann auch ein weiteres event aus)für das "normale" device.

Das funktioniert so nicht...
und ich bin zu doof, mit dem Subscribe/SetReading umzugehen.. Es gibt leider nur ein mqtt-Topic "home/433toMQTT", welches ich abonnieren kann. der Content dieses Topics ist der relevante Teil und enthält die KeyCodes. Das SetReading müsste dann also abhängig von diesem Content das richtige Device "aktualisieren". Im Prinzip machen ich genau das ja bereits über mein "setstate" im obrigen Beispielcode (wobei das Frontend hier ja logischerweise keine Refresh bekommt)

Das "richtige" Device, ist mit publishSet home/commands/PLSL_520/433_5/RFBITS_24 an mqtt angebunden und sendet dorthin, wenn ich im Frontend was klicke entweder den Code für ON oder OFF
attr sc_switch_a_a eventMap 4372912:on 4597520:off
attr sc_switch_a_a webCmd on:off


Das löst dann wiederum im mqtt-Topic "home/433toMQTT" eine Message aus, die dann wieder in FHEM ankommt... Wenn also SetReading ein Aktualisierungsevent auslöst, dann habe ich doch wieder eine Endlosschleife...

Sonderlich eleganter als meine Variante finde ich das allerdings auch nicht.
Wahrscheinlich ist/bleibt das mit diesen Steckdosen immer eine Frickellösung.

Beta-User

Zu dem CC1101:
Es gab mal einen Thread "Warum funktioniert der Signalduino mit einem CC1101?". Wenn ich das richtig interpretiere, könnte ein _bereits initialisierter_ CC1101 auch als "normaler" Sender- und Empfänger genutzt werden. Ist natürlich nicht ganz so einfach, weil du die "richtigen" Einstellungen für die gesamte CC1101-Konfiguration ja einmal in dessen EEPROM beamen müßtest, sonst bringt das nichts.
Aber vielleicht hilft das ja...

Ansonsten ist Signalduino@CC1101 bzw. nanoCUL auch noch so ein Stichwort, und ich bin mir nicht sicher, ob die ESP8266-CC1101-Kombi (Signal-ESP?) nicht auch MQTT spricht bzw. der das einfach beizubringen wäre.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Dattel01

#10
Uuii... die SignalESP Variante war irgendwie an mir vorbeigeschrammt..
hab bisher immer nur an CUL und Co gedacht, es aber nie hinbekommen. Habe gestern mal versucht SignalESP auf meiner Hardware an's laufen zu bekommen... Leider nur mit mittelmässigem Erfolg, den FHEM hat sich mit dem Teil nie richtig koppeln können, weil's auf die Anfragen nicht wir erwartet geantwortet hat...
So wirklich stabil scheint das noch nicht zu sein...
Geht schon alleine mit der WLAN-Config los, die einfach auf dem EPROM versucht wird auszulesen. Leider heißt die Config vom OpenMqtt Gateway identisch und der Bereich im EPROM wo die UserFiles abgelegt werden, wird beim Flashen der FW nicht aufgeräumt. Somit ist das Ding beim Booten erstmal schön auf die Bretter gegangen. Bis ich da erstmal drauf gekommen bin um dann den Code anzupassen, dass der EPROM an der Stelle beim ersten Access erstmal von mir formatiert werden sollte :-D

Als CUL scheint (nach meinem bisherigen Stand) der ESP8266 aufgrund von TimingProblem nicht so geeignet zu sein...


Dattel01

ich hab's jetzt dann endlich mal geschafft, den SignalESP hier ans Laufen zu bekommen... von meiner Fernbedienung schneidet der erstmal gar nichts mit - dafür taucht aber plötzlich mein Außentemperaturfühler auf :-D... auch nicht schlecht..

Dattel01

Nochmal eine Zusammenfassung.
SignalESP funktioniert mit CC1101->WetterSensor wird erkannt und auch schön angelegt und geloggt.
Meine Fernbedienungen nicht...
Ich habe 2 Verschiedene Generationen dieser Steckdosen/Fernbedienungen. Die alte Generation löst gar kein Event aus. Die neue hingegen schon - das Protokoll scheint sich hier etwas verändert zu haben, das habe ich auch im Rahmen meiner MQTT Analyse schon festgestellt, dass die andere Längen auf einem anderen Protokoll senden.
FHEM legt irgendwann auch schön InterTechno-Devices an - allerdings für jede Taste 4 Stück - auch spiegelt hier der ON/OFF Status nicht den Tastendruck wieder.. Ein ON auf der Fernbedienung löst ein OFF im FHEM aus vice versa...

Kurzum: für diese Steckdosen nicht brauchbar....

gbomacfly

FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT