Übergabe Variable von perl in fhem Ebene

Begonnen von Fritz Muster, 21 Februar 2023, 12:20:58

Vorheriges Thema - Nächstes Thema

Fritz Muster

Zitat von: DeeSPe am 12 März 2023, 17:30:33
Ich nehme an dass diese Funktion sicherstellen soll dass ein Device (mit evtl. schlechtem Funkempfang) auch wirklich eingeschaltet wurde.

Korrekt, das device wird geschaltet, der Trigger lässt die subroutine starten und diese soll dann in Y Intervallen nach X Sekunden prüfen ob device geschaltet hat.

So wie ich den Code verstehe wird das device in der if Schleife sofort geschaltet, das braucht es nicht. Es soll zunächst X Sekunden gewartet werden. Dann soll erneut geprüft werden ob device geschaltet hat. Wenn nicht soll geschaltet werden. Dann wieder X Sekunden warten und erneut prüfen ob device geschaltet hat. Das Ganze soll Y Intervalle erfolgen.

Viele Grüße
Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

DeeSPe

Dann so:
sub myStateCheck
{
  my ($name,$max,$tim,$count) = @_;
  ##### CONFIG START #####
  my $maxi = 1; # Maximale Anzahl an wiederholten Prüfungen wenn keine vorgegeben wurde
  my $time = 5; # Zeit nach der die wiederholte Prüfung stattfinden soll
  ##### CONFIG END #####
  my $state = ReadingsVal($name,'state','');
  $max = $max?$max:$maxi;
  $tim = $tim?$tim:$time;
  $count = $count?$count:0;
  if (!$count)
  {
    $count++;
    fhem "sleep $tim quiet; {myStateCheck('$name',$max,$tim,$count)}";
  }
  elsif ($state eq 'off' && $count<$max)
  {
    # wenn off und Zähler kleiner als Vorgabe dann schalte ein und prüfe in $tim Sekunden wieder
    fhem "set $name on";
    $count++;
    fhem "sleep $tim quiet; {myStateCheck('$name',$max,$tim,$count)}";
  }
  # sonst tue nichts
  # Ende immer mit return
  return;
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe