Erfahrung HMS 100 T/TF

Hallo zusammen,

ich habe 8 HMS 100 T und 3 TF im Einsatz. Dabei habe ich die Erfahrung gemacht, dass diese immer wieder mal für längere Zeit keine Daten senden (resp. die FHZ keine Daten empfängt). Dabei sind es immer wieder unterschiedliche die nicht melden und dies auch durchaus mal für längere Zeit (mehrere Tage) - und dann geht es plötzlich wieder.

Auch so Dinge wie Batterien wechseln, an andere Standorte verlegen, direkt neben die FHZ hängen, etc. nicht wirklich Besserung bringen. Und dann geht es plötzlich wieder…

Die HMS kommen alle aus unterschiedlichen Zeiträumen, teilweise gebraucht, teilweise neu - also ein „Seriendefekt“ kann praktisch ausgeschlossen werden.

Meine Frage: Habt ihr mit den HMS Geräten ähnliche Erfahrungen gemacht ? Habt ihr funkbasierte Alternativen, die verlässlicher sind ?

Viele Grüße
Martin

meine laufen seit jahren ohne probs, sogar die im fahrzeug
ich vermute, der sendezyklus liegt bei ~10min, wenn jetzt ein paar geräte einige sekunden kürzer oder länger den zyklus haben, dann treffen sich die aussendungen irgendwann einmal (vllt sogar regelmässig) und überlagern sich und dann kommt nur noch müll in der fhz an. und sie sind tot.
nimm doch mal einen empfänger (dab-stick o scanner) und lausch mal in die frequenz rein, wenns mal wieder soweit ist

Also ich ein 12 Stueck im Einsatz und hatte es auch schon das sich einige nicht meldeten.
In den letzten 5 Jahren so 3 mal. Konnte es aber immer auf die Batterien schieben.
Hab mir deshalb eine Uebersicht gebastelt die mir anzeigt :
letzte Meldung ,
Anzahl der Meldungen in den letzten 24 Stunden,
Anzahl der Meldungen in der letzten Stunden,
In einer Stunden senden die 12-13 mal.
In 24 Stunden so ca 280 mal.
Die KS300 sendet oefters.
Wenn 30 Minuten kein Daten dann schick ich mir eine Meldung.
Auf dem Bild sieht man, dass mein oberster Fuehler heute morgen ausgefallen
ist. In den letzen 24 Stunden hat er aber 266 mal gesendet, also fuer mich ist
das OK. Ich weiss was fuer ein Fehler der hat. Die Batteriekontakte muessen mal
nachgebogen werden wenn ich nach Hause komme. Passiert bei dem im Kuehlschrank ab und zu.
An den Zahlen kann ich ganz gut sehen ob sich ein Ausfall anbahnt, weil ich von manchen gar keine
Meldung bekomme ‚Batterie leer‘ ,sondern die senden dann deutlich weniger.

Ok, dann werde ich mal schauen was mein Funknetz so hergibt :slight_smile: Vermutlich ist es ja doch ein Störsignal einer beliebigen 868 MHz Komponente - entweder die eigenen oder meine Nachbarn haben aufgerüstet :slight_smile:

Ich benutze ein Skript welches mir meldet wenn Komponenten mehr als X Stunden keine Aktualisierung mehr gesendet haben - daher habe ich immer einen recht guten Überblick was „gerade schon wieder nicht“ funktioniert…

Danke für die Tipps und die Erfahrungen - Sobald ich von Geschäftsreise zurück bin mache ich mich auf die Suche…

Viele Grüße
Martin

@1007

Könntest Du das Skript hier veröffentlichen? Danke

Mach ich , wenn ich vom Springen zurueck bin.

Springen? :slight_smile:

Ok SUPI.

http://www.cubictwo.de/images/thumb/9/9d/R0024069.JPG/800px-R0024069.JPG
:D:D:D

Ach du Schande. Nimm das Skript mit, Bitte.:smiley:

Na dann viel Glück und Spaß.

Hab es noch ein bisschen verschoenert.
Ich hab fuer jeden Fuehler ein zusaetzliche Variable ( Counter ) die beim
Empfang um 1 hochgezaehlt wird.
Counter.png

fs20.zip (1.39 KB)

Hi 1007,

ich habe Dein Skript angepasst auf meine Umgebung, scheitere aber an einer Stelle:

Warning:  Objekt Counter wurde nicht gefunden in C:\IP-Symcon\scripts\21500.ips.php on line 60

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\21500.ips.php on line 62

Warning:  Objekt Error wurde nicht gefunden in C:\IP-Symcon\scripts\21500.ips.php on line 66

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\21500.ips.php on line 66

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\21500.ips.php on line 68

Warning:  Variable #0 existiert nicht in C:\IP-Symcon\scripts\21500.ips.php on line 69

Klar, wenn er „Counter“ nicht findet sind das Folgefehler. Allerdings habe ich unter jedem Sensor eine Integer Variable „Counter“ und eine Boole „Error“ - die auch fleissig vom Skript befüllt werden.

Da das Skript dann irgendwann aussteigt (Abort Processing during exceed of maximal ErrorCount: Variable #0 existiert nicht), wird auch die HTML Variable nicht mehr beschrieben…

Irgendwelche Tipps ? Ich hab mir mal den Inhalt von $sensoren nach dem array ausdrucken lassen - das sah gut und auch vollständig aus.

Hier nochmal das angepasste Skript:

<?

	if ( $_IPS['SENDER'] == 'Variable' )
	   {
		FS20CounterUpdate($_IPS['VARIABLE']);
		return;
		}

   ContentUpdate();


function ContentUpdate()
	{
	GLOBAL $debug;

	$ah = 18888 /*[Archive Handler]*/;   // Archiv ID
	$tdheight = 42;
	$textgroesse = 5;
	$textgroesse2 = 3;
	$border = 0;
	$hgcolor = '#838383';
	$hgerror = '#CC3333';

	$contentid = IPSUtil_ObjectIDByPath('Program.Test.FS20_Übersicht');

	$sensoren = array
			(
			//       VariableID  , Text in der Anzeige , Farbumschlag bei x pro Tag (normal=270/490) , Farbumschlag bei x pro Stunde (normal=13)
			array(IPSUtil_ObjectIDByPath('Sensoren.Tiefkuehlung')		,'Tiefkuehlung'		,200,10),
	   	array(IPSUtil_ObjectIDByPath('Sensoren.Aussentemperatur')	,'Aussentemperatur'	,200,10),
			array(IPSUtil_ObjectIDByPath('Sensoren.Temperatur.TF_Bad')				,'Bad'		,200,10),
			array(IPSUtil_ObjectIDByPath('Sensoren.Temperatur.TF_Werkstatt')				,'Werkstatt'				,200,10),
			array(IPSUtil_ObjectIDByPath('Sensoren.Temperatur.Temperatur_Wohnzimmer')						,'Wohnzimmer'			,200,10),
			array(IPSUtil_ObjectIDByPath('Sensoren.Temperatur.Temperatur_Schlafzimmer')				,'Schlafzimmer'		,200,10),
			array(IPSUtil_ObjectIDByPath('Sensoren.Temperatur.Temperatur_Kueche')					,'Küche',200,10),
		/*	array(IPSUtil_ObjectIDByPath('Hardware.FS20.Temperaturfuehler.Wohnen.Wohnen.Temperatur')				,'Wohnzimmer'			,200,10),
			array(IPSUtil_ObjectIDByPath('Hardware.FS20.Temperaturfuehler.Wohnen.Ofen.Temperatur')					,'Ofen Wohnzimmer'	,200,10),
			array(IPSUtil_ObjectIDByPath('Hardware.FS20.Drucksensor.Bett.RawData')										,'Drucksensor'			,200,10),
			array(IPSUtil_ObjectIDByPath('Hardware.FS20.Helligkeitssensor.Sensor1.RawData')							,'Helligkeitssensor'	,200,10),
			array(IPSUtil_ObjectIDByPath('Hardware.FS20.Wetterstation.KS300 Wetterstation.Temperatur')			,'Wetterstation'		,400,20),
	     */ );

	$now = time();

	$html = "";
	$html .= "<table border='$border'  width='100%'  CELLSPACING='0' >";
	$html .= "<colgroup>";
	$html .= "<col width='20%'>";
	$html .= "<col width='20%'>";
	$html .= "<col width='20%'>";
	$html .= "<col width='10%'>";
	$html .= "<col width='10%'>";
	$html .= "</colgroup>";

	foreach ( $sensoren as $sensor )
		{

		$name = $sensor[1];

		$cid = IPS_GetVariableIDByName('Counter', IPS_GetParent($sensor[0]));

		$array = IPS_GetVariable($cid);
   	$updatet = $array["VariableUpdated"];
		$updatet = date('d.m.Y H:i:s',$updatet);

		$error = GetValueBoolean(IPS_GetVariableIDByName('Error',IPS_GetParent($sensor[0])));

		$day   = AC_GetLoggedValues($ah,$cid,$now-(3600*24),$now,0);
		$hour  = AC_GetLoggedValues($ah,$cid,$now-(3600),$now,0);

		$counttag = count ($day);
		$countstd = count ($hour);


		if ( $counttag < $sensor[2] or $countstd < $sensor[3] )
		   $color = $hgerror;
		else
		   $color = $hgcolor;

		$html .= "<tr  BGCOLOR=$color height='".$tdheight."'>" ;

		$html .= "<td><font size=".$textgroesse.">" . $name 		. "</font></td>";
		$html .= "<td><font size=".$textgroesse.">" . $updatet 	. "</font></td>";
		$html .= "<td align='center'><font size=".$textgroesse.">" . $counttag 	. "</font></td>";
		$html .= "<td align='center'><font size=".$textgroesse.">" . $countstd 	. "</font></td>";
		if ( $error )
			$html .= "<td><img src='/user/icons/fixed/alarm.gif' width='40' height='40' align='center'></td>";
		else
			$html .= "<td></font></td>";

		$html .= "</tr>" ;
		$html .= "<tr><td height='6'></td></tr>";
		}


	$html .= "</table>";

	$contentid =IPSUtil_ObjectIDByPath('Program.Test.FS20_Übersicht');

	SetValueString($contentid,$html);
print_r($html);
	}

function FS20CounterUpdate($var)
	{
	GLOBAL $debug;
	//$debug = true;

	if ($debug) IPSLogger_Dbg(__FILE__, 'FS20CounterUpdate '. $var );

	$parent = IPS_GetParent($var);

	$id = IPS_GetVariableIDByName('Counter',$parent);

	$counter = GetValueInteger($id);
	$counter = $counter + 1;
	SetValueInteger($id,$counter);


	}



?>

Gruß
Martin

Zeigen deine IDs in dem Array auf den Temperaturwert oder die Instanze?
Fuege mal an Zeile 59 folgendes ein.

echo $sensor[0];

Es sollte die ID des Temperaturwertes ausgegeben werden.
Dann wird mit

        $cid = IPS_GetVariableIDByName('Counter', IPS_GetParent($sensor[0]));

die ID des Counters gefunden ( richtige Schreibweise ? ).

Ahhh…es ist die Instanz…kaum macht man es richtig :slight_smile:

Hätte ich auch selbst drauf kommen können, jetzt klappt es !

Vielen Dank !

Blue Sky !

Habe zwei S 300 TH - und dasselbe Problem: 4 Minuten sollte der Sendeabstand sein, aber Aussetzer bis 1 oder 2 Stunden (maximal 10) kommen oft vor. Habe die Abstände geloggt, ein Beispiel für diese Woche:

So richtig prickelnd ist es also auch nicht, aber für meine Zwecke reicht es.

Grüße
galleto

Hallo 1007,

einen hab ich noch. Ist eher ein Problem mit dem Skript, welches ich nicht so richtig verstehe:

Wenn ich es manuell ausführe, wird die Variable (HTML Box) aktualisiert, wenn ich sie durch ein Event ausführe nicht. Also das hier:

SetValueString($contentid,$html);

wird nur ausgeführt wenn ich es manuell ausführe…Ideen ?

Gruß
Martin

Meinst du mit Event ein Timerevent oder ein Event ausgeloest durch eine Variable ?

Du kannst ja mal folgendes machen, loesch das „return;“

    if ( $_IPS['SENDER'] == 'Variable' )
       {
        FS20CounterUpdate($_IPS['VARIABLE']);
        return;
        }

   ContentUpdate();

Ein Event ausgelöst durch Aktualisierung (die Events werden auch ausgeführt und die entsprechenden Counter befüllt).

Nachdem ich das „return“ auskommentiert habe, funktioniert es…mal für Dummies - warum ist das so und was genau ändert das ?

Danke !

Viele Grüße
Martin

Wenn das Script durch eine Variablenevent aufgerufen wird , wird nur der Counter erhoeht und dann
beendet ( return ). Ich persoenlich update den Content durch einen Timeraufruf alle 5 Minuten.
Der kommt an der Abfrage

if ( $_IPS['SENDER'] == 'Variable' )

vorbei.
Wenn man das „return“ loescht wird bei jedem Counterupdate auch die HTMLBox neu erstellt.

Ah, ok - danke für die Hilfe !