Batterielaufzeit ermitteln, ohne Hilfsvariable ?

Hi suche eine Möglichkeit, die Batterielaufzeit von Aktoren zu ermitteln, ohne Hilfsvariable dafür anlegen zu müssen :wink:

Ist das Möglich ?

Wenn die Batterie leer wird, schaltet ja die Variable um, und somit hat sich auch die Zeit des Variabelupdate unddie Zeit der Variabelaktualliesierung geändert :frowning:

Hat jemand noch eine Idee wie man das trotzdem hinbekommen könnte ?

Ich will das ja nicht in eine Variable schreiben, ich will es mir einfach per Email zusenden :wink:

Ohne Hilfsvariable wird das nichts! Aber du kannst alles in eine Variable schreiben :slight_smile: Einfach ein Array bauen, dann mit „implode“ einen String daraus machen und in Temp-Variable schreiben :slight_smile:
Und wenn du die Daten wieder brauchst, dann einfach den String aus der Temp-Variable auslesen, mit „explode“ wieder zu einem Array machen und dann durchsuchen oder was auch immer damit anstellen…

-Chris-

Schade… ich dachte man könnte z.B. es Loggen und dann im Log suchen, wann das letzte mal die Batterie ok war und davon die Zeit ausrechnen ?

Das geht auch, aber dann müsstest du JEDE „LOWBAT“ Variable loggen! Vlt. nicht unbedingt die beste Variante…
…aber bekanntlich führen viele Wege nach Rom :smiley:

-Chris-

Vlt. nicht unbedingt die beste Variante… ? Warum nicht ?

Ich will nur Variablen sparen, wegen dieser blöden Zählung von IPS :wink: Und geloggte Variablen verbrauchen ja keine Variablen :wink:

Ist es schlimm alles mögliche zu loggen ?

Oder fällt dir noch was anderes ein ?

Gehen wir mal von 50 Batterie-Aktoren aus. Das wären 50 Variablen die Daten loggen…sind schon eine Menge.
Oder dagegen nur 1 String-Variable, in der alles gespeichert wird. Also ich würde ganz klar die String-Variable bevorzugen :slight_smile:

Eine andere Möglichkeit fällt mir aktuell nicht ein…

-Chris-

Ja klar ist das eine Menge, aber stört das in irgend einer Form z:b. wegen DB Größe oder Geschwindigkeit ?

Kannst du mir mal ein Beispiel schreiben wie ich das mit eine String Variable lösen könnte :wink:

Habe mit Arrays noch nichts gemacht :frowning:

Wie hier geschrieben… „implode“ und „explode“ … Jeweils nur eine Zeile :slight_smile: Beispiele gibts genug im PHP-Manual oder bei SelfPHP.

-Chris-

Ok ich hatte an so einem Bespiel gedacht :

<?
$array = array('12345 2015-12-01 leer');
$array2 = array('67890 2015-12-02 ok');


$wert1 = implode(",", $array);
$wert2 = implode(",", $array2);

$wert3= "$wert1,$wert2";


setvalue(37704 /*[Tests\arrays in und aus strings\array]*/, $wert3);


$werte=getvalue(37704 /*[Tests\arrays in und aus strings\array]*/);

$teile = explode(",", $werte);

$wert2 = explode(";", $werte);



foreach($teile as $id)// Durchsucht alle Instanzen und gibt die INstanzid an $i_id weiter
{


$wert1 = explode(" ", $id);

$vid1=$wert1['0'];

if ($vid1==12345)
{
$vid=$wert1['0'];
$datum=$wert1['1'];
$zustand=$wert1['2'];
$lol1="n1";
}

if ($vid1==67890)
{
$vid=$wert1['0'];
$datum=$wert1['1'];
$zustand=$wert1['2'];
$lol2="n2";
}
}

print "$lol1 $lol2";

?>

Jetzt stehe ich nur noch vor dem Rätsel, wie ich einzelne Datensätze aus Array wieder löschen kann, bzw. überschreiben soll ?

Wenn der Batteriezustand von ok auf low springt hätte ich beide Werte drin… und nach ein paar Monaten 4 Datensätze pro Variable…

Ich steig noch nicht dahinter wie das gehen soll…

> Jedem Aktor z.B. eine feste ID zuweisen (Seriennummer) oder noch einfacher > ObjectID der Variable. Damit kannst du dann arbeiten/suchen/ersetzen/…

Da es ja dein Projekt werden soll, solltest auch DU dich genauer damit befassen :slight_smile: Dir alles vorkauen ist sicher nicht Sinn der Übung und dann könnte ich auch gleich eine 2. Version vom BatterieMonitor schreiben :smiley:

Es gibt eine Menge Tutorials zu PHP und Arrays. Auf diese Weise hab ich mir auch alles beigebracht und hat funktioniert :slight_smile:

Hier findest du alles was du brauchst:
PHP: PHP-Handbuch - Manual
PHP 5 Tutorial
PHP - SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum zum Thema PHP

Grüße,
Chris

Wenn er Variablen sparen muss und die Werte nicht visualisieren will, spricht doch nichts dagegen, die entsprechenden Werte in eine Textdatei zu schreiben und bei Bedarf zur Verarbeitung wieder auszulesen. Als ich noch nicht die Unlimited Version hatte, habe ich mir oft so beholfen, auch für „Merker“-Variablen habe ich dieses Verfahren angewendet.

Gruß
Walter

Ach Kinders, das sind doch alles pfuschige Krücken. Spätestens bei der nächsten Änderung stehst wieder vor dem selben Problem.

Nimm doch ein paar Euro in die Hand und hol dir eine größere Lizenz.
Besser ist das.

gruß
bb

Hi sorry das sehe ich echt net ein… nur wegen den blöden Variablen, die z.B. von den ganzen HM Geräten sinnlos mitgezählt werden… :eek:

Bei Textdateien müsst ihr aufpassen wegen der Zugriffe. Wenn IPS in 10 Threads gleichzeiting in eine Datei schreiben/lesen will, knallt das schon mal. Da braucht man entweder, ganz oldschool, ein Semaphor oder einen Datenprovider. Eine kleine Datenbank ist normal genau das richtige dafür. Es darf nur nicht so ausufern wie die SQLite Geschichte von IPS - oder die DB der Wahl braucht mehr Power. :wink:

Unter PHP geht das mit den Data Objects

Gruß,

Toni

Er will protokollieren, wann sich eine LOWBAT Variable ändert. Wie oft im Jahr passiert das? Da wird IPS schon nicht die Füße durcheinander bekommen :slight_smile: Zum Thema „Krücke“: Kann ich nicht nachvollziehen. Um ein paar Mal im Jahr einen Wert zu protokollieren wird nach allen Regeln von PHP eine Datei befüllt - so what?. Dafür gibt es schließlich Dateien dieser Art. :confused:

Naja das stimmt schon. Aber Eins führt zum Anderen und Provisorien halten am Längsten. Weils so praktisch ist macht man es immer ind immer wieder und immer mehr… Nur weil lediglich zwei Schreibzugriffe im Jahr geplant sind dürfen sie noch lange nicht zeitgleich erfolgen :wink:

Dass wir uns nicht falsch verstehen… Ich bin absolut nicht dagegen. Ich hab sogar mal ein Modul zu diesem Zweck veröffentlicht. :rolleyes:

Toni

Poste doch mal bitte den Link zum Modul wenn es ein IPS vier Module ist

Nee, ist schon länger her. Ich hab kein IPS 4.

Theoretisch kannst du auch ein MediaObjekt nutzen.
Hat den Vorteil dass keine Variable ist.
Und auch keine regelmässigen Schreibzugriffe auf Dateiebene braucht.
Schont also auch Flashmedien (ab 4.0).
Michael

Kannst du mir verraten?