Miele @ Home - updates?

Hallo zusammen.

Ich konnte mit dem Miele script, welches hier einmal publiziert wurde, schon recht viel anfangen.
Hat vielleicht jemand dieses Script noch etwas verbessern können, dass auch die Daten aktualisiert werden, bzw. zurückgesetzt werden?

Danke

Danny

Du kannst an das Skript einen Timer machen - dann aktualisiert es die Werte :slight_smile:

paresy

Vielen Dank für Deine Antwort.
Den Timer im Script einbauen? Mit IPS_SetScriptTime ?
Lerne mich gerade in diese Umgebung ein, deshalb noch nicht so fit… :slight_smile:

Gruss
Danny

Abend!

Ich glaube, paresy meinte diesen Weg:

Rechte Maustaste auf das Script, Objekt hinzufügen, Ereignis hinzufügen > Zyklisches Ereignis
…und dann beim „Zeitmuster“ z.B. „Minütlich“…oder wie du die Werte eben aktualisiert haben möchtest.

Grüße,
Chris

Vielen Dank!
Das war genau richtig, so habe ich jetzt regelmässigere Infos. Und weiss jetzt, wie man solche Timer setzen kann.

Vielleicht hat ja noch jemand einen Tip, wie man die alten Infos löschen kann, welche nicht mehr gültig sind und immer noch in der Visualisierung auftauchen, obwohl z.B. die Maschine auf aus ist?

Danny

Alte Infos nicht mehr gültig? Kann dir leider grad nicht folgen, da ich das Miele@Home nicht im Einsatz habe. Da müsstest du bitte Screenshots posten und vlt. das Script, damit man dir besser helfen kann und weiß was du genau meinst und was du löschen/überschreiben möchtest.

Grüße,
Chris

Hallo.

Eigentlich sollten Werte, welche nicht mehr gültig sind, wieder gelöscht werden und nur Daten, welche aktuell sind, auch angezeight werdne. Im Bild siehst Du, dass das Gerät auf aus ist, aber alle vorigen Daten sind noch da und verwirren.
An dem scheitere ich… :slight_smile:

Danke und Gruss
Danny

Dazu müssen im Script, wenn der Status" aus" ist, die jeweiligen Variablen, mit „SetValue($VariablenID, „“);“ auf „leer“ gesetzt werden.

Oder du machst das mit einem extra Script, welches die Status-Variable überwacht, und wenn diese auf „aus“ steht, dann noch X Minuten warten und dann die anderen Variablen, mit eben genanntem Befehl, „leeren“.

Grüße,
Chris

Hallo,

ich habe folgendes Skript welches übre ein Ereignis alle 15 Sekunden gestartet wird:

 <?

$url="http://10.0.0.16/homebus/?language=de_DE";

// möglicher Gerätestatus: 'Aus', 'In Betrieb'

$content = @file_get_contents($url);
if((strpos($http_response_header[0], "200") === false)) {
  return;
}

$result=array();
$devices=simplexml_load_string($content);

foreach($devices as $device) {
  $uid = str_replace("-", "N", $device->UID);
  $name = utf8_decode($device->name);
  $url = $device->actions->action->attributes()['URL'];
  readdevice($uid, $name, $url);
}

function readdevice($uid, $name, $url)
{
  $content = @file_get_contents($url);
  if((strpos($http_response_header[0], "200") === false)) {
    return;
  }

  $cid=GetDummyModule(IPS_GetParent($_IPS['SELF']), $uid, $name);

  $device=simplexml_load_string($content);
  $keys = $device->information;
  foreach($keys->children() as $key)
  {
    if (utf8_decode($key['name'])=='Gerätestatus') {
      $id=GetVariable($cid, filter_characters(utf8_decode($key['name'])), utf8_decode($key['name']),0);
		SetValueBoolean ($id, ( utf8_decode($key['value']) == 'In Betrieb' ) );
		if ( utf8_decode($key['value']) == 'Aus' ) {
         $id=GetVariable($cid, 'Funktion', 'Funktion',3);
         SetValueString($id, '');
         $id=GetVariable($cid, 'Phase', 'Phase',3);
         SetValueString($id, '');
         $id=GetVariable($cid, 'Restzeit', 'Restzeit',3);
         SetValueString($id, '');
			$id=GetVariable($cid, 'Temperatur', 'Temperatur',3);
         SetValueString($id, '');
			$id=GetVariable($cid, 'Automatic', 'Automatic',3);
         SetValueString($id, '');
			$id=GetVariable($cid, 'Dauer', 'Dauer',3);
         SetValueString($id, '');
			if ( IPS_GetName($cid) == 'Wäschetrockner' ) {
				$id=GetVariable($cid, 'Dauer', 'Dauer',3);
	         SetValueString($id, '');
  				$id=GetVariable($cid, 'Programm', 'Programm',3);
	         SetValueString($id, '');
  				$id=GetVariable($cid, 'Trockenstufe', 'Trockenstufe',3);
	         SetValueString($id, '');

			}
			elseif ( IPS_GetName($cid) == 'Dampfgarer' ) {
				$id=GetVariable($cid, 'Temperatur', 'Temperatur',3);
	         SetValueString($id, '');
			}

		}
	 } else {
	    $id=GetVariable($cid, filter_characters(utf8_decode($key['name'])), utf8_decode($key['name']),3);
	    SetValueString($id, utf8_decode($key['value']));
	 }
  }
}

function GetVariable($id, $ident, $name, $type)
{
  $vid = @IPS_GetObjectIDByIdent($ident, $id);
  if ($vid === false)
  {
	 $vid = IPS_CreateVariable($type);
    IPS_SetParent($vid, $id);
    IPS_SetIdent($vid, $ident);
    IPS_SetName($vid, $name);
    IPS_SetInfo($vid, "This Variable was created by Script #$id");
    IPS_SetVariableCustomProfile($vid, "~String");
  }
  return $vid;
}


function GetDummyModule($id, $ident, $name)
{
  $iid = @IPS_GetObjectIDByIdent($ident, $id);
  if ($iid === false)
  {
    $iid = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
    IPS_SetParent($iid, $id);
    IPS_SetIdent($iid, $ident);
    IPS_SetName($iid, $name);
    IPS_SetInfo($iid, "This Instance was created by Script #$id");
  }
  return $iid;
}

function filter_characters($input) {
  $search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u,-, ");
  $replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u,_,_");
  return str_replace($search, $replace, $input);
}

?>