FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Pancake am 12 Oktober 2022, 20:31:56

Titel: Publish aus AT-Befehl
Beitrag von: Pancake am 12 Oktober 2022, 20:31:56
Abend,
folgendes Szenario:
Es soll ein Shellyplug S ein Tasmotagerät einschalten.
Der Shelly bleibt 5 min an, nach einen kurzem booten (5 Sekunden) und verbinden mit dem WLAN soll ein Kommando an das Tasmotagerät "gepublished" werden.

Das Tasmotagerät kann separat über Button gesteuert werden mit: off:noArg cmnd/stefan/shutterposition 0
                                                                                                            on:noArg cmnd/stefan/shutterposition 100
was auch funktioniert.

Der Shelly kann auch über Button gesteuert werden.

Der Shelly wird über einen AT-Befehl an sämtlichen Tagen der Woche um 19:29 eingeschaltet, dann erfolgt ein sleep von 5000ms danach soll der Befehl an das Tasmotagerät gesendet werden.
DEF
*19:29:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;sleep 5000;;set cmnd/stefan/shutterposition 0") }}

Der fett markierte Teil wird nicht gesendet.

In der Tasmota Webobfläche in der Console löst der Befehl  cmnd/stefan/shutterposition 0 die gewünschte Funktionalität aus.

Jemand eine Idee wie aus dem DEF korrekt "gepublished" wird?

MfG








Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 12 Oktober 2022, 21:02:03
Hi,

Zitatset hierfehlteinGerät publish cmnd/stefan/shutterposition 0

Da fehlt der MQTT Server und der Befehl publish - zumindest wenn der IO ein MQTT2 Device ist.

Gruß Otto
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 12 Oktober 2022, 22:12:16
Hallo,
der Server ( MQTT2_Server) ist in fhem implantiert.

Weitere Versuche:

set KuecheRolloN publish cmnd/stefan/shutterposition 0"
publish KuecheRolloN cmnd/stefan/shutterposition 0"
;set publish KuecheRolloN cmnd/stefan/shutterposition 0"
brachten noch keinen Erfolg.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 12 Oktober 2022, 22:14:06
und brachte das Fehler  :o

Dein MQTT2_SERVER heißt KuecheRolloN  ???
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 12 Oktober 2022, 22:23:34
Hier riecht es schon leicht nach Popcorn...

"help MQTT2_SERVER" bringt vielleicht etwas mehr Licht in diese Sache?

Ansonsten sieht das ziemlich verbogen aus, und der oberflächliche Mitleser fragt sich, warum da nicht einfach sowas wie "set <rollo1> pct 40; set <rollo2> open" steht...
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 12 Oktober 2022, 22:38:39
Dein MQTT2_SERVER heißt KuecheRolloN  ???

Nein.

Der  MQTT Server heißt MQTT2_Server

Das Tasmotagerät soll aus fhem mit dem MQTT Kommando cmnd/stefan/shutterposition 0  (unten)  bzw. cmnd/stefan/shutterposition 100 (oben) gesteuert werden.

Aus der Tasmota console und mit MQTT.fx funktioniert es auch, bloß aus fhem kommt bei dem Tasmotagerät nichts an.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 12 Oktober 2022, 22:42:35
Schau mal ins Wiki - Stichwort "Praxisbeispiele". Da findest du hoffentlich Ansatzpunkte dafür, wie du die setList von deinem MQTT2_DEVICE für Tasmota (und für den Shelly) konfigurieren könntest, dass die sich verhalten wie "normale Rollladenaktoren"  ;) .

PS: "stefan" ist mAn. nicht wirklich optimal als Topic-Bestandteil für einen Rollladenaktor... Was machst du, wenn auch das Licht im selben Zimmer per Tasmota-MQTT geschaltet werden soll?
Titel: Antw:Publish aus AT-Befehl
Beitrag von: rudolfkoenig am 12 Oktober 2022, 22:45:34
Zitat... dann erfolgt ein sleep von 5000ms ...
FHEM sleep arbeitet mit sec, und nicht ms.
Die Ausloesezeit kann man mit "fhemdebug timerList" pruefen.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 12 Oktober 2022, 23:13:54
Zitat von: Pancake am 12 Oktober 2022, 22:38:39
Dein MQTT2_SERVER heißt KuecheRolloN  ???

Nein.

Der  MQTT Server heißt MQTT2_Server

Warum reden wir so aneinander vorbei? :'( um einen FHEM Befehl zu bilden
set MQTT2_Server publish cmnd/stefan/shutterposition 0

In welcher Oberfläche arbeitest Du eigentlich mit FHEM?
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 12 Oktober 2022, 23:16:27
Mein Fehler:
sleep
[EN DE]
Die verzögerung kann

in Sekunden (Millisekunden genau, da man Nachkommastellen spezifizieren kann).


PS: "stefan" ist mAn. nicht wirklich optimal als Topic-Bestandteil für einen Rollladenaktor... Was machst du, wenn auch das Licht im selben Zimmer per Tasmota-MQTT geschaltet werden soll?
[/quote] da hast du recht, das ist Murks

Der Aufbau sieht so aus:

Schukosteckdose -> Shelly Plug S -> Steckernetzteil -> Tasmota Shutter (besteht aus Schrittmotor / Planetengetriebe / WEMOS D1 / A4988).
                                 
                                Shelly wird mit AT zeitgesteuert,  nach ca. 5 sec. ist der Tasmota shutter online, danach sollte der Befehl zum hoch- / runterfahren 
                                des  Rollos kommen -> Shelly schaltet alles aus.


Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 12 Oktober 2022, 23:23:36
In welcher Oberfläche arbeitest Du eigentlich mit FHEM?

Über Webbrowser FF
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 13 Oktober 2022, 10:25:58
a) Kannst du dich mal mit den Formatierungsmöglichkeiten für deine Beiträge befassen? Das ist in der Nähe von unlesbar...

b) Die Konstruktion bedeutet mAn. nicht, dass man aus dem "Tasmota"-Rollladenaktor nicht doch vorab einen FHEM-Rollladenaktor konfigurieren könnte/sollte.
Das würde die Befehle durchaus vereinfachen.

c) Diese "Kette" ist m.E. auch nicht optimal. Vielleicht wäre es möglich, den "hinteren Teil" (Motor+Treiber) hinter einen Transistor zu hängen und dann einfach von dem einen ESP her wegzuschalten, wenn grade keine Fahrt anliegt?
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 13 Oktober 2022, 11:23:12
Zitat von: Pancake am 12 Oktober 2022, 23:23:36
In welcher Oberfläche arbeitest Du eigentlich mit FHEM?

Über Webbrowser FF
Und funktioniert der Befehl aus Beitrag #8 wenn Du ihn so in die Befehlszeile von FHEM einwirfst?
Du kannst alternativ die Seite von deinem MQTT2_SERVER öffnen, interaktiv den Befehl publish aus der Klappliste auswählen und nur den hinteren Teil in die dort vorhandene Box stecken. Dann vorne auf set drücken. ::)
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 13 Oktober 2022, 17:59:05
Hallo,
Zitat
b) Die Konstruktion bedeutet mAn. nicht, dass man aus dem "Tasmota"-Rollladenaktor nicht doch vorab einen FHEM-Rollladenaktor konfigurieren könnte/sollte. Das würde die Befehle durchaus vereinfachen.

Die Rolladensteuerung aus fhem wäre natürlich gut. Hier fehlt mir aber das "richtige" Template um einen Schrittmotor mit einem A4988 zu steuern.

Zitat
c) Diese "Kette" ist m.E. auch nicht optimal. Vielleicht wäre es möglich, den "hinteren Teil" (Motor+Treiber) hinter einen Transistor zu hängen und dann einfach von dem einen ESP her wegzuschalten, wenn grade keine Fahrt anliegt?

Ein Schrittmotor läßt sich nicht einfach mit einem Transistor schalten. Der Schrittmotor benötigt einen Treiber wie z.B. A4988, DRV8825, TMC2208.
Hier ist die Hardware beschrieben:
https://tasmota.github.io/docs/Blinds-and-Shutters/#using-stepper-motors (https://tasmota.github.io/docs/Blinds-and-Shutters/#using-stepper-motors)

Zitat
Und funktioniert der Befehl aus Beitrag #8 wenn Du ihn so in die Befehlszeile von FHEM einwirfst?
Du kannst alternativ die Seite von deinem MQTT2_SERVER öffnen, interaktiv den Befehl publish aus der Klappliste auswählen und nur den hinteren Teil in die dort vorhandene Box stecken. Dann vorne auf set drücken.

Ja, der Befehl aus dem Beitrag # set MQTT2_Server publish cmnd/stefan/shutterposition 0 funktioniert :).

Wenn versucht wird den Teil  set MQTT2_Server publish cmnd/stefan/shutterposition 0

hier einzufügen gibt es eine Fehlermeldung.

*17:57:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;sleep 5;;set cmnd/stefan/shutterposition 0") }}
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 13 Oktober 2022, 18:06:34
logisch, weil Du wieder nur einen Teil des Befehls einfügst!!!
set MQTT2_Server publish cmnd/stefan/shutterposition 0
versus
set cmnd/stefan/shutterposition 0
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 13 Oktober 2022, 19:05:09
Zitat von: Pancake am 13 Oktober 2022, 17:59:05
Die Rolladensteuerung aus fhem wäre natürlich gut. Hier fehlt mir aber das "richtige" Template um einen Schrittmotor mit einem A4988 zu steuern.
Das ganz normale paßt m.E. "im Prinzip" - du darfst nur die backlog-Befehle nicht alle senden... Aber die Attribute müßten ohne weiteres 1:1 funktionieren.

Zitat
Ein Schrittmotor läßt sich nicht einfach mit einem Transistor schalten. Der Schrittmotor benötigt einen Treiber wie z.B. A4988, DRV8825, TMC2208.
Soweit war und ist mir das klar.
Hatte das so interpretiert, dass du mit dem ersten ESP die Spannungszufuhr wegschaltest, um  Energie zu sparen. Meine Frage war, ob man dazu einen weiteren ESP braucht, oder ob man die Energiezufuhr der "hungrigen" Teile gesondert wegschalten könnte (z.B. über eine über das "enable"-Signal zusätzlich vorgeschaltetes Relay oder einen MOSFET.

Zitat
hier einzufügen gibt es eine Fehlermeldung.
Vermutlich hat Otto123 ja schon richtig "geraten", was das eigentliche Problem ist, aber prinzipiell ist es für die Helfer auch interessant, WELCHE Fehlermeldung (in welchem Zusammenhang) kommt...
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 13 Oktober 2022, 19:50:37
Die Fehlermeldung erscheint nicht mehr.
Habe fhem resetet.

DEF
*19:31:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;sleep 5;;set MQTT2_Server publish cmnd/stefan/shutterposition 0")}}

Jetzt wird der Befehl set Shelly_KuecheRolloN on-for-timer 300 auch nicht mehr ausgeführt.

ZitatDas ganz normale paßt m.E. "im Prinzip" - du darfst nur die backlog-Befehle nicht alle senden... Aber die Attribute müßten ohne weiteres 1:1 funktionieren.
Weiß nicht wie so etwas unterbunden werden kann.

ZitatSoweit war und ist mir das klar.
Hatte das so interpretiert, dass du mit dem ersten ESP die Spannungszufuhr wegschaltest, um  Energie zu sparen. Meine Frage war, ob man dazu einen weiteren ESP braucht, oder ob man die Energiezufuhr der "hungrigen" Teile gesondert wegschalten könnte (z.B. über eine über das "enable"-Signal zusätzlich vorgeschaltetes Relay oder einen MOSFET

Sämtliche spannungsführenden Teile sollen ausgeschaltet werden mit demShelly Plug S.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 13 Oktober 2022, 20:30:21
so kommen wir nicht weiter.
Ich empfehle Grundlagen:
https://forum.fhem.de/index.php/topic,71806.0.html
https://wiki.fhem.de/wiki/Quick-Start

Poste bitte Raw Def oder ein list vom at in Codetags

Zitat von: Pancake am 13 Oktober 2022, 19:50:37
Habe fhem resetet.
Was meinst Du damit?

Wenn etwas "nicht geht" wie bei diesem at gibt es folgende Testschritte
at kennt set .... execNow (Webinterface) oder nimm den Ausführungsteil und wirf ihn in die FHEM Kommandozeile
nimm den ersten Befehl nach dem if - wirf in in die FHEM Kommandozeile.
Nimm den zweiten ... (macht hier keinen Sinn)
Nimm den dritten nach dem if -  wirf in in die FHEM Kommandozeile.
Nimm von mir aus den zweiten plus den dritten (mit einem semikolon als Trenner) usw.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 13 Oktober 2022, 21:26:11
defmod Wochentimer_Rollo_Kueche_N_zu at *21:07:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;;;sleep 5;;;;set MQTT2_Server publish cmnd/stefan/shutterposition 0")}}\
\
\

attr Wochentimer_Rollo_Kueche_N_zu mqttPublish set shellies/shellyplug-s-E3F645/relay/0/command on

setstate Wochentimer_Rollo_Kueche_N_zu Next: 21:07:00
setstate Wochentimer_Rollo_Kueche_N_zu 2022-10-13 21:07:00 state Next: 21:07:00



ZitatHabe fhem resetet.

Shutdown Restart

Gerade noch einmal sudo systemctl stop fhem und wieder gestartet mit sudo systemctl start fhem

Denn Shelly PlugS spanungslos gemacht und wieder in die Steckdose gesteckt.

Der Befehl set Shelly_KuecheRolloN on funktioniert in der Kommandozeile.
Der Befehl set Shelly_KuecheRolloN on-for-timer 300 funktioniert in der Kommandozeile.

In dem AT  Wochentimer_Rollo_Kueche_N_zu wird kein Befehl ausgeführt.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Otto123 am 13 Oktober 2022, 21:39:16
korrigiere bitte die Definition:
defmod Wochentimer_Rollo_Kueche_N_zu at *21:07:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;sleep 5;;set MQTT2_Server publish cmnd/stefan/shutterposition 0")}}
Und teste die Funktion mit set Wochentimer_Rollo_Kueche_N_zu execNow

Wie hast Du das attr Wochentimer_Rollo_Kueche_N_zu mqttPublish da hinein bekommen?  :o
Titel: [Gelöst] Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 13 Oktober 2022, 22:06:02
defmod Wochentimer_Rollo_Kueche_N_zu at *21:07:00 { if($wday == 0 ||$wday == 1 || $wday == 2 || $wday == 3 ||  $wday == 4 || $wday == 5||$wday == 6) { fhem("set Shelly_KuecheRolloN on-for-timer 300;;sleep 5;;set MQTT2_Server publish cmnd/stefan/shutterposition 0")}}

Die Definition wurde durch deinen Code ersetzt und funktioniert!!!
Der Shelly wird eingeschaltet, nach5 sec. fährt das Rollo nach unten, nach 5 min. schaltet sich der Shelly aus.

ZitatWie hast Du das attr Wochentimer_Rollo_Kueche_N_zu mqttPublish da hinein bekommen?  :o

DEF angeklickt -> Fenster öffnet sich Code eingefügt, erst gab es eine Fehlermeldung, danach wurde der Code akzeptiert.

Schönen Dank!
für deine Zeit und geduld :)
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 14 Oktober 2022, 10:00:55
Zum einen: [gelöst]?

Zitat von: Pancake am 13 Oktober 2022, 19:50:37
Weiß nicht wie so etwas unterbunden werden kann.
Na ja, falls du dich dann irgendwann wieder mit dem Thema befassen willst: https://wiki.fhem.de/wiki/AttrTemplate.

Der volle Weg wäre demnach, eine Kopie des am besten passenden templates zu machen, den Namen anzupassen und in einer eigenen Datei zu speichern und dann den backlog-Befehl einfach auszukommentieren oder passend zu ändern.

Es dürfte aber auch reichen, den ESP zu der Zeit nicht im WLAN erreichbar zu machen, zu dem die Befehle abgesetzt werden ;) ...

Zitat
Sämtliche spannungsführenden Teile sollen ausgeschaltet werden mit demShelly Plug S.
An ja, wenn das die Vorgabe ist, dann ist es halt so. Wird seine Gründe haben, ich find's unschön bzw. doppelt gemoppelt.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 14 Oktober 2022, 13:58:22
ZitatNa ja, falls du dich dann irgendwann wieder mit dem Thema befassen willst: https://wiki.fhem.de/wiki/AttrTemplate.

Habe so ein Template unter fhem/FHEM/lib/AttrTemplate (max.template) angesehen. Da sollten schon etwas Kenntnisse von Perl verhanden sein. :-\

ZitatAn ja, wenn das die Vorgabe ist, dann ist es halt so. Wird seine Gründe haben, ich find's unschön bzw. doppelt gemoppelt.

Das ist richtig, mit den schwindeligen ESP gab es hier schon mal einen leichten "GAU". Bei einer Fehlfunktion wurde der Schrittmotor so warm, dass er nicht mehr anzufassen war >60°C. Auch wenn der Schrittmotortreiber (A4988) vom ESP nicht korrekt angesteuert wird zieht er ordentlich Strom ca. 1.5 A bei 12 Volt = 18Watt und dann wird er warm und deshalb alles aus.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 14 Oktober 2022, 14:07:32
Zitat von: Pancake am 14 Oktober 2022, 13:58:22
Habe so ein Template unter fhem/FHEM/lib/AttrTemplate (max.template) angesehen. Da sollten schon etwas Kenntnisse von Perl verhanden sein. :-\
::) Nun ja, wenn man "mit Gewalt" an der falschen Stelle sucht und nicht einfach was nimmt, was schon in die richtige Richtung geht, ist es in der Tat schwierig :P .
Vielleicht schaust du dir mal "tasmota_2ch_shutter_invert_0" und "tasmota_2ch_shutter_invert_1" an, aktuell zu finden ab https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/lib/AttrTemplate/mqtt2.template#L1535

Zitat
Das ist richtig, mit den schwindeligen ESP gab es hier schon mal einen leichten "GAU". Bei einer Fehlfunktion wurde der Schrittmotor so warm, dass er nicht mehr anzufassen war >60°C. Auch wenn der Schrittmotortreiber (A4988) vom ESP nicht korrekt angesteuert wird zieht er ordentlich Strom ca. 1.5 A bei 12 Volt = 18Watt und dann wird er warm und deshalb alles aus.
Nun denn, wenn du die Hardware eigentlich gar nicht richtig im Griff hast, stellt sich die Frage, wie lange du das zu allgemeinen Zufriedenheit betreiben willst. Aber das ist wieder eine ganz andere Geschichte.
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Pancake am 14 Oktober 2022, 19:28:15
Da hat mich wohl jemand auf den "Holzweg" geschickt ;D
ZitatNa ja, falls du dich dann irgendwann wieder mit dem Thema befassen willst: https://wiki.fhem.de/wiki/AttrTemplate.
Eigene Templates entwickeln
Hierfür können die vorhandenen Templates der im Unterverzeichnis fhem/FHEM/lib/AttrTemplate zu findenden Dateien als Basis dienen
Titel: Antw:Publish aus AT-Befehl
Beitrag von: Beta-User am 14 Oktober 2022, 19:32:30
Hä? Die von mir genannte Datei ist doch auch in diesem Verzeichnis zu finden, es ist nur einfacher, auf die svn-Version zu verlinken...