Automatische Scriptumstellung auf tmp-Version

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

mabel
Beiträge: 65
Registriert: 02.07.2015, 17:58
Hat sich bedankt: 2 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von mabel » 28.01.2017, 00:03

hallo nochmal in die Runde.
kann mal jemand das Script zur Sonnenstandsberechnung von Funkleuchtturm (Anhang) umstellen.
ich bekomme mehrere tmp_-Variablen für ein und die selbe Original-Variable (siehe Anhang)
Bsp.
!tmpA <--> delta
!tmpB <--> delta
!tmpC <--> delta
!tmpD <--> delta
!tmpE <--> temp
!tmpF <--> tag
!tmpG <--> tag
!tmpH <--> tag
!tmpI <--> tag

tmpB ... tmpD tauchen aber nicht auf!
Das Script sollte also trotzdem laufen - Schönheitsfehler.
Den Effekt habe ich auch bei anderen Scripten.
Müssen ggf. Einstellung von Excel angepasst werden / Problem mit WIN10??
Dateianhänge
tmp_sonnenstandsberechnung 2_0.txt
(6.61 KiB) 94-mal heruntergeladen
sonnenstandsberechnung 2_0.txt
(6.63 KiB) 100-mal heruntergeladen

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von fischmir » 03.02.2017, 14:19

Ja, die Variable "Delta" wird halt 4x deklariert, daher werden dafür auch 4 tmp-Namen erstellt - genutzt wird aber nur tmpA. Das ändert aber- wie du selber gemerkt hast - nicht die Lauffähigkeit, sondern ist tatsächlich ein "Schönheitsfehler".

Gleiches gilt für tmpH - tmpI ---> die sollte es auch nicht geben, weil alle Variablen "tag" mit tmpF ersetzt werden.

Poste das Script doch bitte im Eingangs erwähnten Fred - dort ist es besser aufgehoben als hier :mrgreen:

BadenPower

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von BadenPower » 03.02.2017, 15:37

fischmir hat geschrieben:Das ändert aber- wie du selber gemerkt hast - nicht die Lauffähigkeit, sondern ist tatsächlich ein "Schönheitsfehler".
Ich habe mir die Umbenennungsroutine nicht angeschaut, da ich nicht mit Excel arbeite.

Allerdings könnte ich mir schon vorstellen, dass dies dennoch zu Problemen führen könnte.
Stell' bitte einmal diesen Code um und poste den umgestellten Code.

Code: Alles auswählen

integer lZahl;
lZahl = 1;
if(false)
{
  integer lZahl = 999;
  WriteLine(lZahl);
}
WriteLine(lZahl);
WriteLine("Ende");

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von fischmir » 03.02.2017, 18:53

Code: Alles auswählen

    integer tmpA;
!Umgestellt auf tmp von fischmir

!Erstellt mit tmp-creator v1.2.0

    tmpA = 1;
    if(false)
    {
      integer tmpA = 999;
      WriteLine(tmpA);
    }
    WriteLine(tmpA);
    WriteLine("Ende");
!Neu <> Alt

!tmpA <--> lZahl

!tmpB <--> lZahl
DIe Ausgabe ist bei beiden Scripten dasselbe:

Code: Alles auswählen

1
Ende
Wobei ich eigentlich erwartet hatte:

Code: Alles auswählen

1
999
Ende
...aber wie gesagt: Beide Scripte geben dasselbe aus (und das ist ja für mich maßgeblich :mrgreen: :mrgreen: )

BadenPower

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von BadenPower » 03.02.2017, 19:03

fischmir hat geschrieben: Wobei ich eigentlich erwartet hatte:

Code: Alles auswählen

1
999
Ende
Nö, denn der Block in der If-Abfrage wird ja nur dann ausgeführt, wenn die Bedingung "true" ergibt.
Und das ist ja bei "false" garantiert nicht der Fall. :mrgreen:

Der Test hat aber gezeigt, dass die Variable im Skript selbst nur einmal umgestellt wird und nur in der Auflistung doppelt erscheint. Und die mehrfach deklarierten Variablen hinterlassen dann "Löcher" in der Reihenfolge der Variablen, welche nachher im Skript tatsächlich verwendet werden.
.

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von fischmir » 03.02.2017, 19:41

Ups, natürlich. Habe noch nie if-then-else programmiert... :oops:

Ja, die Löcher werde ich noch rausnehmen...

fischmir
Beiträge: 972
Registriert: 03.02.2014, 18:04
Wohnort: Münsterland
Hat sich bedankt: 27 Mal
Danksagung erhalten: 8 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von fischmir » 03.02.2017, 21:21

So...nachdem ich nun den Parameter einführen wollte, dass man wählen kann, ob die Variablennamen in Kommentaren auch ersetzt werden können, ist mir in alchys allincl.-Script das folgende Konstrukt aufgefallen:

Code: Alles auswählen

     if (!serial == BLOCK) {
Ich war bisher immer der Meinung, dass ein ! IMMER einen Kommentar einleitet. Offentsichtlich kann es aber auch zur Negation von boolschen Ausdrücken verwendet werden. DAS könne ich auch wieder abfragen etc. . Da sich aber für mich nie eindeutig lösen lässt, wann der ! als Negation und wann als Kommentar genutzt wird, habe ich mich dazu entschieden, den Parameter nicht einzuführen.

So werden zukünftig auch Variablennamen in Kommentaren ersetzt.

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von Tibin » 05.02.2017, 15:41

fischmir hat geschrieben:So werden zukünftig auch Variablennamen in Kommentaren ersetzt
Ich denke diejenigen die vorher nicht ins Skript geschaut haben, denen ist es egal und
diejenigen die sich damit beschäftigen, können vergleichen und manuell ändern wenn sie wollen.
Das ist immer noch einfacher als ALLES manuell zu ändern, oder? 8)
Wenn sonst alles klappt... :wink:
Tino

mabel
Beiträge: 65
Registriert: 02.07.2015, 17:58
Hat sich bedankt: 2 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von mabel » 09.02.2017, 21:03

fischmir hat geschrieben:Ich war bisher immer der Meinung, dass ein ! IMMER einen Kommentar einleitet. Offentsichtlich kann es aber auch zur Negation von boolschen Ausdrücken verwendet werden. DAS könne ich auch wieder abfragen etc. . Da sich aber für mich nie eindeutig lösen lässt, wann der ! als Negation und wann als Kommentar genutzt wird, habe ich mich dazu entschieden, den Parameter nicht einzuführen.
Hallo fischmir
ich persönlich habe mir angewöhnt, Kommentare mit !+Leerzeichen zu beginnen, Negationen mit !+Variable (ohne Leerzeichen).
Aber das ist meine Eigenart und ich werde bestimmt nicht alle User dazu bewegen, das genauso zu machen.
Also auch kein Problem, dann übersetz die Kommentare mit.
Wie Tino schon sagte, wenn sonst alles klappt ... Du sparst mir auch so trotzdem viel Arbeit. Außerdem verringert sich die Fehlerquote bei der Umsetzung erheblich, da kommt es auf das bischen Nacharbeit nicht an. Stellt sich Frage ob man überhaubt in den "übersetzten" Script Kommentare braucht? Kompilierte Programme sind auch nicht kommentiert.

Kleine Idee:
Die Löcher rausnehmen ist ok.
Vielleicht kannst du noch eine Meldung generieren, dass Variable "XYZ" doppelt deklariert wurde.
Ist zwar kein Fehler, manchmal sogar gewollt, wenn man Variablen tatsächlich mehrfach benutzt und umdefiniert, manchmal aber nur versehentlich gemacht und dass kann man dann bequem korrigieren, weil man darauf hingewiesen wird.

Tibin
Beiträge: 507
Registriert: 26.10.2016, 16:08
System: CCU
Hat sich bedankt: 19 Mal
Danksagung erhalten: 15 Mal

Re: Automatische Scriptumstellung auf tmp-Version

Beitrag von Tibin » 25.02.2017, 17:43

Hey fischmir,
wollte nur mal vorsichtig fragen, ob die Version 1.2 noch kommt? Oder ist es auf Eis gelegt :wink:
Gruß Tino

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“