FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mitch am 21 April 2017, 19:40:39

Titel: 99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 21 April 2017, 19:40:39
Hallo,

seit ein paar Tagen habe ich das Problem, dass meine 99_myUtils.pm immer so aussieht:
���g�X��X_s����>ũ��h�K�cO`� �x&N�'�4��-�1Z��Ǧ�K�V���b���EH7�f���&A��=����U��dw4���ɋ����'���M"��9��Q(����W���czzGG���;�O��s���}����=�?��\�p�p ܯ���� ���� u�l��?��?9JV ʧ~V�
xO��`CZ�ܚ{�ӆ�����3�S0�P�.����9LȦe�1�8��0i������X������Ozz���~VB�5�<#��(q+L#x�j�g�<�ͳc�]��6���D�2~)���8XE���R$���;�rŚY��58� �'x
��H�K�z�f֭�`�.�Z�=.��Y���̏8��)������gq�/R�s����>�i�auz�����A-� ���Wmû�1���vE;i�1LS��Vm���+M@�#-�\�b�lQ�F�T��R>�H����l��}̦Se6��2���n�5?��Yh�yd������@�Q�dDd�e-�ڭ�ι]7 u�dk!O�nl��/|8 3ƿ���wTw����y�4�S��H���x��y��$��ک<�4��������9�sɽ(0� ���#�(g 4;,�9�@��Z�/�j�/�{��4�C\}�>z/?|W���ym��]Һ�0���71\����0m��r�G��U��t��9��.G��G���r�Quv�;;U�h����)V������h�--�5%0n-�m҇�FS�wK� Ik��cTM�� bG���XQ\f��-
#2# 4���x `���Ae,�{��_r�(���ܹ���?Ψ�SM�K��[�vDK���e�3I:.��HJ1�$>Rj���\L���1�B��������ؓ��r|��EM��ʛL�C�Q���Z���'X�q�0�_�O��3\�R ��W�~�PvLC�8��Q?{�ʘ7��`o���m�����iR�>��si$X�@�ȫ���?���nń`��̆�!���Y�-'���Ve�9�i�[����vG��r촓{��Jc��Ɠ��&��;|4l��Uu�|�g��♝_�o������1~y06rXĭ ��\ig
P,0���u�hLɮ@����`��MQF�nx��:G���/�a(%�Q��*���cu b����3�����y\
�U�~ '�F�*�5,g���9v���pbZ���u���a���ޞ�;}�G��&U�
�1�ir�Tܝ#j%@M�x�Ds(��܅��zd��$ �P�2uFy�|C|l�A
��1�T��cRa�ՎS�M��}m�%�C�в��,��X�K>�3�[��D�{��@X����;����@�·M6����`"0�!�tQ�j\�Q�Ś�׉����@_ ����g����% ��q�K i+����r��������չ�E%��e� �c,����z��檞�*Zg
���s22���x?�Bۡǂ8�c8��*߬�,o}dy d�z �d�Fj!Id�]-�+�Z�ǽYD��k�Z�o��e�e�h����6�ԍ��V嶩iOv[2��$�ƆL�~���JE3@`J"6�I����B��v���'Ѵ�v���,�զj%pkej�wɈ��M�|x���!���e������*��JVZU`M`���%���p_
���Qտ�X�O�O[:���T�ų{���[L_���K���-.jx-S��=t+�걍Rw�7��U埃�n��'b�5P�E�Hr��Nh2��N��i�̧��h���o.}�p�p��h���TNY<=h���.BE�j9�6G��� �Q��z}��c�¶�.6{�muN_=�����ȼ�Ungo[/o�L�mzmT|˦N�C5#�ڵ������*{��,�ȺRȔ�P���n!ՊW�5$�-U\���U����:&���Ru���P�.Qu�T9���WR�g�m����j�<^s��/|���W��0���������،�،�،�،�،�،�،�،����/u=���(��


Ich habe sie schön gelöscht, neu angelegt, über die Web Gui neu gemacht, Backup zurück gespielt usw.

So sollte sie aussehen:
##############################################
# $Id: 99_myUtils.pm 1971 2015-04-24 20:15:33Z mitch $
package main;

use strict;
use warnings;
use POSIX;
use FritzBoxUtils;

sub
myUtils_Initialize($$)
{
my ($hash) = @_;
my $NewMailtime = time;
}

sub trim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   $string =~ s/\s+$//;
   return $string;
}

#sub moon($)
#{
# my ($m) = @_;
# $m = "<none>" if(!$m);
# return "$m ist falsch. Bitte untergang oder aufgang eingeben<br>";
# if $m = "aufgang" {
#  $myrise = {ReadingsVal("WUweather", "moonrise", "-");
#  return = "Mondaufgang: $myrise Uhr"}
# $myset = {ReadingsVal("WUweather", "moonset", "-");
# return = "Monduntergang: $myset Uhr";
#}


###################################################################################
# Adapted WeatherOutput from FHEMWEB
# Store weathericons in www/pgm2/

# Check comment 10 lines below to switch between google icons and local icons
# Include into fhem using
# define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlLocal("MyWeatherName") }
sub
WeatherAsHtmlLocal($)
{
  my ($d) = @_;
  $d = "<none>" if(!$d);
  return "$d is not a Weather instance<br>"
        if(!$defs{$d} || $defs{$d}{TYPE} ne "Weather");

  my $imgHome="http://www.google.com";

##########################
# to use google icons, comment line below and reload this program
$imgHome="/fhem/www/default/weather";            #turn this line into a comment to use google icons, uncomment it to use local icons

##########################

  my $ret = "<table>";
  my $icon = ReadingsVal($d, "icon", "na.png");
  $icon =~ s,/ig/images/weather(.*)\.gif,$1\.png, if ($imgHome =~ m/fhem/);

  $ret .= sprintf('<tr><td><span id="weathericon"><img src="%s%s"></span></td><td><span id="weathertext">%s<br>temp %s, hum %s, %s</span></td></tr>',
        $imgHome, $icon,
        ReadingsVal($d, "condition", ""),
        ReadingsVal($d, "temp_c", ""), ReadingsVal($d, "humidity", ""),
        ReadingsVal($d, "wind_condition", ""));

  for(my $i=1; $i<=4; $i++) {
    my $icon = ReadingsVal($d, "fc${i}_icon", "na.png");
    $icon =~ s,/ig/images/weather(.*)\.gif,$1\.png,  if ($imgHome =~ m/fhem/);
    $ret .= sprintf('<tr><td><span id="weathericon"><img src="%s%s"></span></td><td><span id="weathertext">%s: %s<br>min %s max %s</span></td></tr>',
        $imgHome, $icon,
        ReadingsVal($d, "fc${i}_day_of_week", ""),
        ReadingsVal($d, "fc${i}_condition", ""),
        ReadingsVal($d, "fc${i}_low_c", ""), ReadingsVal($d, "fc${i}_high_c", ""));
  }

  $ret .= "</table></div>";
  return $ret;
}

sub FHTnominal($) {
# Solltemperatur (auto) eines FHT zur aktuellen Uhrzeit ermitteln
  my($fht) = @_;
  my $jetzt = strftime("%R", localtime(time));
  my @wdays = qw(sun mon tue wed thu fri sat);
  my $tag = $wdays[strftime("%w", localtime(time))];
  my $f1 = ReadingsVal($fht,$tag . "-from1","00:00");
  my $f2 = ReadingsVal($fht,$tag . "-from2","00:00");
  my $t1 = ReadingsVal($fht,$tag . "-to1","24:00");
  my $t2 = ReadingsVal($fht,$tag . "-to2","24:00");

  if(($jetzt ge $f1 && $jetzt le $t1) || ($jetzt ge $f2 && $jetzt le $t2)){
     if (ReadingsVal("d_ECOMode_counter", "state", "0") eq "1") {
       fhem("set $fht desired-temp " .
ReadingsVal($fht,"day-temp","21.0")-2)
  } else {
  fhem("set $fht desired-temp " .
ReadingsVal($fht,"day-temp","21.0"))
  }} else {
    fhem("set $fht desired-temp " .
ReadingsVal($fht,"night-temp","14.0"))
  }
}

sub ecomode {
    if (ReadingsVal("d_ECOMode_counter", "state", "0") eq "0") {
        {
        my @FHT=devspec2array("TYPE=FHT");
        foreach(@FHT) {
            my $tp = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tp)
                }
            }
        }
        {
        my @HM_HT=devspec2array("HZ_.*._Clima");
        foreach(@HM_HT) {
            my $tpHM = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tpHM)
                }
            }
        }
        {
        my @HM_WT=devspec2array("HZ_.*._WT_Climate");
        foreach(@HM_WT) {
            my $tpWT = ReadingsVal("$_", "desired-temp", "")-2;
            if (ReadingsVal("$_", "desired-temp", "") > "16") {
                fhem("set $_ desired-temp ".$tpWT)
                }
            }
        }
    }
    fhem("set d_ECOMode_counter 1")
}

sub winOpenStart($;$) {
    #Als Parameter muss der device-Name übergeben werden
    my $dev=shift(@_);
   
    #Optional kann noch ein Zähler für das erneute Triggern übergeben werden,
    #dieser ist per default 0
    my $retrigger=shift(@_);
    $retrigger=0 if (!$retrigger);
   

    #Erst mal prüfen, ob das übergebene device überhaupt existiert
    if ($defs{$dev}) {
   
        #Aus dem device, sofern vorhanden das Attribut winOpenMaxTrigger auslesen, das
        #angibt, wie oft eine Meldung ausgegeben werden soll.
        #Fehlt dieses Attribut oder ist 0, dann wird für das device gar keine Offen-Meldung ausgegeben
        my $maxtrigger=AttrVal($dev,'winOpenMaxTrigger',0);
   
        if($maxtrigger) {
   
      #Festlegen des Namens für den Timer, der angelegt wird um die Meldung nach gewünschter
          #Zeit auszugeben.
          my $devtimer='OpenTimer_'.$dev;

          #Sollte dieser Timer bereits existieren, so wird er zunächst gelöscht.
          fhem("delete $devtimer") if ($defs{$devtimer});

 
          #Holen von weiteren Attributen, sofern vorhanden:
         
          #Zeit, nach der die Meldung ausgegeben werden soll
          #Default sind 10 Minuten, falls nicht angegeben
          my $waittime=AttrVal($dev,'winOpenTimer','00:10:00');

          #Zeit für die Folge-Meldungen, sofern abweichend angegeben
          #Default ist die normale Zeit, die oben schon ermittelt wurde
          my $devtimer2=AttrVal($dev,'winOpenTimer2',$waittime);

          #Ein eventuell definierter "schöner" Name für das Device, der in der Meldung ausgegeben werden soll.
          #Ist der nicht angegeben, wird das Device-Alias genommen, fehlt auch das, wir einfach der
          #device-Name genommen.
          my $devname=AttrVal($dev,'winOpenName',AttrVal($dev,'alias',$dev));
         
          #Eine Art Typ (Tür oder Fenster), der bei mir quasi im Betreff der Offen-Meldung angegeben wird
          my $devtype=AttrVal($dev,'winOpenType','Fenster/Tür');

          #Hier wandeln wir noch den state des devices in deutschen Klartext um
          my $devstate='offen';
          $devstate='gekippt' if (ReadingsVal($dev,'state','') eq 'tilted');
         
          #Hier wird, sofern bereits eine Wiederholung der Offen-Meldung ausgegeben werden soll,
          #dies textlich auch so berücksichtigt.
          my $immer='noch ';
          $immer='immer noch ' if ($retrigger>0);

          #Jetzt wird der Ausgabebefehl für die Offenmeldung zusammengebaut
          #(Ich habe eine sub PushInfo, die Betreff und Text als Parameter erhält und aktuell
          # meine Meldungen über Pushover ausgibt)
          #my $pushcmd="PushInfo('$devtype','$devname ist $immer $devstate');;";
          my $pushcmd=fhem ("set Pushover msg 'FHEM-WARNUNG' '$devtype: $devname ist $immer $devstate'");
          #fhem ("set Pushover msg 'FHEM-WARNUNG' '$alias $EVENT'");;\
         
          #Sind wir schon beim Einrichten einer Folgemeldung, muss die Wartezeit für die Folgemeldungen
          #genommen werden.
          $waittime=$devtimer2 if ($retrigger);

          #Wir erhöhen hier den Trigger-Zähler um 1...
          $retrigger+=1;
          #... und fügen das Re-Triggern als weitere Code-Zeile für das at-DEF an.
          #das sorgt dann dafür, dass diese Funktion hier nach Ablauf des Timers einfach wieder
          #getriggert wird, um einen neuen Timer anzulegen für die Folgemeldung
          $pushcmd.="winOpenStart('$dev','$retrigger');;" if($retrigger < $maxtrigger);

         
          #Nachdem wir hier alles zusammen haben,
          #legen wir den Timer (das at) an und legen ihn freundlicherweise in den, bzw. die
          #selben Räumen ab, wie auch das auslösende device.
          fhem("define $devtimer at +$waittime {$pushcmd}");
          #fhem("attr $devtimer room ".AttrVal($dev,'room','Unsorted'));
        }
    }
}

sub winOpenStop($) {
    #Dazu muss das entsprechende device (TK/FK) per Name hierher übergeben werden

    #Den übergebenen device-Namen holen
    my ($dev)=@_;

    #Den Namen des Timers zusammenbauen
    my $devtimer=$dev.'_OpenTimer';
       
    #Existiert ein Timer diesen Namens, so wird er jetzt gelöscht und das war's auch schon.
    if ($defs{$devtimer}) {
        fhem("delete $devtimer");
    }
}

sub TuerAufKeller {
if (ReadingsVal("HCKF", "currValue", "0") > "14"){
    fhem("set HZ_Kellerflur_Clima desired-temp 8.0")
}
}

sub TuerZuKeller {
        my $ktemp = ReadingsVal("HCKF", "currValue", "14");
        fhem("set HZ_Kellerflur_Clima desired-temp ".$ktemp)
}

sub statusFensterOffen() {
  my @monitored=devspec2array("window=open");
  my $cnt_devs=@monitored;
  my $i = 0;
  my $msgtext = "";
  foreach(@monitored) {
  $msgtext .= AttrVal($_,"alias",$_);
  if ($i < $cnt_devs - 2) {
    $msgtext .= ", ";
  }
  if ($i == $cnt_devs - 2) {
    $msgtext .= " und ";
  }
  $i++;
  }
  if ($cnt_devs > 0) {
    fhem ("set Pushover msg 'FHEM-WARNUNG' '$msgtext Fenster noch offen'");
    #fhem ("set Telegram msg $msgtext Fenster noch offen");
  } else {
fhem ("set Pushover msg 'FHEM' 'Alle Fenster zu'");
    #fhem ("set Telegram msg Alle Fenster zu");
  }
}

sub tempFlur2HM() {
  my $Tist=ReadingsVal("NC_WS_23_0","temperature",20.0);
  my $Tsoll=ReadingsVal("vTemp_Sensor_Flur","temperature",20.0);
  if($Tist ne $Tsoll) {
    fhem("set vTemp_Sensor_Flur virtTemp $Tist")
  } 
}

sub temp2HM() {
  #my $TistFlur=ReadingsVal("NC_WS_23_0","temperature",20.0);
  my $TistBuero=ReadingsVal("NC_WS_63_2","temperature",20.0);
  #my $TistCarlotta=ReadingsVal("NC_WS_6E_0","temperature",20.0);
  #my $TistLeoni=ReadingsVal("NC_WS_7_2","temperature",20.0);
    #fhem("set vTemp_Flur_Sensor virtTemp $TistFlur");
    fhem("set vTemp_Buero_Sensor virtTemp $TistBuero");
    #fhem("set vTemp_Carlotta_Sensor virtTemp $TistCarlotta");
    #fhem("set vTemp_Leoni_Sensor virtTemp $TistLeoni")
}

sub flurlichtMitch() {
  fhem("set Markus.Homestatus.Dummy on");
  fhem("define Markus.Homestatus.Dummy.Off at +00:10:00 set Markus.Homestatus.Dummy off")
}

sub flurlichtSimone() {
  fhem("set Simone.Homestatus.Dummy on");
  fhem("define Simone.Homestatus.Dummy.Off at +00:10:00 set Simone.Homestatus.Dummy off")
}

sub EBUSrecover($$)
{   
  my ($evt,$num) = @_;
  Log 1,"[Vaillant_EBUS] Recover triggered from $evt, attempt No. $num";
  if(Value("Vaillant_EBUS") ne "opened"){
    if( $num < 7){
      $num++;
      fhem("set Vaillant_EBUS reopen");
      fhem("set Pushover msg 'FHEM-WARNUNG' 'EBUS Adapter nicht verfügbar starte Reconnect'");
      fhem("define EBUSrecoverdly at +00:00:05 {EBUSrecover('EBUSrecover',$num)}")
    }else{
      fhem("set Device.warn Vaillant_EBUS");
      fhem("set Pushover msg 'FHEM-WARNUNG' 'EBUS Adapter konnte nicht reconnected werden'");
    }
  }
}

sub MuellChecker() {
  my $MuellText=ReadingsVal("myAbfall","next_text","");
  fhem("set myAbfallDummy $MuellText")
}

sub Callmonitor() {
  my $extnumber=(ReadingsVal("Anrufmonitor","external_number",99));
  my $extname=(ReadingsVal("Anrufmonitor","external_name",99));
  my $caller= "$extname - $extnumber";
  my $msg = "showdialog -time 15 -text $caller -header Anruf von";
  system ("printf '$msg' | nc 192.168.0.7 1450");
}

sub eq3StateFormat() {
  my $name = "eq3";

  my $ret ="";
  my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");
  $ret .= '<div style="text-align:left">';   
  $ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/downloads.html">homematic</a>-fw-check => '.$lastCheck;   
  $ret .= '<br><br>';   
  $ret .= '<pre>';   
  $ret .= "| device                  | model                   | old_fw | new_fw | release    |\n"; 
  $ret .= "------------------------------------------------------------------------------------\n"; 
  my $check = ReadingsVal($name,"newFwForDevices","???");   
  if($check eq "no fw-updates needed!") {       
    $ret .= '| '.$check.'                                                            |';     
  } else {         
    my @devices = split(',',$check);         
    foreach my $devStr (@devices) {
      my ($dev,$md,$ofw,$idx,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;         
      my $link = ReadingsVal($name,"fw_link-".$idx,"???");           
      $ret .= '| ';         
      $ret .= '<a href="/fhem?detail='.$dev.'">';           
      $ret .= sprintf("%-23s",$dev);             
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= '<b'.(($md eq "?")?' title="missing attribute model => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';           
      $ret .= sprintf("%-23s",$md);         
      $ret .= '</b>';           
      $ret .= " | ";             
      $ret .= '<b'.(($ofw eq "0.0")?' title="missing attribute firmware => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';             
      $ret .= sprintf("%6s",$ofw);           
      $ret .= '</b>';           
      $ret .= " | ";             
      $ret .= '<a title="eq3-firmware.tgz" href="'.$link.'">';           
      $ret .= '<b style="color:red">';           
      $ret .= sprintf("%6s",$nfw);           
      $ret .= '</b>';           
      $ret .= '</a>';           
      $ret .= " | ";             
      $ret .= sprintf("%-10s",$date);           
      $ret .= " |\n";       
    }   
  } 
  $ret .= '</pre>'; 
  $ret .= '</div>'; 
  return $ret;
}

sub windChill($)
{
  my ($name) = @_;
  my $temp = ReadingsVal($name, "temperature", 0);
  #my $wind = ReadingsVal($name, "windSpeed_kmh", 0);
  my $wind = ReadingsVal($name,"windSpeed", 0)*3.6;
  my $var = sprintf ("%.1f", 13.12 + 0.6215 * $temp - 11.37 * $wind**0.16 + 0.3965 * $temp *$wind**0.16 );
 
  return ($temp < 10 && $wind > 5 ? $var : "---");
}

sub Wetteransage() {
  my $Condition=ReadingsVal("MyWeather","fc1_condition","");
  my $Temperature=ReadingsVal("MyWeather","fc1_high_c","");
  my $Actual=ReadingsVal("WH1080","temperature","");
  my $Rain=ReadingsVal("Regensensor_Rain","deutsch","");
  fhem("set Nexus ttsMsg Die Wettervorhersage für heute lautet $Condition, die Temperatur wird bei maximal $Temperature Grad liegen, derzeit $Actual Grad und $Rain")
}

sub SonosGroups() {
    if (ReadingsVal("Sonos.Gruppen", "state", "") eq "Wohnzimmer"){
        fhem("set Sonos Groups [Sonos_Kueche, Sonos_Essen, Sonos_Wohnzimmer]");
        fhem("set Sonos Groups [Sonos_Bad]");
        fhem("set Sonos Groups [Sonos_Buero]");
        fhem("set Sonos Groups [Sonos_Leoni]");
        fhem("set Sonos_Kueche Volume 5");
        fhem("set Sonos_Essen Volume 5");
        fhem("set Sonos_Wohnzimmer Volume 10")
    }
    if (ReadingsVal("Sonos.Gruppen", "state", "") eq "Küche"){
        fhem("set Sonos Groups [Sonos_Kueche, Sonos_Essen]");
        fhem("set Sonos Groups [Sonos_Wohnzimmer]");
        fhem("set Sonos Groups [Sonos_Bad]");
        fhem("set Sonos Groups [Sonos_Buero]");
        fhem("set Sonos Groups [Sonos_Leoni]")
    }
    if (ReadingsVal("Sonos.Gruppen", "state", "") eq "Unten"){
        fhem("set Sonos Groups [Sonos_Kueche, Sonos_Essen, Sonos_Wohnzimmer, Sonos_Buero]");
        fhem("set Sonos Groups [Sonos_Bad]");
        fhem("set Sonos Groups [Sonos_Leoni]")
    }
    if (ReadingsVal("Sonos.Gruppen", "state", "") eq "Alle"){
        fhem("set Sonos Groups [Sonos_Kueche, Sonos_Essen, Sonos_Wohnzimmer, Sonos_Buero, Sonos_Bad, Sonos_Leoni]")
    }
    if (ReadingsVal("Sonos.Gruppen", "state", "") eq "Auflösen"){
        fhem("set Sonos Groups Reset")
    }
}
       
1;


Jemand eine Idee?
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: RaspiLED am 21 April 2017, 19:48:35
Hi,
chkdsk auf der SD Karte sagt was?
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: DeeSPe am 21 April 2017, 21:13:33
Klingt für mich auch nach sterbender SD Karte!

Aber warum verwendest Du extra Funktionen mit diesen dummy-at Konstrukten?
Wäre doch leichter "set Markus.Homestatus.Dummy on-for-timer 600" zu benutzen.


Gruß
Dan
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 21 April 2017, 22:31:11
1. chdsk gibt es so auf Linux nicht, Linux checkt das selber beim start
2. habe ich keine SD Karte, ist ein NUC mit HDD
3. auch wenn defekte Blöcken auf der Platte wären, würde bei einem neue kopieren der Datei aus dem Backup (NAS) diese auf anderen Sektoren liegen und somit sicher nicht wieder zerschossen werden
4. ist das Problem genau bei dieser einen Datei, weswegen ich auch hier nochmals Bad Sektors ausschließen kann

@DeeSPe: das mit dem Dummy ist eine gute Idee, muß mal sehen, wie und ob ich das umbaue, Danke.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: CoolTux am 22 April 2017, 08:20:16
Zitat von: Mitch am 21 April 2017, 22:31:11
1. chdsk gibt es so auf Linux nicht, Linux checkt das selber beim start

Nennt sich unter Linux fsck. Vorher die entsprechende Partition unmounten als readonly remounten.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 22 April 2017, 10:08:14
Danke, kenne ich.
Wie gesagt es liegt nicht an der Platte, habe ich gecheckt.

Es muss etwas softwareseitiges sein.
Es passiert auch nur mit diesem einem File.
Ich kann noch nicht sicher sagen, wann genau.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: CoolTux am 22 April 2017, 11:18:49
Hast du configDB oder fhem.cfg
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 22 April 2017, 11:52:37
fhem.cfg aber ich habe den Fehler gefunden.
Wie vermutet ein Softwarefehler aufgrund eines Benutzerfehlers  :-[
Ich habe mal die Logs analysiert und mir die Datenzugriffe mit Zeit und Datum henauer angesehen.
Die Datei wurde genau heute nacht um 4 Uhr zerschossen. Genau da läuft mein Backupscript, also habe ich mir diesen angesehen und beim dritten Mal lesen viel mir ein Tipfehler auf.
Ich hoffe das wars jetzt. Der Script lief auf jedenfall ohne Fehler, mal sehen, wie die Datei morgen aussieht.

Danke für eure Tips.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: CoolTux am 22 April 2017, 12:23:21
Also der Tippfehler würde mich mal interessieren. Vielen kann ein Backup-Script ein File zerschießen? Es sein denn es ist auf Manipulation aus. Mache sowas ähnliches bei meinem Firewall Script damit FHEM die Routerfirewall manipulieren kann.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 22 April 2017, 12:50:28
Bin gerade unterwegs, aber stell den Script später am ein.
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: Mitch am 22 April 2017, 14:43:59
Das ist der Teil vom Script (korrigiert):
backupnameutils=`date "+fhem-myUtils-%Y%m%d-%H%M.tar.gz"`
sudo tar -czvf $backupnameutils /opt/fhem/FHEM/99_* &>/dev/null
echo myUtils Backup erstellt


So war es vorher, als es immer die Datei zerschossen hat:
backupnameutils=`date "+fhem-myUtils-%Y%m%d-%H%M.tar.gz"`
sudo tar -czvf $backuputils /opt/fhem/FHEM/99_my* &>/dev/null
echo myUtils Backup erstellt


Warum das genau die eine Datei zerschiesst, verstehe ich nicht ganz, es liegt aber an der Variabel backupnameutils
Titel: Antw:99_myUtils.pm zerschießt sich selber
Beitrag von: choenig am 22 April 2017, 17:18:22
Zitat von: Mitch am 22 April 2017, 14:43:59
Warum das genau die eine Datei zerschiesst, verstehe ich nicht ganz, es liegt aber an der Variabel backupnameutils

Ds ist offensichtlich. Wenn die Variable nicht gefüllt ist, nimmt er als ziel des tar befehls die erste Datei, die 99_my... heisst (da dort dann -f 99_my... steht), und so landet dann das backup in deiner myUtils :)

LG
Christian