So weit isch weiß ist damit die maximale Sendezeit in dem Frequenzband 868 MHZ gemeint.
Die Geräte dürfen maximal 1% der Zeit etwas von sich geben. Wenn zu viele Sendeaktionen in kurzer Zeit gelaufen sind ist der Sendestatus für eine gewisse Zeit blockiert. Ist bei den FHZ auch so.
hab eine kleine anpassung gemacht und eine zufällige Wartezeit im 100ms Bereich zwischen den Aktualisierungen eingebaut. So machen es die HM Geräte beispielsweise nach einem Stromausfall, damit nicht alle Geräte gleichzeitig senden…
$c = 0;
$meldung = array();
srand ( (double)microtime () * 1000000 );
//fragt den aktuellen Status ab und speichert ihn in der Statusvariable
foreach(IPS_GetInstanceListByModuleType(3) as $id)
{
$instanz = IPS_GetInstance($id);
$instanz = $instanz['ModuleInfo'];
$instanz = $instanz['ModuleName'];
if ($instanz == "HomeMatic Device")
{
$wait = rand (10,200);
IPS_Sleep($wait);
$c+=1;
if (HM_RequestStatus($id, "STATE"))
{ IPS_LogMessage($IPS_SELF, "Status erfolgreich aktualisiert für: ".$id);
$meldung=array_pad($meldung,$c,"Status erfolgreich aktualisiert für: ".$id." (pause:".$wait.")");
}
else
{ IPS_LogMessage($IPS_SELF, "Status konnte NICHT aktualisiert werden! (".$id.")");
$meldung=array_pad($meldung,$c,"Status konnte NICHT aktualisiert werden! (".$id.") (pause:".$wait.")");
}
}
}
for ($i=0;$i<$c;$i++)
echo $meldung[$i]."
";
PS: Paresy: Warum klappt denn der Zeilenvorschub hier nicht? hab alles probiert. siehe Bild.
Hi immergut,
möglicherweise musst du erstmal ein live-update machen. diese Funktion ist recht neu und erst seit ca. 1 Woche in ipsymcon vorhanden.
PS: über die Ausgabe zum Schluss per -echo lässt sich streiten. Aber ich wollte eine saubere Ausgabe Zeile für Zeile ohne „Array (…)“ -texte etc. Aber der Zeilenvorschub klappt nicht!
Vielleicht hat Paresy hier noch einen Tipp für mich?
eine Unklarheit habe ich noch: wird beim Befehl HM_RequestStatus der Status des Geräts per Funk direkt beim Gerät abgefragt, oder „nur“ beim LAN-Adapter?
Hintergrund: ich habe einen Rauchmelder mit herausgezogener Batterie abgefragt und keine Fehlermeldung erhalten.
zu 2) … das @ unterbindet die php-fehlermeldung im browser
zu 3) … === Vergleicht die Variablen ob sie identisch sind… also
$a === $b -> Gibt TRUE zurück wenn $a gleich $b ist und beide vom gleichen Typ sind.
Zu 2) => das hab ich mir schon gedacht.
Zu 3) => komisch, für mich sieht ein Vergleich zweier Werte immer so aus: ‚$a == $b‘, und dafür reichen zwei Stück ‚ist gleich‘
Eine Wertzuweisung besteht aus einem Stück, ein Vergleich aus 2 Stück, weshalb also 3