Eieruhr im WebFront

@Rakete was ist ein Funkstuhlschalter und woher bekomme ich den?

Allgemein als Pupskissen bekannt ;),Drucksensor für Sitzmöbel.

Ich habe diese „Eieruhr“ angelegt und sie startet und endet auch…
Aber an welcher Stelle bitte füge ich ein, welches Objekt damit geschaltet werden soll?
Danke!

Ganz oben bei on und off.

paresy

ich versteh’s nicht?

Es sollte eher so aussehen :wink:


function on() {
 //hier der Befehl. z.B.
 FS20_SwitchMode(12345, true);
}

Alles klar… Wie dumm von mir

Gesendet von meinem Nexus 5 mit Tapatalk

mhhh, ich blicks nicht.
Habe ein Skript erstellt, den Code von Seite 1 rein kopiert. Anschließend das Script ein mal manuel ausgeführt.
Timer wurde erstellt, bekomme diesen auch im WebFront dargestellt.
Nur egal auf was ich nun klicke (Aus / - / min / +) poppt ein Fenster „FEHLER“ auf.
Was mache ich falsch?

Dann hast du wohl leere Zeilen vor oder nach denn PHP Tags mitkopiert.
Michael

Und wer soll jetzt raten was für ein Fehler da kommt ??

Ich benutze gerade die Eieruhr für eine Bewässerungssteuerung und wollte auch die neue Schreibweise nutzen. Die alte Schreibweise

global $IPS_SELF;

läuft wunderbar aber bei der neuen

global $_IPS['SELF'];

wird der Fehler Parse error.syntax error, unexpected ‚[‘, expecting ‚,‘ or ‚;‘ in… ausgegeben.

Mit „global“ gab es schon eine Weile Probleme aber warum die komische Fehlermeldung? Ebenso wird moniert

IPS_SetInfo($vid, "this variable was created by script #$_IPS['SELF']");

Das alte

 IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");

ist Fehlerfrei.

Hi,

versuchs mal so


IPS_SetInfo($vid, "this variable was created by script #" .$_IPS['SELF']);

Gruss
Dave

Und ein Index von einem Array kannst du nicht mit global benutzen.
Nur die ‚ganze‘ Variable (sprich Array).


global $_IPS;  

Michael

$_IPS sollte eigentlich eine Superglobal sein und somit ist ein global $_IPS nicht mehr nötig, da es auch in Funktionen verfügbar ist.

Danke erst mal an alle.
Wie man es löst (weglassen von global und …#" .$_IPS[‚SELF‘]); war mir schon klar. wichtiger war das warum! Alte Schreibweise läuft Neue nicht.

Hallo zusammen,

hat noch jemand von Euch dieses Script am Laufen?
Ich nutze IPS 4.3 und bekomme beim Setzen eine Fehlermeldung „Fehler“

Ich würde Euch ja gerne mehr Infos geben, aber mehr habe ich nicht (was ja auch das Problem ist). Weiß jemand Rat?

Läuft bei mir auch mit V4.3. Ich habe es mehrfach im Einsatz. Nur Meldung FEHLER ist meist ein Leerzeichen ganz am Anfang oder Ende des Skripts. Aber das muss dann auch vorher nicht funktioniert haben.

@Heidewinkler
Vielen Dank für den Hinweis! Es war in der Tat ein Leerzeichen vor dem Script … wieder was gelernt.
Leider scheint es noch imme nicht ordentlich zu laufen (Screenshots im Anhang).

Magst Du mal Dein lauffähiges Script posten?

Ja, aktualisiertes Skript wäre fein. Mit IPS 4.3 erzeugt das originale Skript immer wieder neue Timervariablen oberhalb von sich selbst und verschiebt sich dann eine Instanz darunter. Zudem wird wohl das Ausschalt-Event gleich nach einer Minute ausgelöst. Ich seh da auch grad nach dem Update auf 4.3 nicht durch mit alter und neuer Schreibweise und Kompatibilität…:confused:

Cooles Script, habe ich gleich mal angepasst und leicht aufgebohrt

Änderungen:

[ul]
[li]Timer Variable wird jetzt unterhalb des Scripts angelegt
[/li][li]2 Schrittweiten zum rauf- bzw. runterzählen
[/li][li]kleine stilistische Anpassung, damit bei Stop auch „0 min“ angezeigt wird
[/li][/ul]

<?
################################################################################
# Scriptbezeichnung: System.Timer.ips.php
# Version:	1.0.20170902
# Author:	@Pitti (base on @paresy)
#
# Timmer ala Eieruhr
#
#
# Anleitung:
# - Zuerst Konfigurationswerte auf eigene Bedürfnisse anpassen (max, step usw.)
# - In Konsole einfach ausführen um alles korrekt zu installieren.
#
# ------------------------------ Konfiguration ---------------------------------
#
$min = 0;
$max = 120;
$step = 1; // kleine Schrittweite
$jump = 5; // große Schrittweite
$suffix = "min";
#
# ------------------------------ Funktionen ------------------------------------
#
function on() {
	IPS_LogMessage("Eieruhr", "Aktiviert!");

}
function off() {
	IPS_LogMessage("Eieruhr", "Abgelaufen...");
}
#
################################################################################

// Name Variablenprofil
$vpn = "Timer.".$max.".".$jump;

// INSTALLATION
if($_IPS['SENDER'] == "Execute") {
	if(IPS_VariableProfileExists($vpn)) {
		IPS_DeleteVariableProfile($vpn);
	}
	IPS_CreateVariableProfile($vpn, 1);
	IPS_SetVariableProfileValues($vpn, $min, $max, 0);
	IPS_SetVariableProfileIcon($vpn, "Hourglass");
	IPS_SetVariableProfileAssociation($vpn, $min-3, "Aus", "", 0xFF0000);
	IPS_SetVariableProfileAssociation($vpn, $min-2, "-".$jump, "", -1);
	IPS_SetVariableProfileAssociation($vpn, $min-1, "-".$step, "", -1);
	IPS_SetVariableProfileAssociation($vpn, $min, "%d ".$suffix, "", 0x00FF00);
	IPS_SetVariableProfileAssociation($vpn, $max+1, "+".$step, "", -1);
	IPS_SetVariableProfileAssociation($vpn, $max+2, "+".$jump, "", -1);
	$vid = CreateVariableByName($_IPS['SELF'], "Timer", 1);
	IPS_SetVariableCustomProfile($vid, $vpn);
	IPS_SetVariableCustomAction($vid, $_IPS['SELF']);
	SetValue($vid, $min-3);
}
// AKTION VIA WEBFRONT
else if($_IPS['SENDER'] == "WebFront") {
    switch($_IPS['VALUE']) {
    	case $min-3:
			SetValue($_IPS['VARIABLE'], 0); 
			doOff();
			break;
    	case $min-2:
          	$_IPS['VALUE'] = GetValue($_IPS['VARIABLE']) - $jump;
          	if($_IPS['VALUE'] <= 0) {
			$_IPS['VALUE'] = -3;
				SetValue($_IPS['VARIABLE'], 0); 
				doOff();
          	}
          	break;
    	case $min-1:
          	$_IPS['VALUE'] = GetValue($_IPS['VARIABLE']) - $step;
          	if($_IPS['VALUE'] <= 0) {
			$_IPS['VALUE'] = -3;
				SetValue($_IPS['VARIABLE'], 0); 
				doOff();
          	}
          	break;
       	case $max+1:
          	$_IPS['VALUE'] = min($max, max(0, GetValue($_IPS['VARIABLE'])) + $step);
         	doOn();
         	break;
       	case $max+2:
          	$_IPS['VALUE'] = min($max, max(0, GetValue($_IPS['VARIABLE'])) + $jump);
         	doOn();
         	break;
        default:
            return;
    }
  	SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}
// TIMER EVENT
else if($_IPS['SENDER'] == "TimerEvent") {
	$vid = CreateVariableByName($_IPS['SELF'], "Timer", 1);
	$v = GetValue($vid);
	$v--;
	if($v <= 0) {
		SetValue($vid, 0); // sonst bleibt immer 1 Minute stehen und nicht 0
   		doOff();
    	IPS_SetScriptTimer($_IPS['SELF'], 0);
    	$v = $min-3;
	}
	SetValue($vid, $v);
}

function doOn()
{
	if(IPS_GetScriptTimer($_IPS['SELF']) == 0) {
	    IPS_SetScriptTimer($_IPS['SELF'], 60);
    	on();
	}
}

function doOff()
{
	IPS_SetScriptTimer($_IPS['SELF'], 0);
	off();
}

# ------------------------------ Funktionen ------------------------------------

function CreateVariableByName($id, $name, $type) 
{ 
   $vid = @IPS_GetVariableIDByName($name, $id); 
   if($vid===false) { 
      $vid = IPS_CreateVariable($type); 
      IPS_SetParent($vid, $id); 
      IPS_SetName($vid, $name); 
   } 
   return $vid; 
} 

?>