auch auf die Gefahr hin, dass die Frage in irgendeinerweise schon gestellt wurde (die Boardsuche habe ich angestrengt und bin aus den paar Sachen nicht schlauer geworden)…
Wie bekomme ich
IPS_GetUpdateMicrotime("Variable");
mit IPS_GetVariable ebenfalls in eine Zeile, sodass ich die alten Scripte anpassen kann, wie dieses z.B.
<?
/*
***************************************
Bewegungsmelder-Dachboden zurück setzen
***************************************
File : Bewegungsmelder-DBO_setback.ips.php
Trigger : Variable "DBO_BEW_MELD_HELL"
Interval : OnChange
*/
$timer = (GetValueInteger("DBO_BEW_MELD_HELL_TIMER")+ 1); // Instance-Timer abfragen und "Sicherheits-Sekunden"
$timer2 = GetValueInteger("DBO_BEW_MELD_HELL_TIMER");
$time = microtime(true); // aktuelle Zeit in Sekunden mit Nachkommastelle
$timeupdate = IPS_GetUpdateMicrotime("DBO_BEW_MELD_HELL"); // Update-Zeit in Sekunden mit Nachkommastelle
if(GetValueBoolean("DBO_BEW_MELD_HELL"))
{
if(IPS_GetScriptTimer("Bewegungsmelder-DBO_setback") == 0) // Script-Timer abfragen
{
IPS_SetScriptTimer("Bewegungsmelder-DBO_setback", ($timer)); // Script-Timer setzen
}
else
{
if ( ($time - $timeupdate) > $timer2) // Wenn neu ausgelöst wird
{
SetValueBoolean("DBO_BEW_MELD_HELL", false); // nach Ablauf des Timers Script neu starten und Variable auf false setzen
//SetValueBoolean("DBO_BEW_MELD_DUNKEL", false);
IPS_SetScriptTimer("Bewegungsmelder-DBO_setback", 0); // Script-Timer auf 0 setzen
}
}
}
else
{
IPS_SetScriptTimer("Bewegungsmelder-DBO_setback", 0);
}
?>
Das sind mindestens 20 ähnliche Scripte die ich umstellen müsste von V1 zu V2.
Nee, das funktioniert leider nicht.
Ich habe das Script eben nochmals mit der V1 probiert. Dort funktioniert es tadellos.
@paresy
Dabei ist mir aufgefallen, dass die FS20-Bewegungsmelder nicht korrekt aus der V1 übernommen werden. In V2 werden diese nur mit den BOOLEAN (TRUE) und mit DATA eingetragen, obwohl auch der TIMER übertragen wird.
Von V1 zu V2 wird daraus eine FS20EX-Instanz. Lege ich eine neue FS20-Instanz an, kann ich dem TIMER auch wieder eine Variable zuweisen, da diese Zeile dann vorhanden ist. Das ist dann wohl ein BUG!
Wer möchte schon alle zig Instanzen neu anlegen?
So wie der Stand der V2 jetzt ist, kann man eigentlich alles neu machen.
Da gibts noch viel zu tun. Da das ja alles noch „Beta“ ist, lässt sich das verzeihen, keine Frage, aber da man die Subscription ja weiter bezahlt und die V1 keine Updates mehr bekommt, begeistert mich das allerdings nicht so sehr, als Betatester zu bezahlen. Ich habe lange gewartet, bis ich den Umstieg versuchte und mir eigentlich nun schon eine relativ ausgewachsene „Beta“ versprochen, aber das ist noch zu buggi.
Vielleicht solltest du auch noch den „IPS_GetUpdateMicrotime“-Befehl weiter behalten, oder zumindest die Umstellung auf das neue Format automatisieren.
Man kann doch nicht alle Projekte, die man damals in mühevoller Arbeit und Erprobungszeit erstellt hat, wieder neu aufreissen.
Mir ist ebenfalls aufgefallen, das für einige Befehle, wie z.B. „IPS_GetScriptTimer“ jetzt die (Skript-)ID angegeben werden muss. Da ich bisher nur den Name verwendet habe, heisst das zusätzlich nochmals alle Skripte danach absuchen und umstellen. Das ist ein ziemlich wildes Durcheinander bei der Umsetzung!
Jedenfalls bin ich erstmal ziemlich erschrocken und ich hoffe, das bekommst du noch in Griff. Ich weiss, dass das alles sehr viel Arbeit bedeutet und man sieht ja auch, dass schon sehr viel Leistung im neuen Paket steckt, aber bitte gestalte den Umstieg für die V1-Leute einfacher, sonst wird das ein ziemlich demontivierender Kampf.
Dann scheint aber das ganze Script, so wie es in V1 noch anstandslos funktioniert, in V2 nicht mehr zu funktionieren. Das irretiert mich ja noch mehr:rolleyes: Die Variable wird einfach nicht mehr auf FALSE zurück gesetzt.
P.S. Welche Methode setzt du ein, um solche Variable zurückzusetzen (die vom Sender kein FALSE bekommen)?
ich denke die Variable WZI_BEW_MELD_HELL ist die Instanzvariable deines PIRI´s. Leider sind alle Instanzvariablen in der V2 ReadOnly, sprich Du kannst sie aus einem Skript nicht mehr zurücksetzen.
Was ich jetzt noch ganz dunkel zu wissen meine ist, Du brauchst die Variable des PIRIs nicht mehr zurücksetzen, das kann die Instanz selbst.
Leider sind alle Instanzvariablen in der V2 ReadOnly, sprich Du kannst sie aus einem Skript nicht mehr zurücksetzen.
Das wäre natürlich die Erklärung! (Würde mich aber vor weiteren Problemen in anderen weitaus umfangreicheren Scripten stellen)
Ich habe das schon öfters bei Probelaufen einiger anderer Scripte gelesen… die Meldung, das Variablen geschützt sind.
Du brauchst die Variable des PIRIs nicht mehr zurücksetzen, das kann die Instanz selbst.
Anscheinend wird die Variable nach der im PIRI eingestellten Zeit durch einen emulierten Timer zurückgesetzt.
Das wäre natürlich die Erklärung! (Würde mich aber vor weiteren Problemen in anderen weitaus umfangreicheren Scripten stellen)
Ich habe das schon öfters bei Probelaufen einiger anderer Scripte gelesen… die Meldung, das Variablen geschützt sind.
Zum Thema ReadOnly-Variablen kannst Du dich gerne hier einlesen. War eine lange Diskussion.
und ich dachte, ich bringe das „zwischen den Jahren“ auf die Reihe. Nun bin ich aber restlos entsetzt über den Updatevorgang V1>V2 !!!
Da kann ich mir dann auch sämtliche Vorarbeiten sparen.
Das ist ja… [:erstmal sprachlos]…ich weiss nicht, was ich davon halten soll :eek: Alle Zeit, die man bisher in funktionierende Scripte der V1 gesteckt hat dahin… das kann doch nicht die Politik von IP-SYMCON sein!
Wenn das immer so sein wird, z.B. Umstellung auf V3 …ich mag garnicht daran denken… nee, nee, nee …[:Schimpfen] [:Meckern] [:Fluchen]… nee, nee, nee …bin erstmal weg…
auch in der V1 waren schon Diskussionen das man an den Variablen der Instanzen nicht schrauben sollte, die Variable soll ja den Zustand der Instanz wiedergeben und wann man die verändert dann ist das nicht mehr gegeben.
Aber wie gesagt, mir erging es ebenso.
Trotzdem viel Spaß mit der V2, ich habe den Umstieg nicht bedauert, mittlerweile nach 2 Wochen Arbeit läuft alles so wie ich es wollte, eigentlich sogar besser.
das „freut“ mich, dass ich nicht alleine bin :o
Ich habe den Nachmittag schonmal genutzt um alle Instanzen neu anzulegen und die Rücksetzscripte zu entfernen. Das finde ich ja gut, dass die Variablen sich selbst nach Timer zurücksetzen, aber bei vielen anderen Scripten stoße ich immer mehr auf Unverträglichkeiten mit alten Befehlen. Schade, dass das beim Update nicht noch mehr automatisch ablaufen kann.
Heute war jedenfalls nur „manuelle“ Haus-Steuerung möglich, weil ich V2 gleich auf dem richtigen Steuerrechner konfiguriere und V1 dann gestört wäre, wenn es nebenbei auch auf die selben Geräte zugreift.
Es wäre schöner, wenn ich die Konsole der V2 offline verwalten könnte, ohne dass der Serverdienst laufen muss, dann hätte ich mir das nach Belieben einteilen können, wann ich was mache.
Dabei ist mir aufgefallen, dass die FS20-Bewegungsmelder nicht korrekt aus der V1 übernommen werden. In V2 werden diese nur mit den BOOLEAN (TRUE) und mit DATA eingetragen, obwohl auch der TIMER übertragen wird.
Von V1 zu V2 wird daraus eine FS20EX-Instanz. Lege ich eine neue FS20-Instanz an, kann ich dem TIMER auch wieder eine Variable zuweisen, da diese Zeile dann vorhanden ist. Das ist dann wohl ein BUG!