-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Grund für Definition der "Tages, Monats, Jahres Verbrauch & Einspeisung" Variables als permanente Variablen? #6
Comments
das setzen auf 0 sagt dem interpreter hier lediglich dass es eine numerische Variable ist. mit script>val=x kannst du den wert in der Konsole setzen (kein Leerzeichen dazwischen) den backlog kannst du dir fast immer sparen. |
das bedeutet, die Anleitung im script ab Zeile 29 ist falsch, verstehe ich das richtig? |
merke gerade dass der space doch erlaubt ist. |
bei mir ging es erst nachdem ich die Variablen als nicht permanent definiert habe. |
hab deine Variablen übernommen und das genauso eingegeben wie du oben poste mal das komplette script |
es ist mMn die Reihenfolge der Aktionen entscheidend um den Fehler zu triggern. |
es könnte sein das du den maximalen permanenten Speicher überschritten hast. Es gibt dann leider keine Warnung, sondern es passieren solche Fehler wie oben. bau doch einmal ein ganz kleines script mit nur den Variablen von oben und teste damit. |
Das wäre eine gute Erklärung,. |
so was wie "init error -5" bei vn wäre gut |
werde mir mal den code ansehen ob ich das nicht abfangen kann. |
Habe nur die (aus mMn unvollständige) Erklärung (siehe copy&paste ganz oben) gesehen. Wo ist die Erläuterung denn?
Dein Kommentar ist wahrscheinlich ein der Teil der (zumindests mir) unklaren Vor- und Nachteile. |
in der doku steht doch wie viel permanenter Speicher vorhanden ist da gibt es eine Tabelle dazu |
Tut mir leid, aber bei "runtime" bzw "script spezifischen" Limits, habe ich ganz andere Erwartungen, als so was auf Grund von Doku manuell auszurechnen! Assembler mit solchem Verhalten habe ich ab ca 1985 deshalb nicht mehr angerührt!
Für die anderen Tasmota Entwickler scheint aus obigen Gründen, die scripting language, deshalb wohl ein "rotes Tuch" zu sein. |
könnte man in dem Zusammenhang, die Größe des Speichers für permanente Variablen, per Compiler Option, vergrößern? |
nein, du hast nur so viel wie in der Tabelle in der Doc angezeigt wird also meistens 1536 Bytes Beispiel für das speichern von 4 Arrays:
noch mal zur Verdeutlichung von backlog script>dvalF=0;dvalT=0; etc PS. 00:00:00.186 SCR: nv=24, tv=3, vns=126, vmem=2467, smem=8192, gmem=488, pmem=1521, tmem=11273 |
ok, probiere ich. den code für #load würde ich aber wie folgt verbessern
Passt das? |
Ja, aber da kommt immer -1 als Fehler raus |
was macht der Befehl "dp2"? |
doch wird er: |
Frage: beim folgenden Text verstehe ich die Bedeutung von "fr" nicht, da "with" im Englischen eine Vielzahl an Bedeutungen hat fra(array fr) reads array from open file with fr (assumes tab delimited entries) nimms mir nicht krumm, aber die syntax der scripting language ist, aus meiner Sicht, nicht konsistent und damit fehleranfällig! dp(2) statt dp2 wäre konsistent, aber dp(2) dreht das Verhalten laut Text unten, ja total um oder verstehe ich das was falsch? |
fr in dem Beispiel ist eine Variable und meint "file refererence" |
ich schaffe es leider nicht die Array Variablen in eine Datei zu schreiben |
was meinst du denn damit ? paste dein script hier hinein, markiere es und klicke auf Code Block "<>" |
ein Zitat macht den Kontext klar, mit so einer offenen Frage, kann ich leider wahrscheinlich nicht die gesuchte Antwort liefern. Mit fehlt die Info in welchem Repository die scripting language entwickelt wird, denn nur dort ist mMn der richtige Ort um über Fehler zu diskutieren.
ich bin Maintainer eines OSS projects auf GitHub, wie es geht weiss ich :) |
Mein Problem liegt wahrscheinlich an: Subroutine invocations may be nested (each level uses about 600 bytes stack space, so nesting level should not exceed 4) die Ausgabe von "print subroutine: *** iDf start **" fehlt im log und es gibt keine Hinweise auf eine "call stack exception"! console log:
betroffenes code fragment:
|
aktuellster zusätzlicher Fehler:
|
|
Danke für die Antworten
ich habe ihn schon gefunden, dieser und die noch fehlenden Erklärungen für -2 & -3 sollten aber dringend in die offizielle Doku Offen ist noch:
da bisher keine Antwort kam, hier die Reproduktion |
if TEST==1 oder Bin mit sehr wohl bewusst dass in der Dokumentation noch vieles nicht oder nicht ausreichend erklärt ist. Habe gesehen dass du da schon einiges verbessert hast, danke dafür. |
Danke Gerhard, ich habe die Änderungen gemacht und teste gerade. Im scripter (oder in einem separaten "linter") sind mMn dringend Fehlerprüfungen für die obigen Fälle einzubauen, sonst wird jedes script nur mit deinem persönlichen Support funktionieren können. |
habe die Anfrage gestellt selbst changes in der Doku mergen zu dürfen oder darfst Du das vielleicht schon? |
@gemu2015 Frage: wie erzeuge ich mit |
so erzeugst du deine Zufallszahl:
die Scripte sollten für den esp8266 funktionieren mit nur sehr wenig RAM und geringem Verbrauch an Flash. deshalb war das Motto: Befehle so kurz wie möglich halten und so gut wie kein Syntaxcheck. Deshalb kommt es auf die Dokumentation an, damit man Syntaxfehler vermeiden kann. |
@gemu2015 ich würde mich über eine Rückmeldung zu den Feature requests oben sehr freuen, egal ob gut oder schlecht :) |
@gemu2015 was meinst Du mit "Link in den Docs" ? |
ausschnitt aus den Docs mit dem Link, dort sind auch die Scripte Optional external editor |
Danke, damit habe ich die Skripte gefunden. Aber sie sind schon extrem gut versteckt. Was meinst Du zu folgendem Vorschlag:
|
Hast du dir mal die Dokumentation zum Smart Meter angesehen ? |
kann ich so leider nicht beantworten, da ich nicht sicher bin welche der vielen Dokumentation Du meinst. Ich versuche raten beim Empfänger, immer dadurch zu vermeiden, dass ich eine link zu der von mir gemeinten Referenz poste. |
Aus meiner Sicht ist "nicht stören" der falsche Ansatz für das erlernen neuer Fähigkeiten.
Meine Hilfe habe ich ja angeboten, wie kommen wir da weiter? Schlechtes visuelles Beispiel für "embedded code": |
das Fenster kann man beliebig scrollen, da bleibt nichts versteckt. |
Danke Gerhard, das finde ich eine grosse Verbesserung! Mit einer Sache hadere ich allerdings noch. Wäre es nicht besser hier die extension .tas zu verwenden? Falls Du zustimmt, kümmere ich mich gerne um das Umbennen und einen kleinen Patch im ScriptEditor. |
hab die Endungen geändert auch im Scripteditor. |
Das würde ich nicht empfehlen, da wir sonst den Vorteil der klaren Identifikation an verschiedenen Stellen verlieren!
.tas kann man auch einfach mit Windows Notepad oder jedem anderen Editor verbinden |
im script https://github.com/ottelo9/tasmota-sml-script/blob/main/2_Tasmota_SML_Script_Chart_PV.txt#L63
werden permanente Variablen benutzt, die aber dann mit 0 initialisiert werden.
@gemu2015
Die Tasmota Scripting Dokumentation ist leider sehr vage in dem Punkt "permanente Variablen" über Vor- und Nachteile, auch bleibt offen wie man sie zurücksetzt. Könntest Du vielleicht dazu was hier schreiben?
PS: ich verbessere die offizielle Tasmota Scripting Dokumentation laufend durch PRs, es würde dann dort eingearbeitet.
Doc:
p:vname
specifies permanent variables. The number of permanent variables is limited by Tasmota rules space (50 bytes) - numeric variables are 4 bytes; string variables are one byte longer than the length of string. p vars are stored sequentially in the order of defintion. therefore when specifing permanent variables, add newly defined ones always at the end of already defined p vars. otherwise variables are mixed up and string variables may even be destroyed.
Ich habe die Reihenfolge von original:
auf folgendes geändert und bekomme jetzt seltsame Werte, die auch nicht ändern kann.
Mache ich da vielleicht was falsch?
Console:
The text was updated successfully, but these errors were encountered: