IPSView Popup remote über Workflow aufrufen

Hi Andreas,

ich habe das mit den Popups nun auch mal probiert.
Mit dem DetailImage in der App funktioniert der Popup auch,
nur als Workflow, wenn einer die Taste des MP3 Gongs drückt bekomme ich es nicht hin.

Übrigens, in deiner Doku unter Schritt2 hast du geschrieben, einen DetailButton anlegen,
es muss aber glaube ich Detail Image lauten oder?

Ich füge dir mal ein Bild anbei, ich bekomme es nicht hin mit dem Workflows.

Danke
BH

Hauptproblem ist hier, dass die Remote Steuerung der Popups nur auf Änderungen der Variable reagiert, Du setzt hier aber immer denselben Wert.

Um eine Änderung zu realisieren, kannst Du einen Timer zum Reset des Popups verwenden, siehe
http://ipsview.brownson.at/?p=948

DetailButton oder DetailImage macht nicht wirklich einen Unterschied und dads Event bei der „Remote_Popup“ Variable benötigst Du nicht.

Oh man, ich verstehe das nicht! ;-(

Sieh DIr doch mal das Beispiel im Blog an und bau das einfach nach!

Nimm eine Konstante für die Seite die gesetzt werden soll und baue den Reset nach:rolleyes:

Hi Andreas,

habe es jetzt komplett nachgebaut, aber komme nicht zum Ziel.

Er wirft bei mir in der Remote Variable immer true oder fals als Wert aus, aber nicht ein
Popup, verstehe nicht wie es zur Erzeugung des Popup kommt.

Ich habe echt keinen Plan mehr, wir ich das hinbekommen soll! ;-(

Stell doch einfach bei der Konstante „Popup“ den Datentype auf „String“ um und setz Deine gewünschte Seite dort;)

Moin Andreas,

sorry, ich war im Urlaub und konnte jetzt erst wieder ran.
Danke, dass Popup kommt nun bei Betätigung der Klingel.

Aber das Popup verschwindet durch den Timer nicht wieder, anscheinend ist
da noch der Wurm drin. Muss hier auch die Konstante auf String stehen? Oder wie muss
ich das nun einstellen?

Danke
BH

Sieht soweit in Ordnung aus, Konstante muss String mit Wert „“ (kein Leerzeichen).

Ok, danke.
Teste es morgen mal aus. Nur woher bekomme ich das Verständnis dafür, dass ich es als String mit ““ muss, damit es funktioniert?
Will es ja nicht nur nachbauen, sondern ansatzweise verstehen, welche Parameter was auslösen[emoji51]
Danke für deinen Support!

Gesendet von iPhone mit Tapatalk

„“ (Leerstring) muss es sein, damit das Popup gelöscht wird. Bei einem " " (Blank) oder auch jedem anderen String würde der Client versuchen das entsprechende Popup anzuzeigen.

Hi Andreas,

im IPS Client funktioniert der Timer und das Cam Bild verschwindet, jedoch auf dem IPAD
leider nicht! ;-(

VG
BH

Hi Andreas,

kannst du dir das auch noch einmal ansehen?

VG
BH

Gesendet von iPhone mit Tapatalk

Funktioniert bei mir auch auf dem iPad problemlos - sicher das Du am iPad dieselbe View verwendest?

Hi Andreas,

ja ganz sicher. Habe nur in einer View den Workflow. Bild kommt, geht aber nicht weg. Drehe durch, weil ich es nicht hinbekomme.

VG
BH

Gesendet von iPhone mit Tapatalk

Hi Andreas,

kann ich Dir den Workflow mal als „php“ schicken, ob ich vielleicht noch nen Fehler drin habe oder wie kann ich es dir senden, damit du mal drüber schaust?

Danke und Gruß
Guten Rutsch!
BH

Gesendet von iPhone mit Tapatalk

ja, schick mir das Teil mal.

Hi Andreas,

anbei der Workflow. Danke!!!

<?php

/* =====================================================================================================
 * 
 * IPSWorkflow Script
 * 
 * Dieses Skript wurde von einem Workflow des IPSStudio erzeugt, bitte nehmen Sie keine Änderungen
 * an dem Skript vor, da dieses beim nächsten Speichervorgang ansonsten wieder überschrieben werden.
 * 
 * Generiert
 *    at: 07.11.2018 00:19:53
 *    von: IPSStudio
 *    ID: 23110 /*[Jens_Workflow]*/
 * 
 * Benutzte Objekte:
 *    12385 /*[Geräte\Popup_KameraEingang\Remote_Popup]*/ - Geräte.Popup_KameraEingang.Remote_Popup
 * 
 * Generierte Ereignisse:
 *    38580 /*[Jens_Workflow\Bei Aktualisierung M1]*/ - Jens_Workflow.Bei Aktualisierung M1
 *    34352 /*[Jens_Workflow\Bei Aktualisierung M5]*/ - Jens_Workflow.Bei Aktualisierung M5
 *    37981 /*[Jens_Workflow\Einmaliger Timer M8]*/ - Jens_Workflow.Einmaliger Timer M8
 * 
 * ===================================================================================================== */

   $executionID = round(microtime(true)*1000)-(IPS_GetKernelStartTime()*1000);
   SendDebug($_IPS['SELF'], 'S||||'.$executionID, '', 0);

   $M1 = new IPSEntityModuleOnUpdate($_IPS, 38580 /*[Jens_Workflow\Bei Aktualisierung M1]*/);
   $M2 = new IPSEntityInstance($_IPS, 26625 /*[Geräte\Diele_EG\Klingelsensor]*/);
   $M3 = new IPSEntityModuleIfValue($_IPS);
   $M4 = new IPSEntityModuleOr($_IPS, true,true,false,false,false,false,false,false);
   $M5 = new IPSEntityModuleOnUpdate($_IPS, 34352 /*[Jens_Workflow\Bei Aktualisierung M5]*/);
   $M6 = new IPSEntityVariable($_IPS, 12385 /*[Geräte\Popup_KameraEingang\Remote_Popup]*/);
   $M7 = new IPSEntityModuleIfValue($_IPS);
   $M8 = new IPSEntityModuleTimerOnce($_IPS, 37981 /*[Jens_Workflow\Einmaliger Timer M8]*/);

      SendDebug($_IPS['SELF'], 'C1|Value|M3|SetValue|'.$executionID,'Popup_KameraEingang',0);
      $M3->SetValue('Popup_KameraEingang');
      SendDebug($_IPS['SELF'], 'C2|Value|M7|SetValue|'.$executionID,' ""',0);
      $M7->SetValue(' ""');
      SendDebug($_IPS['SELF'], 'C3|Value|M8|SetTime|'.$executionID,'10',0);
      $M8->SetTime('10');
   if ($M2->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M2|PRESS_CONT|M1|SetValue|'.$executionID,$M2->GetValue('PRESS_CONT'),0);
      $M1->SetValue($M2->GetValue('PRESS_CONT'));
      SendDebug($_IPS['SELF'], 'M2|PRESS_SHORT|M5|SetValue|'.$executionID,$M2->GetValue('PRESS_SHORT'),0);
      $M5->SetValue($M2->GetValue('PRESS_SHORT'));
   }
   if ($M1->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M1|GetFired|M4|SetValue1|'.$executionID,$M1->GetFired(),0);
      $M4->SetValue1($M1->GetFired());
   }
   if ($M5->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M5|GetFired|M4|SetValue2|'.$executionID,$M5->GetFired(),0);
      $M4->SetValue2($M5->GetFired());
   }
   if ($M4->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M4|GetResult|M8|SetActive|'.$executionID,$M4->GetResult(),0);
      $M8->SetActive($M4->GetResult());
      SendDebug($_IPS['SELF'], 'M4|GetResult|M3|SetCondition|'.$executionID,$M4->GetResult(),0);
      $M3->SetCondition($M4->GetResult());
   }
   if ($M3->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M3|GetValue|M6|SetValue|'.$executionID,$M3->GetValue(),0);
      $M6->SetValue($M3->GetValue());
   }
   if ($M8->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M8|GetFired|M7|SetCondition|'.$executionID,$M8->GetFired(),0);
      $M7->SetCondition($M8->GetFired());
   }
   if ($M7->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M7|GetValue|M6|SetValue|'.$executionID,$M7->GetValue(),0);
      $M6->SetValue($M7->GetValue());
   }
   $M6->Evaluate();


   /* -----------------------------------------------------------------------*/
   function SendDebug($id, $message, $data, $format) {
      if (is_numeric($data)) {
         $data = (string)round($data, 2);
      }
      IPS_SendDebug($id, $message, $data, $format);
   }

   /* -----------------------------------------------------------------------*/
   function GetTypeConvertedValue($variableID, $value) {
     $variableType = IPS_GetVariable($variableID)['VariableType'];
      if ($variableType == 0) return (bool)$value;
      else if ($variableType == 1) return (int)$value;
      else if ($variableType == 2) return (float)$value;
      else return $value;
   }


   /* -----------------------------------------------------------------------*/
	class IPSEntityModuleOnUpdate {
		private $ips;
		private $id;
		private $value;
		private $isFired;

		public function __construct($ips, $id) {
			$this->ips = $ips;
			$this->id = $id;
  		}

  		public function Evaluate() {
  		   $this->isFired = $this->ips['SENDER'] == 'Variable' && $this->ips['EVENT'] == $this->id;
  		   return $this->isFired;
  		}

  		public function SetValue($value) {
  		   $this->value = $value;
  		}

  		public function GetValue() {
	  		return $this->value;
  		}

  		public function GetFired() {
  		   return $this->isFired;
  		}
  		
 		public function GetNotFired() {
  		   return !$this->isFired;
  		}
	}

   /* -----------------------------------------------------------------------*/
	class IPSEntityInstance {
		private $ips;
		private $id;

		public function __construct($ips, $id) {
			$this->ips = $ips;
			$this->id = $id;
  		}

      private function GetTypeConvertedValue($ident, $value) {
         return GetTypeConvertedValue(IPS_GetObjectIDByIdent($ident, $this->id), $value);
      }

  		public function SetValue($ident, $value) {
   		   IPS_RequestAction($this->id, $ident, $this->GetTypeConvertedValue($ident, $value));
  		}

  		public function GetValue($ident) {
 		   return GetValue(IPS_GetObjectIDByIdent($ident, $this->id));
  		}

  		public function Evaluate() {
  		   return true;
  		}
	}

   /* -----------------------------------------------------------------------*/
	class IPSEntityModuleIfValue {
		private $ips;
		private $condition = false;
		private $value = false;

		public function __construct($ips) {
			$this->ips = $ips;
  		}

  		public function SetCondition($value) {
  		   $this->condition = $value;
  		}

  		public function SetValue($value) {
  		   $this->value = $value;
  		}

  		public function GetValue() {
 		   return $this->value;
  		}

  		public function Evaluate() {
  		   return $this->condition;
  		}
	}

   /* -----------------------------------------------------------------------*/
	class IPSEntityModuleOr {
		private $ips;
		private $result = 0;
		private $evaluation = 0;
		private $value  = array();
		private $input  = array();
		private $linked = array();

		public function __construct($ips, $linked1, $linked2, $linked3, $linked4, $linked5, $linked6, $linked7, $linked8) {
			$this->ips = $ips;
         $this->linked[0] = $linked1;
         $this->linked[1] = $linked2;
         $this->linked[2] = $linked3;
         $this->linked[3] = $linked4;
         $this->linked[4] = $linked5;
         $this->linked[5] = $linked6;
         $this->linked[6] = $linked7;
         $this->linked[7] = $linked8;
         for ($idx = 0;$idx < 8;$idx++) {
            $this->value[$idx] = -1;
            $this->input[$idx] = false;
         }
  		}

  		private function SetValue($idx, $value) {
  		   $this->value[$idx] = $value;
 		   $this->input[$idx] = true;
  		}

  		public function SetValue1($value) {
  		   $this->SetValue(0, $value);
  		}

 		public function SetValue2($value) {
  		   $this->SetValue(1, $value);
  		}

 		public function SetValue3($value) {
  		   $this->SetValue(2, $value);
  		}

 		public function SetValue4($value) {
  		   $this->SetValue(3, $value);
  		}

		public function SetValue5($value) {
  		   $this->SetValue(4, $value);
  		}

 		public function SetValue6($value) {
  		   $this->SetValue(5, $value);
  		}

 		public function SetValue7($value) {
  		   $this->SetValue(6, $value);
  		}

 		public function SetValue8($value) {
         $this->SetValue(7, $value);
 		}

  		public function GetResult() {
 		   return $this->result;
  		}

 		public function Evaluate() {
           $value1 = $this->value[0];
           $value2 = $this->value[1];
           $value3 = $this->value[2];
           $value4 = $this->value[3];
           $value5 = $this->value[4];
           $value6 = $this->value[5];
           $value7 = $this->value[6];
           $value8 = $this->value[7];

           
            $this->result = false;
            for ($idx = 0 ; $idx < 8 ; $idx++)
               if ($this->input[$idx])
                  $this->result = $this->result || $this->value[$idx]; 
  		      

           $this->evaluation = false; 
            for ($idx = 0 ; $idx < 8 ; $idx++)
               $this->evaluation = $this->evaluation || ($this->input[$idx]==$this->linked[$idx]);
            

   		   return $this->evaluation;
  		}
	}
   /* -----------------------------------------------------------------------*/
	class IPSEntityVariable {
		private $ips;
		private $id;
		private $value;

		public function __construct($ips, $id) {
			$this->ips = $ips;
			$this->id = $id;
  		}

  		public function SetValue($value) {
  		   SetValue($this->id, GetTypeConvertedValue($this->id, $value));
  		}

  		public function GetValue() {
  		   return GetValue($this->id);
  		}

  		public function Evaluate() {
  		   return true;
  		}
	}

   /* -----------------------------------------------------------------------*/
	class IPSEntityModuleTimerOnce {
		private $ips;
		private $id;
		private $seconds;
		private $active = -1;
		private $isEventFired;

		public function __construct($ips, $id) {
			$this->ips = $ips;
			$this->id = $id;
  		}

 		public function Evaluate() {
			$this->isEventFired  =
			   	$this->ips['SENDER'] == 'TimerEvent'
			   && $this->ips['EVENT'] == $this->id;

 		   if ($this->isEventFired) {
	 	    	IPS_SetEventActive($this->id, false);
			} else if ($this->active===true) {
			   $time = time() + $this->seconds;
			   IPS_SetEventCyclic($this->id, 0, 0, 0, 0, 1, $this->seconds);
			   IPS_SetEventCyclicTimeFrom($this->id, (int)date('H', $time), (int)date('i', $time), (int)date('s', $time));
	 	      IPS_SetEventActive($this->id, true);
			} else {}

			return $this->isEventFired;
		}

  		public function SetActive($value) {
  		   $this->active = $value;
  		}

  		public function SetTime($value) {
  		   $this->seconds=$value;
  		}

  		public function GetFired() {
			return $this->isEventFired;
  		}

        public function GetNotFired() {
			return !$this->isEventFired;
  		}
	}


   SendDebug($_IPS['SELF'], 'F||||'.$executionID, '', 0);

?>

Ich würde mal vermuten, dass Du bei der Reset Variable noch ein Blank und/oder Quotes drinnen hast, hier mal ein Screenshot wie das bei mir aussieht:
2019-01-17 22_04_34-Window.png

Hallo Andreas
Ist schon bischen älter aber passt gut zu meinem Problem:
Ich hab das nachgebaut-Bewegung Eingang funktioniert. Kamera Eingang

Jetzt möchte ich aber eine 2. Kamera „Kamera Terasse einbinden“
Diese soll angezeigt werden wenn Bewegung auf der Terasse ist.
Ein gleiches Workflow Popup Kamera Eingang funktioniert nicht weil bei View Eigenschaften nur 1 Aktives Popup eingetragen werden kann.
Das krieg ich nicht hin.
Schönen Gruß
Egon

Du benötigst auch nur eine Remote Steuervariable, einfach den anderen Popupnamen eintragen, dann sollte es klappen;)