FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: eppi am 09 Mai 2020, 18:47:11

Titel: ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 09 Mai 2020, 18:47:11
Hallo
Ich habe ein funktionierendes ESPeasy Device mit einer Rule. Nun möchte ich nach Tasmota umziehen und scheitere bei den Rules. Könnte mich jemand dabei unterstützen? M.W. gibt es in Tasmota kein IF, ELSE, etc, deshalb wäre ich um Unterstützung dankbar.

Define:
name: relay
Internal PullUp: ja
Inversed Logic: ja
GPIO:2
Switch Type: Switch
Switch Button Type: Normal Switch
Send Boot state: ja

name: taster
Internal PullUp: ja
GPIO: 3
Switch Type: Switch
Switch Button Type: Push Button Active Low
Send Boot state: ja


Und die Rule dazu:
on taster#taster do
if [relay#relay]=1
gpio,2,1
else
gpio,2,0
endon


Vielen herzlichen Dank!
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 09 Mai 2020, 21:15:19
Hallo eppi,

schau mal hier:
https://tasmota.github.io/docs/Rules/ (https://tasmota.github.io/docs/Rules/)
Dort steht:
Syntax
<if-statement>
IF (<logical-expression>) <statement-list> {ELSEIF (<logical-expression>) <statement-list>} [ELSE <statement-list>] ENDIF

Vielleicht reicht das schon als Gedankenanstoß.

Viele​ Grüße​ Gisbert​
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 10 Mai 2020, 08:19:13
Danke Gisbert
Ich habe mal versucht, so in der Art:
Rule1 on Switch1#state do IF (POWER=1) POWER 0 ELSE POWER 1 ENDIF endon
Die Konsole gibt jedoch beim Schalten folgendes zurück:
07:14:01 RUL: SWITCH1#STATE performs "IF (POWER=1) POWER 0 ELSE POWER 1 ENDIF"
07:14:01 RSL: stat/tasmota_736675/RESULT = {"Command":"Unknown"}


Beispiele im Netz zu finden ist nicht einfach (scheint ziemlich neu zu sein), versuche es weiter...
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 10 Mai 2020, 08:43:02
Hallo eppi,

schau mal nach Power1#State, dort wird ein Vergleich beschrieben.
Ich bin fast davon überzeugt, dass Tasmota nicht power möchte sondern powern, also power1 möchte.

​Vielleicht ist das schon die Lösung.
Viele​ Grüße​
Gisbert​
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 10 Mai 2020, 08:49:48
Hallo Gisbert
Bei mehr als einem Relais macht Tasmota POWER1, POWER2, etc... Wenn ich aber nur ein Relais habe, heisst es nur POWER.
Beim Booten des ESP gibt mir die Console auch so zurück:
00:00:00 CFG: Loaded from flash at F9, Count 67
00:00:00 Project tasmota Tasmota-Schalter Version 8.2.0(tasmota)-STAGE
00:00:00 WIF: Connecting to AP1 camelia in mode 11N as tasmota_736675-1653...
00:00:05 WIF: Connected
00:00:05 HTP: Web server active on tasmota_736675-1653 with IP address 192.168.2.84
00:00:05 RSL: INFO1 = {"Module":"Generic","Version":"8.2.0(tasmota)","FallbackTopic":"cmnd/DVES_736675_fb/","GroupTopic":"cmnd/tasmotas/"}
00:00:05 RSL: INFO2 = {"WebServerMode":"Admin","Hostname":"tasmota_736675-1653","IPAddress":"192.168.2.84"}
00:00:05 RSL: INFO3 = {"RestartReason":"Software/System restart"}
00:00:05 RSL: RESULT = {"POWER":"ON"}
00:00:05 RSL: POWER = ON
07:48:10 RSL: STATE = {"Time":"2020-05-10T07:48:10","Uptime":"0T00:00:11","UptimeSec":11,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":34,"MqttCount":0,"POWER":"ON","Wifi":{"AP":1,"SSId":"camelia","BSSId":"F0:9F:C2:A4:72:E8","Channel":13,"RSSI":100,"Signal":-46,"LinkCount":1,"Downtime":"0T00:00:06"}}
07:48:10 RSL: SENSOR = {"Time":"2020-05-10T07:48:10","Switch1":"ON"}

Was meinst du?
Danke vielmals und beste Grüsse eppi
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 10 Mai 2020, 09:59:02
Bin etwas weiter gekommen, jedenfalls erhalte ich keine {"Command":"Unknown"} mehr.
rule1 on Switch1#state=on do if (POWER#state=1) power 0 endif endon

In der Rule fehlt jedoch das ELSE, das kann ich aber in eine zweite Rule schreiben..

Ich versuche es weiter und werde wieder berichten...
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 10 Mai 2020, 11:52:47
Hallo eppi,

und was hindert dich daran die Lisa, äh ELSE, zu bemühen, die steht schon in den Startlöchern 8)

Viele​ Grüße​ Gisbert​
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 29 Mai 2020, 19:31:48
Zitat von: HaWe68 am 29 Mai 2020, 18:31:29
@eppi: habe gleiches Problem mit IF-ELSE, bist Du weiter gekommen:
Nein, ich habe das Projekt aktuell mal auf Eis gelegt... Aber bin natürlich weiterhin interessiert, falls du Erfolg hast würde ich mich freuen von dir zu lesen.
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 16 März 2021, 05:27:16
Halll eppi,

ich hatte am Wochenende versucht, Tasmota mit IF/ELSE zu nutzen.
Es war hoffnungslos, ich hab's nicht geschafft, das ans Laufen zu bekommen.
Die Bedingungen wurden entweder nicht oder falsch umgesetzt.

Hast du es nochmals versucht?
Viele​ Grüße​ Gisbert​
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: eppi am 16 März 2021, 06:03:44
Zitat von: Gisbert am 16 März 2021, 05:27:16
Halll eppi,

ich hatte am Wochenende versucht, Tasmota mit IF/ELSE zu nutzen.
Es war hoffnungslos, ich hab's nicht geschafft, das ans Laufen zu bekommen.
Die Bedingungen wurden entweder nicht oder falsch umgesetzt.

Hast du es nochmals versucht?
Viele​ Grüße​ Gisbert​
Hallo Gisbert
Nein, ich habe es in FHEM gelöst, da ich nach Wochen die Geduld verloren habe. Somit kann ich dir nicht weiterhelfen, sorry....
Viel Erfolg und LG eppi
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 16 März 2021, 08:15:21
Hallo eppi,

ich hab fast den Eindruck, dass Tasmota mit IF/ELSE nicht zurechtkommt. Ich schließe den Fehler bei mir eigentlich aus, da ich ich mich lange damit beschäftigt habe.

Der Grund, warum ich Tasmota mit Rules und IF/ELSE versucht habe, war dass die eigentlich gut mit ESPEasy laufende Anwendung immer wieder zum Restart des ESP geführt hatten, wenn anscheinend zuviele Befehle auf einmal reinkamen. Die load ist dann 100%, der ESP macht nichts mehr, startet aber immerhin jedesmal wieder neu. Für die Anwendung als Wechsellichtschalter mit Bewegungsmelder (PIR) ist das suboptimal, wenn mittendrin die Steuerung neu startet.

Es gibt auch noch Tasmota Scripting anstatt Rules: https://forum.fhem.de/index.php?topic=111873.0 (https://forum.fhem.de/index.php?topic=111873.0).
Ich hab mir das mal angeschaut, aber nicht ansatzweise verstanden, d.h.für mich ist es nicht umsetzbar.

Viele​ Grüße​ Gisbert​
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: rob am 16 März 2021, 18:43:48
Zitat von: Gisbert am 16 März 2021, 08:15:21
...ich hab fast den Eindruck, dass Tasmota mit IF/ELSE nicht zurechtkommt...
Hallo Gisbert. Ich stimme Deiner Einschätzung zu.
Zitat
Same trigger may be used in more than one rule. This may be required for some cases of using IF/ELSE since an IF statement cannot be used within a Backlog.
Fundort: https://tasmota.github.io/docs/Rules/ (https://tasmota.github.io/docs/Rules/). Dort gibt es auch den Hinweis, dass man sich IF/ELSE selbst rein-compilieren kann:
Zitat
Conditional Rules

This feature is not included in precompiled binaries.

To use it you must compile your build. Add the following to user_config_override.h:
...
Habs selbst aber noch nicht benötigt/ ausprobiert. Kennst es wahrscheinlich schon, aber vielleicht doch einen Versuch wert :)

Viele Grüße
rob
Titel: Antw:ESPeasy Rule in eine Tasmota Rule übersetzen
Beitrag von: Gisbert am 16 März 2021, 22:26:29
Hallo rob,

das man selbst kompilieren muss, habe ich natürlich berücksichtigt. Das war mit Gitpod nicht sonderlich schwierig.

Genauso verhält es sich mit Scripting, man muss selbst kompilieren.

Viele​ Grüße​ Gisbert​