Einfache Rollosteuerung mit NodeMCU und Steppermotor 28BYJ_48

Begonnen von Hacksaw, 15 Juli 2020, 09:29:16

Vorheriges Thema - Nächstes Thema

Hacksaw

Hallo an alle.

Habe folgendes Projekt vor: http://hacksaw.de/Fhem/Schaltung.png
Habe nach vielen Try und Errors ein Sketch auf einen NodeMCU Lua Lolin V3 Module ESP8266 ESP-12F geflasht.
Erreiche die Steuerung im Browser, sieht so aus: http://hacksaw.de/Fhem/Webansicht.jpg

Betätige ich jetzt den Slider, erhalte ich im Arduino/seriellen Monitor folgende Rückmeldung:

[ 0 ] get Text: 31
Trying to send msg.../raw/esp8266/12914749/out:{ "set":30, "position":0 }
Trying to send msg.../raw/esp8266/12914749/out:{ "set":30, "position":30 }
Stopped. Reached wanted position
Saved JSON to SPIFFS
{"currentPosition":57,"maxPosition":186,"config_name":"Rollo_links","mqtt_server":"1xx.1xx.1xx.24","mqtt_port":"1883","mqtt_uid":"xx","mqtt_pwd":"xx","config_rotation":"true"}
[ 0 ]  get Text: (update)

wobei 1xx.1xx.1xx.24 meine BrokerIP ist, die vom Rollo ist 1xx.1xx.1xx.85

Meine Frage: Wie bekomme ich jetzt die Steuerung in Fhem integriert, damit ich das Rollo darüber steuern kann?


Danke

PS: Habe die Meldung in eckigen Klammern im Post geändert, da es das Forum es sonst als Aufzählung interpretiert.
#######################

PPS: Habe bisher das probiert. aber wenn ich einen Wert setze will er immer SaveConfig??


defmod WZ_Rollo_links MQTT_DEVICE
attr WZ_Rollo_links userattr subscribeReading_state subscribeReading_tele
attr WZ_Rollo_links DbLogExclude .*
attr WZ_Rollo_links IODev Mosquitto
attr WZ_Rollo_links alias Rollo links
attr WZ_Rollo_links devStateIcon 0:fts_shutter_10@green 10:fts_shutter_20@green 20:fts_shutter_30@green 30:fts_shutter_40@green 40:fts_shutter_50@green 50:fts_shutter_60@green
attr WZ_Rollo_links event-on-change-reading .*
attr WZ_Rollo_links event-on-update-reading .*
attr WZ_Rollo_links publishSet 0 50 100 /raw/esp8266/12914749/in
attr WZ_Rollo_links room EG->Wohnzimmer
attr WZ_Rollo_links subscribeReading_state /raw/esp8266/12914749/out
attr WZ_Rollo_links subscribeReading_tele /raw/esp8266/12914749/out

setstate WZ_Rollo_links 50
setstate WZ_Rollo_links 2020-07-15 13:02:31 position 49
setstate WZ_Rollo_links 2020-07-15 13:02:31 set 49
setstate WZ_Rollo_links 2020-07-15 13:02:29 state 50
setstate WZ_Rollo_links 2020-07-15 13:02:31 tele { "set":49, "position":49 }
setstate WZ_Rollo_links 2020-07-15 13:02:31 transmission-state incoming publish received

Hacksaw


flummy1978

Aloha,

Auch wenn Du jetzt nicht verrätst, ob Du es bereits gelöst hast, oder nicht, könnte ich ja mal eine Vermutung anstellen, dass es den anderen so geht, wie mir:

- Unbedingt vor dem ersten Post lesen hast Du eben nicht gelesen
- Daraus folgt eine schwer zu verstehende Problembeschreibung
- Mit exotischen (mqtt) Ausgaben, kennt sich kaum jemand aus
- Ebenso mit "einem Sketch" (von dem Du nicht sagst, welcher)


@Topic:  Warum nimmst Du nicht Tasmota z.B. ? Dafür gibt es für FHEM (und für alle anderen auch) ein entsprechendes Modul. Ist dann für alle wesentlich leichter zu helfen und durchzublicken
ABSOLUT ins Blaue geschätzt und geraten:

attr WZ_Rollo_links publishSet 0 50 100 /raw/esp8266/12914749/in
attr WZ_Rollo_links room EG->Wohnzimmer
attr WZ_Rollo_links subscribeReading_state /raw/esp8266/12914749/out
attr WZ_Rollo_links subscribeReading_tele /raw/esp8266/12914749/out


Das scheinen zwar die betreffenden stellen zu sein, die für Dich wichtig sind, aber ich glaube hier ist die Definition falsch:

attr Licht_EG_KUE_decke readingList shellies/Shelly2/relay/0:.* state\
  shellies/Shelly2/relay/0:.* relay0\
  shellies/Shelly2/input/0:.* input0\
  shellies/Shelly2/online:.* online\
attr Licht_EG_KUE_decke room Flur,Kueche,Verbindungen->Tasmota/Shelly
attr Licht_EG_KUE_decke setList toggle:noArg cmnd/Shelly2/POWER1 2\
on:noArg cmnd/Shelly2/POWER1 1\
off:noArg cmnd/Shelly2/POWER1 0\

So sieht einer der MQTT (Shelly) Teile aus, die über MQTT2DEVICE eingebunden sind, d.h. hier gibt es für die Kommunikation lediglich die attribute readingList und setList. Ob Du dann in der Setlist Deine Befehle setzen musst ? - leider kein Plan. Daher auch die Empfehlung einen Sketch auf das Gerät zu flashen, der hier (oder wo anders) bekannt ist. Ansonsten musst Du sehr sehr vieles händisch lösen und bist auf den einen Experten angewiesen der Dir helfen könnte ;)


Zitat von: Hacksaw am 17 Juli 2020, 14:55:47
Danke für die vielen hilfreichen Tips ;)
Btw Ungeduld, gefolgt von Unfreundlichkeit sind keine guten Berater ;) Hier helfen alle in ihrer Freizeit und wenn sie nicht helfen können (oder wollen) tun sie es eben nicht. Auch wenn ich Dir bei Deinem Problem höchstwahrscheinlich gar nicht geholfen habe, wollte ich es zumindest mal loswerden :)

Viele Grüße
& Viel Erfolg

Andreas

howy-1

Hallo Peter,

ich denke, ich kann auch gleich hier öffentlich weiterschreiben, anstatt per PM.

Da bei Dir der Befehl "publishSet 0 99" drinsteht, gehe ich davon aus, dass Du es über das MQTT-Modul machst,
wohingegen ich MQTT2 genommen habe, ohne externen Mosquitto. Da gibt es kein publishSet, da wird das über setList geregelt.

Also vorher:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server room MQTT

Daraufhin wird, wenn Du den ESP mal rebootest, schon automatisch das Device dazu angelegt.


Bei mir sieht das folgendermaßen aus, extra nicht als Codeblock, damit ich Kommentare dazuschreiben kann.:


define Rollo_1 MQTT2_DEVICE ESPClient_6895911          <---  automatisch von autocreate angelegt, durch MQTT2-Device

attr Rollo_1 cmdIcon offen:fts_shutter_up zu:fts_shutter_down halb:fts_shutter_50

attr Rollo_1 icon fts_shutter_40

attr Rollo_1 readingList ESPClient_6895911:/raw/esp8266/register:.* { json2nameValue($EVENT) }\

ESPClient_6895911:/raw/esp8266/6895911/out:.* { json2nameValue($EVENT) }\

ESPClient_6895911:raw/esp8266/6895911/in:.* esp8266_6895911_in\

ESPClient_6895911:/raw/esp8266/6895911/in:.* esp8266_6895911_in          <---   Kam alles automatisch mit rein, durch autocreate

attr Rollo_1 room MQTT

attr Rollo_1 setList offen:noArg /raw/esp8266/6895911/in 0\           <---    nach vielen Versuchen endlich den richtigen Befehl gefunden für Stellung 0

halb:noArg /raw/esp8266/6895911/in 50\          <---    halb zu

zu:noArg /raw/esp8266/6895911/in 100\           <---   ganz zu

pct:slider,0,1,100 /raw/esp8266/6895911/in $EVTPART1          <---mit dieser Zeile kriege ich sogar einen Slider, der zwar dummerweise immer wieder auf einen Punkt zurückspringt, es funktioniert aber trotzdem.


attr Rollo_1 stateFormat position

attr Rollo_1 webCmd :offen:zu:halb:pct
-----------------------------------------------


Mit meinem stateFormat bin ich noch nicht so ganz zufrieden, aber ich bin ja noch in der Testphase.

Grüße, Dirk

Hacksaw

Hallo Dirk,

Danke für deine Lösung.
Ja ich nutze den externen Mosquitto. Habe es bisher vermieden MQTT2 zu nutzen.
Bei mir läuft ein Pi mit fhem, einer mit IoBroker und Mosquitto und einer in der Küche zu Visualisierung von fhem.
Ich nutze meine im Moment nur, wenn ich den Fernseher abends einschalte, gehen die dezenten Beleuchtungen zum Fensehen schauen mit an und das Rollo schliesst sich.

Aber ich behalte dein Lösung mal im Auge, vieleicht nutze ich irgendwann MQTT2. ;)

Gruß Peter