• Wie Ur-Chips und genähter Speicher die Menschen zum Mond brachten 19. Juli 2019
    Die Mondlandung wurde auch durch Pionierarbeit bei Computern möglich gemacht – die bis heute nachwirkt. So wurden erstmals Vorgänger heutiger Chips eingesetzt und die Regeln guten Software-Designs geprägt. Der genähte Speicher setzte sich hingegen nicht durch.

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/