Hallo,
noch drei Tage bis zum Urlaub und die zeitgesteuerte Gartenbewässerung sollte funktionieren. Ich sehe aber gerade den Wald vor Bäumen nicht und es gibt soviel noch zu tun...
Ich habe im Garten einen ESP 07 mit einer MCP23017 Porterweiterung (Output). An den Ports des MCP23ß17 habe ich 12 Relais. Installiert ist Tasmota.
Über die Tasmotakonsole lassen sich die Relais auch schalten. Nun soll das auch aus FHEM heraus gehen, aber irgendwie bin ich zu blöd.
Unter FHEM ist der MQTT2 Server installiert.
Das Device (ESP8266 mit Tasmota) wurde per autocreate erkannt und ein MQTT2 Device angelegt. Hier mal ein list dieses MQTT2 Devices:
Save config ?
Aussen
DOIF
Garage
MQTT2
MQTT2_DEVICE
Rolladen
Rolladenautomatik
SmartVisu
Unsorted
Zimmer Maya
Zimmer Tim
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
restart
update
updatecheck
reloadMyUt ils
Internals:
CID DVES_264C43
DEF DVES_264C43
DEVICETOPIC MQTT2_DVES_264C43
FUUID 5d239018-f33f-d066-0b96-253ef8aa117849ba
IODev MQTT2server
LASTInputDev MQTT2server
MQTT2server_MSGCNT 157
MQTT2server_TIME 2019-07-08 20:55:37
MSGCNT 157
NAME MQTT2_DVES_264C43
NR 57
STATE ???
TYPE MQTT2_DEVICE
READINGS:
2019-07-08 20:53:49 BME280_Humidity 51.7
2019-07-08 20:53:49 BME280_Pressure 1010.4
2019-07-08 20:53:49 BME280_Temperature 18.1
2019-07-08 20:50:29 LWT Online
2019-07-08 20:53:49 LoadAvg 19
2019-07-08 20:53:49 MCP230XX_D0 0
2019-07-08 20:53:49 MCP230XX_D1 0
2019-07-08 20:53:49 MCP230XX_D10 0
2019-07-08 20:53:49 MCP230XX_D11 0
2019-07-08 20:53:49 MCP230XX_D12 0
2019-07-08 20:53:49 MCP230XX_D13 0
2019-07-08 20:53:49 MCP230XX_D14 0
2019-07-08 20:53:49 MCP230XX_D15 1
2019-07-08 20:53:49 MCP230XX_D2 0
2019-07-08 20:53:49 MCP230XX_D3 0
2019-07-08 20:53:49 MCP230XX_D4 0
2019-07-08 20:53:49 MCP230XX_D5 0
2019-07-08 20:53:49 MCP230XX_D6 0
2019-07-08 20:53:49 MCP230XX_D7 0
2019-07-08 20:53:49 MCP230XX_D8 0
2019-07-08 20:53:49 MCP230XX_D9 0
2019-07-08 20:53:49 MCP230_OUT_END 1
2019-07-08 20:53:49 MCP230_OUT_OUT_D0 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D1 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D10 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D11 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D12 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D13 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D14 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D15 ON
2019-07-08 20:53:49 MCP230_OUT_OUT_D2 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D3 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D4 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D5 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D6 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D7 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D8 OFF
2019-07-08 20:53:49 MCP230_OUT_OUT_D9 OFF
2019-07-08 20:50:29 POWER
2019-07-08 20:53:49 PressureUnit hPa
2019-07-08 20:55:37 S29cmnd_D4_COMMAND OFF
2019-07-08 20:55:37 S29cmnd_D4_STATE OFF
2019-07-08 20:53:49 Sleep 50
2019-07-08 20:53:49 SleepMode Dynamic
2019-07-08 20:53:49 Switch1 ON
2019-07-08 20:53:49 TempUnit C
2019-07-08 20:53:49 Time 2019-07-08T19:53:48
2019-07-08 20:53:49 Uptime 0T22:16:00
2019-07-08 20:53:49 Vcc 3.595
2019-07-08 20:53:49 Wifi_AP 1
2019-07-08 20:53:49 Wifi_BSSId F0:B0:14:FE:C1:2C
2019-07-08 20:53:49 Wifi_Channel 1
2019-07-08 20:53:49 Wifi_Downtime 0T00:00:29
2019-07-08 20:53:49 Wifi_LinkCount 4
2019-07-08 20:53:49 Wifi_RSSI 48
2019-07-08 20:53:49 Wifi_SSId Stones
Attributes:
IODev MQTT2server
alias Gartenhaus
readingList DVES_264C43:tele/Gartenhaus/LWT:.* LWT
DVES_264C43:cmnd/Gartenhaus/POWER:.* POWER
DVES_264C43:stat/Gartenhaus/RESULT:.* { json2nameValue($EVENT) }
DVES_264C43:tele/Gartenhaus/STATE:.* { json2nameValue($EVENT) }
DVES_264C43:tele/Gartenhaus/SENSOR:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE
Ich brauch ja irgendwann mal 12 Schalter on:off für die Relais (derzeit reichen zwei für den Garten).
Kann ich die alle innerhalb dieses Devices mit setlist und webcmd anlegen, oder funktioniert das nur für ein Relais?
Falls das nur für ein Relais geht, muss ich dann für jedes Relais einen Dummy anlegen?
Ich habe mal so einen Dummy testweise angelegt, aber das mit den Topics unter setlist kriege ich auch irgendwie nicht hin...
Internals:
CFGFN
DEVICETOPIC Rasensprenger
FUUID 5d239524-f33f-d066-8bd9-6c222e8d05ba15a5
IODev MQTT2server
NAME Rasensprenger
NR 96
STATE off
TYPE MQTT2_DEVICE
READINGS:
2019-07-08 21:25:04 state off
Attributes:
IODev MQTT2server
devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
setList on cmnd/Gartenhaus/MCP230XX_D1 on\
off cmnd/Gartenhaus/MCP230XX_D1 off
webCmd on:off
Wie müssen die Topics statt "cmnd/Gartenhaus/MCP230XX_D1" aussehen, damit das funktioniert?
So sieht die Konfiguration von MQTT unter Tasmota aus:
Hmm,
zum einen wäre es klarer, um was es geht, wenn aus dem Threadtitel hervorginge, dass es um ein mehrkanaliges Device und MQTT2_DEVICE geht...
Zum anderen: Du brauchst eher keinen Dummy, sondern mußt zunächst entscheiden, ob du pro Kanal ein Gerät haben willst oder mehrere Kanäle auf einem Gerät (oder Mischformen davon...). Das geht alles als MQTT2_DEVICE, es ist "nur" die Frage, wie die setList und die readingList jeweils aufgebaut ist.
Vielleicht schaust du dir mal die mqtt2.template-File an, da gibt es u.a. auch für Tasmota Konfigurationsbeispiele, wie man dieselbe Hardware als mehrkanaliges Großdevice oder als "gesplittete" Einzeldevices konfiguriert.
(Allgemein würde ich bei Tasmota im "nur-FHEM-Modus" auch empfehlen, die auf Kleinschreibung ("off" statt "OFF" usw.) umzustellen; auch dafür gibt es ein attrTemplate).
Da es hier etwas anders ist mit der I2C-Erweiterung, wäre es noch hilfreich zu wissen, auf welche topics die Schaltbefehle jeweils zu senden wären und über welchen Weg die Rückmeldung zum Schaltstatus der MCP-PINs kommen (wir müssen ggf. den JSON filtern, der über RESULT (?) zurückkommt...).
Als Start wäre es vermutlich erst mal am besten, das als "Großdevice" zu konfigurieren; evtl. ist es dann einfacher (wg. der Topic-Struktur usw.), die Kanäle dann jeweils mit einem ReadingsProxy zu vereinzeln.
Würde ich nicht mit tasmota, sondern mit espeasy machen.
Zitat von: DasQ am 09 Juli 2019, 10:04:47
Würde ich nicht mit tasmota, sondern mit espeasy machen.
Ist zwar aus meiner Warte OT, aber kannst du kurz erläutern warum, einschließlich der Frage, ob mit dem/n ESPEasy-Modul(en) oder weiter über den MQTT-Weg?
Er hat nen esp8266-07und da bietet espeasy weit mehr und einfachere Möglichkeiten.
Und klar ist es jetzt z.b. Bei mqtt besonders geeignet. Da ich mir die topics basteln kann wie ich will.
Aber der wohl entscheidendste Faktor ist die wesentlich leichtere Konfiguration/Bedienung ... mit Klickibunti webif und als autarker client.
Eben ESP EASY
Zitat von: Beta-User am 09 Juli 2019, 07:33:59
Da es hier etwas anders ist mit der I2C-Erweiterung, wäre es noch hilfreich zu wissen, auf welche topics die Schaltbefehle jeweils zu senden wären und über welchen Weg die Rückmeldung zum Schaltstatus der MCP-PINs kommen (wir müssen ggf. den JSON filtern, der über RESULT (?) zurückkommt...).
Das ist mein vorrangiges Problem. Normalerweise ist der Pfad für normale Relais unter Tasmota
cmnd/%topic%/<command> <parameter>
z. B. cmnd/Gartenhaus/Power1 on
Den MCP230XX kann ich nicht mit Power<x> ansprechen - das ist klar. Aber was muss hin?
Folgende Varianten habe ich erfolglos versucht:
cmnd/Gartenhaus/sensor29 1
cmnd/Gartenhaus/MCP230XX_D1
cmnd/Gartenhaus/MCP230_OUT_OUT_D1
cmnd/Gartenhaus/S29cmnd_D1
Wie kann ich am schnellsten den MQTT Befehl testen? Ich nehme an im MQTT2 Server oben in dem Eingabefeld neben publish, oder?
Zitat von: Beta-User am 09 Juli 2019, 07:33:59
Zum anderen: Du brauchst eher keinen Dummy, sondern mußt zunächst entscheiden, ob du pro Kanal ein Gerät haben willst oder mehrere Kanäle auf einem Gerät (oder Mischformen davon...). Das geht alles als MQTT2_DEVICE, es ist "nur" die Frage, wie die setList und die readingList jeweils aufgebaut ist.
Vielleicht schaust du dir mal die mqtt2.template-File an, da gibt es u.a. auch für Tasmota Konfigurationsbeispiele, wie man dieselbe Hardware als mehrkanaliges Großdevice oder als "gesplittete" Einzeldevices konfiguriert.
Das mit den mehreren Einzeldevices habe ich gesehen. Also ein MQtt2 Device für eines der zwölf Relais. Dann kann ich unter setlist und webcmd die Schaltflächen für on und off definieren.
Was ich noch nicht verstanden habe - wie soll das als Großdevice funktionieren? Mit setlist kann ich doch nur einmal on oder off definieren. Ich möchte aber alle Relais getrennt voneinander schalten können. Natürlich könnte ich mir für das nächste Relais was neues ausdenken, z. B. an und aus, aber das sähe später ziemlich gruselig aus und wäre furchtbar zu bedienen. Ideal wäre, wenn im Großdevice in der Webansicht für jedes Relais ein Name vergeben werden könnte mit jeweils on,off Schaltflächen. Unter diesen Namen sollten die Relais auch anderweitig in FHEM angesprochen werden können.
Was der korrekte Pfad ist, weiß ich auch nicht, ggf. bitte im Tasmota-Forum (extern) nachfragen, wenn sich hier dazu keiner meldet...
Wie du schon bemerkt hast, kann man u.a. auch das IO direkt zum publishen/testen nutzen.
Was Einzel/Sammeldevice angeht: das ginge ggf. auch parallel, bei den mehrkanaligen in der template-file müßte es auch Beispiele geben mit dropdowns ("Kanal1:on,off"). Aber z.B. die SetExtensions gingen damit nicht bzw. nur in einem Kanal... Ich würde also zunächst sehen, dass ich das mit einem Großdevice funktional bekäme, danach kann man das leicht splitten oder auch doppelte Devices anlegen.
Vielleicht schaust du dir ggf. vorab die genannte Alternative mit ESPEasy mal an, auch wenn mir die Erläuterung von DasQ mangels Kenntnis des Moduls nicht vollständig einleuchtet?
Was den JSON und die Filterei angeht: Da brauchen wir erst mal zusätzlich den unausgepackten JSON (readingList-Eintrag doppeln, aber die Kopie ohne json2nameValue() als eigenes Reading nutzen. Vielleicht schaust du dir mal das Tasmota-RF und -IR-template an und überfliegst den Thread zum RF, da sollte das "ansatzweise" erläutert sein...
Hallo,
ich setze ebenfalls Tasmota mit dem MCP23017 Modul ein.
Bei mir werden die Readings in ein MQTT Device geschrieben.
Das MCP23017 habe ich in 8 Eingänge (wovon ich aktuell nur 1 nutze) und 8 Ausgänge eingeteilt.
Die Readingslist sieht folgendermaßen aus:
tele/Garage/LWT:.* LWT
tele/Device/STATE:.* { json2nameValue($EVENT) }
tele/Device/SENSOR:.* { json2nameValue($EVENT) }
tele/Device/INFO.:.* { json2nameValue($EVENT) }
tele/Device/UPTIME:.* { json2nameValue($EVENT) }
stat/Device/RESULT:.* { json2nameValue($EVENT) }
Zum steuern von den Ausgängen habe ich folgende Setlist:
green cmnd/Device/sensor29 8,
red cmnd/Device/sensor29 9,
blue cmnd/Device/sensor29 10,
geschaltet wird dann mit set Device green on
Gruß
Alex
Moin,
meine Setlist funktioniert nun mit folgendem Eintrag:
on cmnd/Gartenhaus/sensor29 1,on
off cmnd/Gartenhaus/sensor29 1,off
Danke dafür :D
Damit das für den Urlaub mit der Bewässerung klappt, habe ich erstmal zwei Einzeldevices angelegt und darauf einen Weekdaytimer gesetzt. Die Pflanzen sind also erstmal save. In 3 Wochen würde ich den Thread dann wieder hoch holen, um den Rest mal sauber umzusetzen.
Moin,
ich probiere ebenfalls den MCP23017 (Tasmota) über Fhem anzusprechen.
Bis jetzt leider ohne Erfolg.
Bei mir ist Mosquitto als MQTT Server installiert
Ich habe das Beispiel von Nighthawk bei mir mal eingepflegt. Allerdings mit meinen Werten.
green cmnd/Device/sensor29 8,
Leider brachte es mich nicht weiter
Anbei mal meine Settings.
defmod Werkstatt MQTT_DEVICE
attr Werkstatt IODev Mosquitto
attr Werkstatt publishSet green cmnd/Werkstatt/sensor29 0,
attr Werkstatt subscribeReading_INFO tele/Device/INFO:.* { json2nameValue($EVENT) }
attr Werkstatt subscribeReading_LWT tele/Garage/LWT:.* LWT
attr Werkstatt subscribeReading_RESULT tele/Device/RESULT:.* { json2nameValue($EVENT) }
attr Werkstatt subscribeReading_SENSOR tele/Device/SENSOR:.* { json2nameValue($EVENT) }
attr Werkstatt subscribeReading_STATE tele/Device/STATE:.* { json2nameValue($EVENT) }
Ich hoffe ihr habt einen Tipp für mich ;)
Ja, von MQTT_DEVICE auf MQTT2_DEVICE umzusteigen :)
@Canon.Fritz
Hast Du in Tasmota die Option für den Mode "output" auch in der User_config_override.h aktiviert und die IOs auch entsprechend konfiguriert (Pinmode 5 oder 6 zum Schalten als Ausgang)?
Hier mehr Infos zur Konfiguration: https://github.com/arendst/Sonoff-Tasmota/wiki/MCP23008-MCP23017 (https://github.com/arendst/Sonoff-Tasmota/wiki/MCP23008-MCP23017)
Bitte beachte auch dass green in meinem Fall ein frei gewählter Name für einen Ausgang ist und 8 der entsprechende Ausgang am MCP.
Gruß
Alex
Mit der Hilfe von rudolfkoenig hat es nun funktioniert :)
Zitat von: rudolfkoenig am 04 August 2019, 13:00:50
Ja, von MQTT_DEVICE auf MQTT2_DEVICE umzusteigen :)
Vielen Dank für die schnelle Hilfe 8)