Forum: Haus & Smart Home Tasmota rules automatisch beim Start aktivieren


von Hunger (Gast)


Lesenswert?

Ich tasmotarisiere mich gerade seit Stunden wahnsinnig. Eigentlich ganz 
simpel.
Ich kompiliere wegen der Größe selbst und will alles fix und fertig in 
der firmware.bin drin haben.
Ich habe es nun aber nicht hinbekommen und nirgendwo finden können:

1.) Die Kalibrierwerte für den CSE7766 (Spannung und Strom) kann man 
nicht in der user_config_override.h unterbringen. Voltage- und 
CurrentCal gibt es für den Chip nicht. Habe ich selbst geschrieben, 
geht. Aber nun muß ich nach jedem Flashen die Komandos aufrufen. Grmpf!
FriendlyName, DeviceName und Hostname muß man auch nach dem Flashen neu 
setzen. Da sind historisch wohl auch noch Zusammenhänge mit den 
MQTT-settings, was ich aber gar nicht nutze.
Das mit dem CFG_HOLDER habe ich nun eigentlich in allen Varianten durch, 
klappt aber auch nicht. Und wirklich verstehen tue ich die Doku dazu 
auch nicht.

2.) Es läßt sich nicht einstellen, welches der priorisierte AP ist. Wenn 
er eine Verbindung hat, bleibt er dort, auch wenn STA_SSID1 wieder da 
ist.
Also z.B. mit einer Regel
ON Time#Minute|5 AP 1 ENDON
alle 5 Minuten versuchen, auf AP 1 zu wechseln. Aber auch diese Regel 
muß nach dem Flashen erst aktiviert werden. Das muß doch irgendwie zur 
Compilezeit machbar sein, daß eine Regel aktiviert ist???

von Oliver S. (phetty)


Lesenswert?

https://tasmota.github.io/docs/Rules/

System#Boot  occurs once after Tasmota is fully intialized (after the 
INFO1, INFO2 and INFO3 console messages). System#Boot triggers after 
Wi-Fi and MQTT (if enabled) are connected. If you need a trigger prior 
to every service being initialized, use Power1#Boot


Oder habe ich die Frage falsch verstanden?

von Hunger (Gast)


Lesenswert?

Weiß ich leider auch nicht so genau...

Meinst Du diesen Trigger beim reboot nutzen, um die Regel zu aktivieren?
Würde ich dann auch wieder nicht verstehen, da\
a.) diese Regel ja auch beim ersten Mal per Konsole eingegeben und 
zusätzlich aktiviert werden müßte und\
b.) die aktivierte Regel (nach meinem Verständnis) danach sowieso im 
Flash gespeichert wird und auch nach reboot immer noch aktiv ist. Dann 
bräuchte ich den boot-trigger ja gar nicht.

von Lutz (Gast)


Lesenswert?

Seit ein paar Stunden in der Dev-Version:

Changelog v9.4.0.5
Added
   ...
   Defines USER_RULE1, USER_RULE2 and USER_RULE3 to store rules at 
compile time
   ...

von Oliver S. (phetty)


Lesenswert?

Hunger schrieb:
> Meinst Du diesen Trigger beim reboot nutzen, um die Regel zu aktivieren?

Ah, du möchtest die Rule schon im System mit drin haben. Also als 
Auslieferungsrule.
Wäre nach dem Flashen über die serielle Konsole eine Option?
https://tasmota.github.io/docs/Commands/#over-serial-bridge

Oder über die neuste Version wie von Lutz angemerkt.

von Lutz (Gast)


Lesenswert?

Nachtrag: Jetzt ebenso drin.

Changelog v9.4.0.5
Added
   ...
   Define USER_BACKLOG to store commands at compile time to be executed 
at   firmware load or when executing command reset
   ...

von Lutz (Gast)


Lesenswert?

Hunger schrieb:
> Also z.B. mit einer Regel
> ON Time#Minute|5 AP 1 ENDON
> alle 5 Minuten versuchen, auf AP 1 zu wechseln.

Da fehlt das *DO*:
ON Time#Minute|5 DO AP 1 ENDON

Aber bedenken: Aus welchem (sehr wahrscheinlich gutem) Grund auch immer 
wird bei Benutzung des AP-command das restart_flag auf 2 gesetzt (2 = 
halt system (needs hardware reset or power cycle to restart)). Immer. 
Und das ist i.d.R. natürlich nicht gewünscht. Also lieber vorher testen, 
ob der AP auch wieder da ist und erst dann wechseln. Wenn es denn so 
schnell so wichtig ist. Den anderen AP einfach kurz deaktivieren macht 
den Wechsel (bei WifiConfig 4 = aktueller default) übrigens ohne reboot. 
Geht also auch ohne.

von fiso (Gast)


Lesenswert?

Currently I am facing the problem, that I can compile in my rule and 
acitvate it with an compiled in USER_BACKLOG, but in reality the rule is 
not ativated after flashing.

#define USER_RULE1 "On Time#Minute DO backlog VoltRes 2 ENDON"
#define USER_BACKLOG "module 0;Rule1 1"

(putting the "VoltRes 2" into the USER_BACKLOG after "module 0" does not 
work either.)
Where I am doing something wrong?

von fiso (Gast)


Lesenswert?

Ok. The problem was caused by "module 0".

#define MODULE USER_MODULE
#define USER_BACKLOG "VoltRes 2"

Does the trick.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.