Gardena/Husqvarna G3 Webfront Integration

Hallo Manni,

das habe ich von Fabian als Antwort auf die Frage bekommen welche Abfragen den Mäher wecken:

Batterie und Motor.
Der normale Statusabruf weckt ihn nicht

Ich habe die mal in Deinem Auslese-Script auskommentiert und scheint zu funktionieren, kein Piepen mehr.
Du kannst es ja auch mal testen.

Wenn das tatsächlich so ist kannst Du das Auslese-Script ja vielleicht so ändern, dass wenn der Mäher in der Ladestation steht, die beiden Werte nicht abgefragt werden (sind dort ja auch nicht so wichtig).

Ergänzung:
Piept immer noch, aber meiner Meinung nach nicht mehr so oft (ca. all 2-3 min.)

Hallo Manni,

ich habe Dein Auslese-Script mal ein wenig angepasst.
Damit läuft es jetzt seit 65 min. im Modus schläft und keine Piepser.

Aber Irgendwas habe ich bei den Betriebsstunden und den Leistungsdaten verbastelt, die werden nicht mehr aktualisiert.

Vielleicht kannst Du es Programmiertechnisch noch etwas hübschen (bin kein PHP-Profi)

Hier das Script:


<?    
/*******************************************************************************

    MSC - Version 2.1.9 vom 14.04.2017

********************************************************************************

    SKRIPT ZUM AUSLESEN VON MÄHROBOTER
    AUSGESTATTET MIT DEM
	ROBONECT-MODUL H30x Ver. 0.9c

--------------------------------------------------------------------------------

	Abfrage der Daten vom Modul

********************************************************************************
*******************************************************************************/
	$start = microtime(true);
/*******************************************************************************
*******************************************************************************/
	
// benötigte Skripte
	include_once( "Robo_Alfred_Konfiguration.ips.php" );
	include_once( "Robo_Alfred_Funktionen.ips.php" );

// -----------------------------------------------------------------------------

// Variablen initalisieren
	$forced_update = false;
	$stopped = false;

/*******************************************************************************
*******************************************************************************/

// Auslösendes Ereignis bestimmen
// *****************************************************************************
switch($_IPS['SENDER']){

// *****************************************************************************
// Auslöser WebFront
// -----------------------------------------------------------------------------
	case "WebFront":
		$forced_update = true;
		IPS_SetScriptTimer($_IPS['SELF'], 0);
		SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	break;
	
// *****************************************************************************
// Auslöser Variable
// -----------------------------------------------------------------------------	
	case "Variable":
	$object = IPS_GetObject($_IPS['VARIABLE']);
		
		switch($object['ObjectIdent']){
			// aktiviert / deaktiviert den Timer im Wintermodus
			case "roboSWMTrigger":
				switch($_IPS['VALUE']){
					case false;
						$time = 0;
					break;
					case true;
						$time = $getDataTime['time_station'];
					break;
					default:
						return;
					break;
					}
				IPS_SetScriptTimer($_IPS['SELF'], $time);
			break;	
			default:
				return;
			break;
			}
	break;
	
// *****************************************************************************
// Auslöser TimerEvent
// -----------------------------------------------------------------------------
	case "TimerEvent":
		IPS_SetScriptTimer($_IPS['SELF'], 0);
	break;
	
// *****************************************************************************
// Auslöser Skript ausführen
// -----------------------------------------------------------------------------
	case "Execute";
		echo "Skript manuell gestartet!";
		return;
	break;
	
// *****************************************************************************
// Auslöser RunScript
// -----------------------------------------------------------------------------
	case "RunScript":
		// Code
	break;
	}

/*******************************************************************************
*******************************************************************************/

	IPS_SemaphoreEnter("ScriptStart", 8000);

//******************************************************************************

$status = GetValueInteger(26875);
	
// Abfragen und Variablen schreiben
// ---------------------------------
	// API - Status
	$content = url_get_contents($getDataUrl['apistatus'], $debug);	
		$api_status = robo_get_xmltojson($content, $debug);
		
		if($api_status['successful'] == true){
			robo_SetVariable("roboVarConnState", "roboVarID", true);
			
    		robo_SetVariable("roboVarName", "roboVarID", $api_status['name'], true);
    		robo_SetVariable("roboVarStatus", "roboVarID", $api_status['status']['status'], true);
    		robo_SetVariable("roboVarStatMode", "roboVarID", $api_status['status']['mode'], true);
			robo_SetVariable("roboVarStatTime", "roboVarID", $api_status['status']['duration'], true);
			
			if($status != 17)
			{
			robo_SetVariable("roboArcBattStat", "roboArchivID", $api_status['status']['battery'], true);
			}
			else
			{}
			
    		robo_SetVariable("roboArcTimeBST", "roboArchivID", $api_status['status']['hours'], false, true);
    		robo_SetVariable("roboVarConnSignal", "roboVarID", $api_status['wlan']['signal'], true);
			robo_SetVariable("roboVarStatHoldOn", "roboVarID", $api_status['status']['stopped']);
			
			//robo_SetVariable("roboVarStatLong", "roboVarID", robo_GetStatusLong($api_status['status']['status'], $api_status['status']['duration']), true);
			
			if(array_key_exists("error", $api_status)) robo_SetVariable("roboVarStatError", "roboVarID", $api_status['error']['error_message'], true);
			elseif($api_status['status']['stopped'] == 1){
				robo_SetVariable("roboVarStatError", "roboVarID", '"Stop" - Modus, bitte "Starten"', true);
				robo_SetVariable("roboConSwControlMode", "roboControlID", true, true);
				$stopped = true;
				}
			else{
				robo_SetVariable("roboVarStatError", "roboVarID", "kein Fehler", true);
				}
			}
		else robo_SetVariable("roboVarConnState", "roboVarID", false);

// *****************************************************************************	
	$status = robo_GetVariable("roboVarConnState", "roboVarID");
	switch($api_status['status']['status']){case 0: case 4: case 16: case 17: $stat = "station"; break; default: $stat = "work";}
	if($status == true){

// *****************************************************************************	

		if($status != 17)
			{
			// API - Fehlerspeicher
		if(robo_TimeCheck("roboBoxErrorList", "roboBoxID", $getDataTime['apierror']) or $stopped or $forced_update == true){
			$api_content = url_get_contents($getDataUrl['apierror'], $debug);
			$api_error = robo_get_xmltojson($api_content, $debug);	
			
			if($api_error['successful'] == true) robo_SetVariable("roboBoxErrorList", "roboBoxID", robo_GetErrorList($api_error));
			}
			}
			else
			{}
	
		
// *****************************************************************************

		// API und Web - Version
		if(robo_TimeCheck("roboBoxRobonect", "roboBoxID", $getDataTime['apiversion']) or $forced_update == true){
			$api_content = url_get_contents($getDataUrl['apiversion'], $debug);	
			$api_version = robo_get_xmltojson($api_content, $debug);
			$web_content = url_get_contents($getDataUrl['webversion'], $debug);
		
			if($api_version['successful'] or $web_content == true) robo_SetVariable("roboBoxRobonect", "roboBoxID", robo_GetVersion($api_version, $web_content, $debug));
			}
		
// *****************************************************************************	

	// Web - Status
		$content = url_get_contents($getDataUrl['webstatus'], $debug);	
		$web_status = robo_json_decode($content, "", true, $debug);
		
		if($web_status == true){
			//robo_SetVariable("roboVarConnState", "roboVarID", true);
			if($web_status['tmnustatus'] == "Suche") robo_SetVariable("roboVarStatLong", "roboVarID", $web_status['tmnustatus'], true);
			else robo_SetVariable("roboVarStatLong", "roboVarID", $web_status['Tsdura'], true);
			robo_SetVariable("roboVarStatTimer", "roboVarID", $web_status['ttimer']." ".$web_status['tmnumode'], true);
    		robo_SetVariable("roboVarStatDate", "roboVarID", $web_status['tsdate'].date("Y")." ".$web_status['tstime'], true);
    		robo_SetVariable("roboVarStatMessage", "roboVarID", substr(strstr($web_status['Tsstop'], " "), 1, -4), true);
			}		
		
																		
		// Web - Wlan
		if(robo_TimeCheck("roboVarConnTime", "roboVarID", $getDataTime['webwlan']) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webwlan'], $debug);	
			$web_wlan = robo_json_decode($content, "tattempts", true, $debug);
		
			if($web_wlan == true){
    			robo_SetVariable("roboVarConnAdress", "roboVarID", $web_wlan['taddress'], true);
				robo_SetVariable("roboVarConnTime", "roboVarID", $web_wlan['tsince'], true);
				robo_SetVariable("roboVarConnSignal", "roboVarID", $web_wlan['tsignal'], true);
				}
			}

		if($status != 17)
			{
		// Web - Batteriestatus
		if(robo_TimeCheck("roboBoxBattery", "roboBoxID", $getDataTime["webbatt_".$stat]) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webbatt'], $debug);
				$web_batt = robo_json_decode($content, "csbatt", false, $debug);
				$data_batt = robo_GetBattery($web_batt);

			if($data_batt == true){
				robo_SetVariable("roboBoxBattery", "roboBoxID", $data_batt);
			
				robo_SetVariable("roboArcBattVolt", "roboArchivID", $web_batt['pvoltage'], true);
				robo_SetVariable("roboArcBattCapacity", "roboArchivID", $web_batt['pcapacity'], true);
				robo_SetVariable("roboArcBattCurrent", "roboArchivID", $web_batt['pcurrent'], true);
				robo_SetVariable("roboArcBattTemp", "roboArchivID", $web_batt['ptemp'], true);
				}
			}

		// Web - Motoren
		if(robo_TimeCheck("roboBoxDrives", "roboBoxID", $getDataTime["webdrive_".$stat]) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webdrive'], $debug);	
				$web_drive = robo_json_decode($content, "csbatt", false, $debug);
				$data_drive = robo_GetDrives($web_drive);
			
			if($data_drive == true) robo_SetVariable("roboBoxDrives", "roboBoxID", $data_drive);
			}					


		// Web - Betriebsstunden
		if(robo_TimeCheck("roboBoxTimeStat", "roboBoxID", $getDataTime['webhours']) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webhours'], $debug);	
				$web_bst = robo_GetTimeStat($content, $debug);

			if($web_bst['status'] == true){
				robo_SetVariable("roboBoxTimeStat", "roboBoxID", $web_bst['htmlbox']);
			
				robo_SetVariable("roboArcTimeSearchSum", "roboArchivID", $web_bst['data']['h_search'], false, true);
				robo_SetVariable("roboArcTimeMowSum", "roboArchivID", $web_bst['data']['h_mow'], false, true);
				robo_SetVariable("roboArcTimeCharge", "roboArchivID", $web_bst['data']['h_charge'], false, true);
				robo_SetVariable("roboArcTimeChargeCount", "roboArchivID", $web_bst['data']['count_c'], false, true);
				robo_SetVariable("roboArcErrorCount", "roboArchivID", $web_bst['data']['error'], false, true);			
				if($web_bst['search'] !== false) robo_CompareACValue("roboArcTimeSearch", $web_bst['search']); 
				if($web_bst['mow'] !== false) robo_CompareACValue("roboArcTimeMow", $web_bst['mow']); 
				}
			}
			}
			else
			{}

		}
		
// *****************************************************************************	
														
	if(($_IPS['SENDER'] == "WebFront") and ($forced_update == true)) SetValue($_IPS['VARIABLE'], -1);
	IPS_SetScriptTimer($_IPS['SELF'], $getDataTime["time_".$stat]);
	
// *****************************************************************************

	IPS_SemaphoreLeave("ScriptStart");

//******************************************************************************

	$end = microtime(true);
	robo_SetVariable("roboArcScriptRuntime", "roboArchivID", ceil(($end - $start) * 1000));

/*******************************************************************************
*******************************************************************************/

?>

Ich weiß bei php auch nie so wirklich was ich mache.
Komme aus der SPS Welt.
Ich werd mir das heute Abend mal ansehen, wenn ich wieder zu Hause bin.

Gesendet von meinem SM-G935F mit Tapatalk

Naja, wenn ich Deine Scripte und meine vergleiche, dann denke ich das Du doch fitter bist. :relaxed:

Gesendet von meinem SM-T805 mit Tapatalk


if($status != 17){

wird nicht funktionieren.
Diese Variable kann nur true oder false sein.
Diese Variable bezieht sich auf den WLAN-Verbindungsstatus.

Du brauchst:


if($api_status['status']['status'] != 17){

z.B:


if($api_status['status']['status'] != 17){ 
      robo_SetVariable("roboArcBattStat", "roboArchivID", $api_status['status']['battery'], true); 
      } 

das else{} danach kannste weglassen


<?    
/*******************************************************************************

    MSC - Version 2.2 vom 17.04.2017

********************************************************************************

    SKRIPT ZUM AUSLESEN VON MÄHROBOTER
    AUSGESTATTET MIT DEM
	ROBONECT-MODUL H30x Ver. 0.9c

--------------------------------------------------------------------------------

	Abfrage der Daten vom Modul

********************************************************************************
*******************************************************************************/
	$start = microtime(true);
/*******************************************************************************
*******************************************************************************/
	
// benötigte Skripte
	include_once( "Robo_Alfred_Konfiguration.ips.php" );
	include_once( "Robo_Alfred_Funktionen.ips.php" );

// -----------------------------------------------------------------------------

// Variablen initalisieren
	$forced_update = false;
	$stopped = false;

/*******************************************************************************
*******************************************************************************/

// Auslösendes Ereignis bestimmen
// *****************************************************************************
switch($_IPS['SENDER']){

// *****************************************************************************
// Auslöser WebFront
// -----------------------------------------------------------------------------
	case "WebFront":
		$forced_update = true;
		IPS_SetScriptTimer($_IPS['SELF'], 0);
		SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	break;
	
// *****************************************************************************
// Auslöser Variable
// -----------------------------------------------------------------------------	
	case "Variable":
	$object = IPS_GetObject($_IPS['VARIABLE']);
		
		switch($object['ObjectIdent']){
			// aktiviert / deaktiviert den Timer im Wintermodus
			case "roboSWMTrigger":
				switch($_IPS['VALUE']){
					case false;
						$time = 0;
					break;
					case true;
						$time = $getDataTime['time_station'];
					break;
					default:
						return;
					break;
					}
				IPS_SetScriptTimer($_IPS['SELF'], $time);
			break;	
			default:
				return;
			break;
			}
	break;
	
// *****************************************************************************
// Auslöser TimerEvent
// -----------------------------------------------------------------------------
	case "TimerEvent":
		IPS_SetScriptTimer($_IPS['SELF'], 0);
	break;
	
// *****************************************************************************
// Auslöser Skript ausführen
// -----------------------------------------------------------------------------
	case "Execute";
		echo "Skript manuell gestartet!";
		return;
	break;
	
// *****************************************************************************
// Auslöser RunScript
// -----------------------------------------------------------------------------
	case "RunScript":
		// Code
	break;
	}

/*******************************************************************************
*******************************************************************************/

	IPS_SemaphoreEnter("ScriptStart", 8000);

//******************************************************************************
	
// Abfragen und Variablen schreiben
// ---------------------------------
	// API - Status
	
	$content = url_get_contents($getDataUrl['apistatus'], $debug);	
		$api_status = robo_get_xmltojson($content, $debug);
		
		if($api_status['successful'] == true){
			robo_SetVariable("roboVarConnState", "roboVarID", true);
			
    		robo_SetVariable("roboVarName", "roboVarID", $api_status['name'], true);
    		robo_SetVariable("roboVarStatus", "roboVarID", $api_status['status']['status'], true);
    		robo_SetVariable("roboVarStatMode", "roboVarID", $api_status['status']['mode'], true);
			robo_SetVariable("roboVarStatTime", "roboVarID", $api_status['status']['duration'], true);
			if($api_status['status']['status'] != 17) robo_SetVariable("roboArcBattStat", "roboArchivID", $api_status['status']['battery'], true);
    		robo_SetVariable("roboArcTimeBST", "roboArchivID", $api_status['status']['hours'], false, true);
    		robo_SetVariable("roboVarConnSignal", "roboVarID", $api_status['wlan']['signal'], true);
			robo_SetVariable("roboVarStatHoldOn", "roboVarID", $api_status['status']['stopped']);
			
			//robo_SetVariable("roboVarStatLong", "roboVarID", robo_GetStatusLong($api_status['status']['status'], $api_status['status']['duration']), true);
			
			if(array_key_exists("error", $api_status)) robo_SetVariable("roboVarStatError", "roboVarID", $api_status['error']['error_message'], true);
			elseif($api_status['status']['stopped'] == 1){
				robo_SetVariable("roboVarStatError", "roboVarID", '"Stop" - Modus, bitte "Starten"', true);
				robo_SetVariable("roboConSwControlMode", "roboControlID", true, true);
				$stopped = true;
				}
			else{
				robo_SetVariable("roboVarStatError", "roboVarID", "kein Fehler", true);
				}
			}
		else robo_SetVariable("roboVarConnState", "roboVarID", false);

// *****************************************************************************	
	$status = robo_GetVariable("roboVarConnState", "roboVarID");
	switch($api_status['status']['status']){case 0: case 4: case 16: case 17: $stat = "station"; break; default: $stat = "work";}
	if($status == true){

// *****************************************************************************	
		if($api_status['status']['status'] != 17){
			// API - Fehlerspeicher
			if(robo_TimeCheck("roboBoxErrorList", "roboBoxID", $getDataTime['apierror']) or $stopped or $forced_update == true){
				$api_content = url_get_contents($getDataUrl['apierror'], $debug);
				$api_error = robo_get_xmltojson($api_content, $debug);	
			
				if($api_error['successful'] == true) robo_SetVariable("roboBoxErrorList", "roboBoxID", robo_GetErrorList($api_error));
				}
			}
	
// *****************************************************************************
	
		// API und Web - Version
		if(robo_TimeCheck("roboBoxRobonect", "roboBoxID", $getDataTime['apiversion']) or $forced_update == true){
			$api_content = url_get_contents($getDataUrl['apiversion'], $debug);	
			$api_version = robo_get_xmltojson($api_content, $debug);
			$web_content = url_get_contents($getDataUrl['webversion'], $debug);
		
			if($api_version['successful'] or $web_content == true) robo_SetVariable("roboBoxRobonect", "roboBoxID", robo_GetVersion($api_version, $web_content, $debug));
			}
	
// *****************************************************************************	

	// Web - Status
		$content = url_get_contents($getDataUrl['webstatus'], $debug);	
		$web_status = robo_json_decode($content, "", true, $debug);
		
		if($web_status == true){
			//robo_SetVariable("roboVarConnState", "roboVarID", true);
			if($web_status['tmnustatus'] == "Suche") robo_SetVariable("roboVarStatLong", "roboVarID", $web_status['tmnustatus'], true);
			else robo_SetVariable("roboVarStatLong", "roboVarID", $web_status['Tsdura'], true);
			robo_SetVariable("roboVarStatTimer", "roboVarID", $web_status['ttimer']." ".$web_status['tmnumode'], true);
    		robo_SetVariable("roboVarStatDate", "roboVarID", $web_status['tsdate'].date("Y")." ".$web_status['tstime'], true);
    		robo_SetVariable("roboVarStatMessage", "roboVarID", substr(strstr($web_status['Tsstop'], " "), 1, -4), true);
			}		
																	
		// Web - Wlan
		if(robo_TimeCheck("roboVarConnTime", "roboVarID", $getDataTime['webwlan']) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webwlan'], $debug);	
			$web_wlan = robo_json_decode($content, "tattempts", true, $debug);
		
			if($web_wlan == true){
    			robo_SetVariable("roboVarConnAdress", "roboVarID", $web_wlan['taddress'], true);
				robo_SetVariable("roboVarConnTime", "roboVarID", $web_wlan['tsince'], true);
				robo_SetVariable("roboVarConnSignal", "roboVarID", $web_wlan['tsignal'], true);
				}
			}

		if($api_status['status']['status'] != 17){
			// Web - Batteriestatus
			if(robo_TimeCheck("roboBoxBattery", "roboBoxID", $getDataTime["webbatt_".$stat]) or $forced_update == true){
				$content = url_get_contents($getDataUrl['webbatt'], $debug);
					$web_batt = robo_json_decode($content, "csbatt", false, $debug);
					$data_batt = robo_GetBattery($web_batt);

				if($data_batt == true){
					robo_SetVariable("roboBoxBattery", "roboBoxID", $data_batt);
			
					robo_SetVariable("roboArcBattVolt", "roboArchivID", $web_batt['pvoltage'], true);
					robo_SetVariable("roboArcBattCapacity", "roboArchivID", $web_batt['pcapacity'], true);
					robo_SetVariable("roboArcBattCurrent", "roboArchivID", $web_batt['pcurrent'], true);
					robo_SetVariable("roboArcBattTemp", "roboArchivID", $web_batt['ptemp'], true);
					}
				}

			// Web - Motoren
			if(robo_TimeCheck("roboBoxDrives", "roboBoxID", $getDataTime["webdrive_".$stat]) or $forced_update == true){
				$content = url_get_contents($getDataUrl['webdrive'], $debug);	
					$web_drive = robo_json_decode($content, "csbatt", false, $debug);
					$data_drive = robo_GetDrives($web_drive);
			
				if($data_drive == true) robo_SetVariable("roboBoxDrives", "roboBoxID", $data_drive);
				}					
			}

		// Web - Betriebsstunden
		if(robo_TimeCheck("roboBoxTimeStat", "roboBoxID", $getDataTime['webhours']) or $forced_update == true){
			$content = url_get_contents($getDataUrl['webhours'], $debug);	
				$web_bst = robo_GetTimeStat($content, $debug);

			if($web_bst['status'] == true){
				robo_SetVariable("roboBoxTimeStat", "roboBoxID", $web_bst['htmlbox']);
			
				robo_SetVariable("roboArcTimeSearchSum", "roboArchivID", $web_bst['data']['h_search'], false, true);
				robo_SetVariable("roboArcTimeMowSum", "roboArchivID", $web_bst['data']['h_mow'], false, true);
				robo_SetVariable("roboArcTimeCharge", "roboArchivID", $web_bst['data']['h_charge'], false, true);
				robo_SetVariable("roboArcTimeChargeCount", "roboArchivID", $web_bst['data']['count_c'], false, true);
				robo_SetVariable("roboArcErrorCount", "roboArchivID", $web_bst['data']['error'], false, true);			
				if($web_bst['search'] !== false) robo_CompareACValue("roboArcTimeSearch", $web_bst['search']);
				if($web_bst['mow'] !== false) robo_CompareACValue("roboArcTimeMow", $web_bst['mow']);
				}
			}
		}
		
// *****************************************************************************	
														
	if(($_IPS['SENDER'] == "WebFront") and ($forced_update == true)) SetValue($_IPS['VARIABLE'], -1);
	IPS_SetScriptTimer($_IPS['SELF'], $getDataTime["time_".$stat]);
	
// *****************************************************************************

	IPS_SemaphoreLeave("ScriptStart");

//******************************************************************************

	$end = microtime(true);
	robo_SetVariable("roboArcScriptRuntime", "roboArchivID", ceil(($end - $start) * 1000));

/*******************************************************************************
*******************************************************************************/

?>

PS.: bei mir haben diese Änderungen leider keine Auswirkung auf das Gepiepse.

Hallo Manni,

danke für die Anpassungen, werde sie testen.
Wegen des Gepiepse, ich war nun heute auch nicht den ganzen Tag im Garten. Werde es mal beobachten ist auf jeden Fall nicht mehr so häufig.

Der Status ist jetzt, mit Deinem angepassten Script, schon seit 10 min „schläft“

PS.
Hast Du schon eine Idee woher mein Fehler „variable sm“ nicht vorhanden beim umschalten zwischen Steuerung, Timer und Fehler kommt?
Das Umschalten an sich geht.

So irgendwas muss noch anders sein, als bei meinem Fehlerhaften Script. Immer nach 10 min. wechselt der Status und fängt von Vorne an zu zählen. Mit meinem Script war der Status fast 7 Stunden lang „schläft“.

Gesendet von meinem SM-T805 mit Tapatalk

Dann nimmst Du die „}“ Klammer aus Zeile 219 (nach der Abfrage der Motoren) und gehst einen
Block weiter (Abfrage Betriebsstunden) und setzt die „}“ Klammer dort wieder ein.
Sollte dann Zeile 237 sein.

Dann dann schauen wir weiter.
Viel ist dann nicht mehr.

Postet ihr dann eine korrigierte Version des Skripts? Ggfs. eine neue Version im ersten Post.

Hallo Manni,

mit der Änderung der Klammer, bleit der Mäher im „Schlaf“ Status.

Hallo wupperi,

ist das Auslese-Script aus Post 22, anschließend muss noch die Klammer umgesetzt werden.

Danke für die Info. Noch ist es nachvollziehbar. Wenn der Thread noch ein paar Seiten weiter geht, wirds unübersichtlich.
Deswegen an Manni die Bitte, wenn der „Piepsfehler“ (Meiner piept auch) weg ist, ganz vorne eine neue Version zu posten.
@Manni: Sehr schöne Arbeit, übrigens.

Habe die Arbeit von Manni mal in einen eigenen Thread geschoben.

Mit den Änderungen piepst meiner auch nicht mehr. :slight_smile:

Dem Wunsch, kann ich mich anschließen :wink:

Ich habe per Installationsskript installiert und dann versucht aus Thread 22 unter Verschiebung der Klammer das Ausleseskript anzupassen.

Danach kommt das hier:

Parse error: syntax error, unexpected ‚$start‘ (T_VARIABLE) in C:\Program Files\IP-Symcon\scripts\Robo_Robby_Auslesen.ips.php on line 18

Und Zeile 18 steht eigentlich nur:
$start = microtime(true);

Any Idea?

Habe im Moment nicht viel Zeit, und die letzten Tage war auch nicht viel los mit testen.
Mei, das Wetter - April April - ich habe einen Rasenmäher und keinen Schneeschieber :smiley:
Aber so konnten wenigst andere Baustellen vorangetrieben werden.

Im Anhang mal kurz das angepasste Ausleseskript.

Nicht vergessen am Anfang bei den Includes den Namen vom Mäher einzutragen.
Oder später mit copy&paste anfangen :rolleyes:

AusleseSkript_v2.1.zip (2.43 KB)

Hallo,

kann es sein, das wenn das Auslese Script zu lange läuft, der Status alsOffline angezeigt wird?
Bei Verbunden seit, wird mir eine ununterbrochene, wenn auch schlechte Verbindung, angezeigt.

Das liegt nicht am Skript.
file_get_contents läuft mit einem 3sek Timeout.
Denn wenn in 3sek. noch keine Antwort gekommen ist, wird auch in 30sek, keine kommen!

Auf den internen Timeout zu warten bringt nur sehr lange und unnötige Laufzeiten und wenn ich Pech
habe bleibt der Thread dann auch noch hängen.

Und einen online-Status per Ping durchzuführen hat sich bei mir und den Abfrage-Zyklen auch nicht als
sehr praktikabel erwiesen. Damit habe ich schon geschafft den Robonect abzuschießen.

Timeout verlängern oder abschalten, im Funktionsskript bei Zeile 1152.
Funktion „url_get_contents“.

Und es ist halt wie es ist, Timeout = offline.

Hallo Manni,

kann man denn die Meldung:

 [02-May-2017 16:38:22 Europe/Berlin] PHP Notice:  Undefined index: time in C:\IP-Symcon_2_0\scripts\Robo_Alfred_Funktionen.ips.php on line 907


</b><br></p><p>Meldung 2<b style='color:#FF0000;'> [02-May-2017 16:38:22 Europe/Berlin] PHP Notice:  Undefined index: error_message in C:\IP-Symcon_2_0\scripts\Robo_Alfred_Funktionen.ips.php on line 908

irgendwie unterbinden, wenn in 3 sec. keine Antwort kommt?

Das hat jetzt nix mit dem 3 sek. Timeout zu tun.
Das ist die Funktion die den Fehlerspeicher ausliest.
Was an den beiden Fehlermeldungen merkwürdig ist, ist die Tatsache, das es wenn dann 3 sein müssten :cool:
date, time und error_message.

Mal folgenden Versuch, im Ausleseskript beim Auslesen des Fehlerspeichers folgendes ändern:



sollte - Zeile 88: den return auskommentieren //return;

sollte - Zeile 147:	if($api_status['status']['status'] != 17 or $forced_update == true){  // von true auf false

sollte - Zeile 151:	$api_error = robo_get_xmltojson($api_content, $debug);	// von $debug auf true
			

Und dann das Skript mal ausführen.

Der Output sollte dann (vielleicht) so aussehen:


Array
(
    [errors] => Array
        (
        )

    [successful] => 1
)

Sorry, waren 3 hatte aber nur die 2 kopiert . Ich habe meinen PC schon aus, teste ich morgen und melde mich dann.

Gesendet von meinem SM-T805 mit Tapatalk