• Flugfisch-Roboter tankt Wasser, fliegt und taucht 21. September 2019
    Ein Roboter, der sich bewegt wie ein fliegender Fisch: Forscher der des Imperial College London haben eine Flugdrohne entwickelt, die in der Lage ist, ihr Antriebsgas aus dem Wasser zu gewinnen und von der Wasseroberfläche aus zu starten. Nach der Auftankphase kann der Flugfisch-Roboter mehrmals bis zu 26 Meter weit fliegen und ins Wasser abtauchen.
Know-how für alle

FHEM Batteriestatus anzeigen

Andere Komponenten, wie z. B. FS20 Komponenten, übermitteln keinen Batteriestatus.

Um dort dennoch einen Test darauf zu machen, ob die Batterie evtl. leer ist, kann man z. B. prüfen, wann der letzte Status des jeweiligen Gerätes empfangen wurde, etwa mit folgender Funktion in 99_myUtils.pm:

    sub check_if_alive($) {
  # Expects:
  # 1. Devicename to be checked
  # 2. Age in hours, after the expiry of which with no new state the device will be considered as dead.
  # Returns:
  # 0 -> Device dead
  # 1 -> Device alive
  # 2 -> Error
  my ($Device,$hours_threshold) = @_;
  my ($Device) = @_;
  my $now = time;
  my $Timestamp = ReadingsTimestamp($Device,"state","0");
  if ($Timestamp eq "0") {
    return 2;
  }
 
  my @splitdatetime = split(/ /,$Timestamp);
  my @splitdate = split(/-/, $splitdatetime[0]);
  my @splittime = split(/:/, $splitdatetime[1]);
  my $last_state_time =  timelocal($splittime[2], $splittime[1], $splittime[0], $splitdate[2], $splitdate[1]-1, $splitdate[0]);
  my $age_in_hours = ($now - $last_state_time) / 3600;
 
  if ($age_in_hours > $hours_threshold) {
    Log 1, ("check_if_alive: $Device dead, last state was $age_in_hours hours ago");
    return 0;
  } else {
    return 1;
  }
 
}

Diese Funktion kann man z.B. in einem at je zu prüfendem Gerät regelmäßig (z. B. einmal am Tag um 07:55 Uhr) aufrufen, und testen, ob die letzten 11 Stunden etwas empfangen wurde:

*07:55:55 {
check_if_alive("KS300", 11);
}
 https://klsys.com/2013/10/elektronik/

Print Friendly, PDF & Email