[gelöst] file is not useable

Begonnen von andies, 03 Januar 2020, 21:16:37

Vorheriges Thema - Nächstes Thema

andies

Ich habe seit einigen Tagen eine nicht erklärliche Fehlermeldung:

2020.01.03 21:12:24 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.03 21:12:55 1: ./www/images/openautomation/phone_missed_out.svg is not useable

Diese Dateien gehören zu FBCallmonitor und in der Tat werden die Icons nicht angezeigt. Parallel (gleichzeitig!) meckert FHEM, dass er eine zu Telegram gehörige Datei nicht öffnen könne, die uniqueID-Datei. Nach Neustart geht alles wieder für einen Tag.

Hat jemand eine Idee, wo ich suchen kann?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

könnte das die SD Karte sein?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Otto123

Hi,

das klingt leider so wie SD Card.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

andies

ich hatte es befürchtet. also backup und tauschen...


Gesendet von iPad mit Tapatalk Pro
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Otto123

wäre dann zumindest der Gegenbeweis ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

andies

So, bevor ich das sichere (das ist leider umfangreich, weil ich so viele Dinge an diesem RPI herumgespielt hatte - ich habe den damals eingerichtet und war mir nicht sicher, ob ich jemals FHEM nutzen werde), habe ich folgenden Test gemacht. Ich habe FHEM heruntergefahren, eine Kopie der Dateien/Verzeichnisse angelegt, die angeblich "not useable" sind und dann die Kopie und das Original jeweils umbenannt:
ZitatOriginal => neuer Name mit "_old", Kopie => Anhängsel  "Kopie" entfernt
Berechtigungen gesetzt, FHEM neu gestartet und die Sache läuft bis auf ein Detail, das mit TelegramBot zusammenhängt und vermutlich durch meine Bot-Neustarts erzeugt wurde.

Also ist definitiv die Karte hinüber und muss ersetzt werden.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

ich wusste schon, warum ich mich seit Wochen vor einer kompletten Neuinstallation gedrückt habe, obwohl es ja klar war: https://forum.fhem.de/index.php/topic,107372.0.html

So was läuft nie nach Plan.


Gesendet von iPad mit Tapatalk Pro
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

#7
Hmm, das ist nun sonderbar. Ich habe einen neuen RPi, eine neue SD-Karte und das System komplett neu aufgesetzt. Und auf einmal erscheint im Log

2020.01.19 10:55:33 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 10:57:11 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 10:58:50 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 11:00:12 1: ./www/images/openautomation/phone_answering.svg is not useable
2020.01.19 11:00:12 1: ./www/images/openautomation/phone_answering.svg is not useable

Das waren genau die Fehlermeldungen, weshalb ich die ganze Aktion gestartet hatte. Also ist anscheinend die SD-Karte nicht defekt. Das System ist vom scratch, allein restore habe ich gemacht. Das kann eigentlich nicht sein, oder? Aber was ist es denn dann?

<edit> mit Verbose:
zuerst "API token successfully saved"

2020.01.19 11:14:34 5: TelegramBot_UpdatePoll TelegramBot: called
2020.01.19 11:14:34 5: TelegramBot_UpdatePoll TelegramBot: - Initiate non blocking polling - With callback set
2020.01.19 11:14:34 5: TelegramBot_readToken: Read Telegram API token from file
2020.01.19 11:14:34 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 11:14:34 4: TelegramBot_UpdatePoll TelegramBot: initiate polling with nonblockingGet with 60s
2020.01.19 11:14:34 5: TelegramBot_UpdatePoll TelegramBot: - Ende > next polling started
2020.01.19 11:14:34 5: TelegramBot_Callback TelegramBot: called from Polling
2020.01.19 11:14:34 5: TelegramBot_Callback TelegramBot: data returned :{"ok":false,"error_code":404,"description":"Not Found"}:
2020.01.19 11:14:34 5: TelegramBot_Deepencode TelegramBot: encoded a String from :0: to :0:
2020.01.19 11:14:34 5: TelegramBot_Deepencode TelegramBot: encoded a String from :404: to :404:
2020.01.19 11:14:34 5: TelegramBot_Deepencode TelegramBot: encoded a String from :Not Found: to :Not Found:
2020.01.19 11:14:34 5: TelegramBot_Deepencode TelegramBot: found a HASH
2020.01.19 11:14:34 5: TelegramBot_Callback TelegramBot: after encoding
2020.01.19 11:14:34 5: TelegramBot_Callback TelegramBot: polling returned result? <undef>
2020.01.19 11:14:34 5: TelegramBot_Set TelegramBot: called
2020.01.19 11:14:34 5: TelegramBot_Set TelegramBot: called
2020.01.19 11:14:34 5: TelegramBot_UpdatePoll TelegramBot: called
2020.01.19 11:14:34 5: TelegramBot_UpdatePoll TelegramBot: got fails :108: wait 110 seconds
2020.01.19 11:14:34 4: TelegramBot_Callback TelegramBot: resulted in Callback returned error :Not Found: from Polling
2020.01.19 11:14:34 5: TelegramBot_Callback TelegramBot: - Ende > Control back to FHEM

und dann steht da
2020.01.19 11:15:44 5: TelegramBot_Set TelegramBot: called
2020.01.19 11:15:44 4: TelegramBot_Set TelegramBot: Processing TelegramBot_Set( token )
2020.01.19 11:15:44 4: TelegramBot_Setup TelegramBot: called
2020.01.19 11:15:44 5: TelegramBot_readToken: Read Telegram API token from file
2020.01.19 11:15:44 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 11:15:44 1: TelegramBot_Setup TelegramBot: no valid API token found, please call "set TelegramBot token <token>" (once)
2020.01.19 11:15:44 5: TelegramBot_Set TelegramBot: token failed with :API token successfully saved:
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Was sagen die Rechte von den angemerkten Dateien? Wie sind die Rechte der darüber liegenden Verzeichnisse?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Gerade nochmal hochgesetzt, ohne Änderung:
-rw-rw-rw- 1 fhem dialout  1838 Jan  5 11:48 phone_answering.svg
-rw-rw-rw- 1 fhem dialout  2298 Jan  5 11:48 phone_call_end_in.svg
-rw-rw-rw- 1 fhem dialout  2209 Jan  5 11:48 phone_call_end_out.svg


Ich habe gerade einen anderen Verdacht, weil es ja zwei anscheinend unabhängige Probleme gibt. Der API Telegram token wird angeblich auch nicht gespeichert. Ich habe mir den Quelltext angeschaut und dort ein paar Logs eingebaut (weil ich den Quelltext für die Einbindung der Bilder nicht gefunden habe). Also das Speichern des Telegram Token sieht bei mir jetzt so aus:

sub TelegramBot_storeToken($$;$)
{
    my ($hash, $token, $name) = @_;
     
    if ( $token !~ /^([[:alnum:]]|[-:_])+[[:alnum:]]+([[:alnum:]]|[-:_])+$/ ) {
      return "specify valid API token containing only alphanumeric characters and -: characters";
    }

    $name = $hash->{NAME} if ( ! defined($name) );
   
    my $index = "TelegramBot_".$name."_token";
    my $key = getUniqueId().$index;
    Log3 $hash, 5, "TelegramBot_storeToken: key =".$key;
   
    my $enc_pwd = "";
   
    if(eval "use Digest::MD5;1")
    {
        $key = Digest::MD5::md5_hex(unpack "H*", $key);
        $key .= Digest::MD5::md5_hex($key);
    }
   
    for my $char (split //, $token)
    {
        my $encode=chop($key);
        $enc_pwd.=sprintf("%.2x",ord($char)^ord($encode));
        $key=$encode.$key;
    }
    my $err = setKeyValue($index, $enc_pwd);
    Log3 $hash, 5, "TelegramBot_storeToken: enc_pwd =".$enc_pwd;

    return "error while saving the API token - $err" if(defined($err));
    return "API token successfully saved";
} # end storeToken

und nach der Eingabe sehe ich im Log
2020.01.19 11:45:41 5: TelegramBot_Get TelegramBot: called
2020.01.19 11:45:51 5: TelegramBot_Set TelegramBot: called
2020.01.19 11:45:51 4: TelegramBot_Set TelegramBot: Processing TelegramBot_Set( token )
2020.01.19 11:45:51 5: TelegramBot_storeToken: key =cbb76ab9cd50543b8af153e63c1acc6dTelegramBot_TelegramBot_token
2020.01.19 11:45:51 5: TelegramBot_storeToken: enc_pwd =daswuredeichjetzthiermalnichtwiedergebenweilessogeheimist

Ich weiß aber nicht, wo der Token gespeichert wird (und Dbconf habe ich eigentlich nicht, sondern fhem.cfg - oder legt sich das automatisch an?).  Analog das auslesen, da habe ich umgeschrieben in
sub TelegramBot_readToken($;$)
{
   my ($hash, $name) = @_;
   
   $name = $hash->{NAME} if ( ! defined($name) );

   my $index = "TelegramBot_" . $name . "_token";
   my $key = getUniqueId().$index;

   my ($token, $err);

   Log3 $hash, 5, "TelegramBot_readToken: Read Telegram API token from file";
   Log3 $hash, 5, "TelegramBot_readToken: index =".$index;
   ($err, $token) = getKeyValue($index);
   Log3 $hash, 5, "TelegramBot_readToken: filename err =".$err;
   Log3 $hash, 5, "TelegramBot_readToken: token =".$token;

   if ( defined($err) ) {
      Log3 $hash, 1, "TelegramBot_readToken: Error: unable to read API token from file: $err";
      return "";
   } 
   
   Log3 $hash, 5, "TelegramBot_readToken: token ".$token;
   if ( defined($token) ) {
      if ( eval "use Digest::MD5;1" ) {
         $key = Digest::MD5::md5_hex(unpack "H*", $key);
         $key .= Digest::MD5::md5_hex($key);
      }

      my $dec_pwd = '';
     
      for my $char (map { pack('C', hex($_)) } ($token =~ /(..)/g)) {
         my $decode=chop($key);
         $dec_pwd.=chr(ord($char)^ord($decode));
         $key=$decode.$key;
      }
     
      return $dec_pwd;
   }
   else {
      Log3 $hash, 1, "TelegramBot_readToken: Error: No API token in file";
      return "";
   }
} # end readToken

und hier lese ich:
2020.01.19 11:45:51 5: TelegramBot_readToken: Read Telegram API token from file
2020.01.19 11:45:51 5: TelegramBot_readToken: index =TelegramBot_TelegramBot_token
2020.01.19 11:45:52 1: PERL WARNING: Use of uninitialized value $err in concatenation (.) or string at ./FHEM/50_TelegramBot.pm line 3303.

2020.01.19 11:45:52 5: TelegramBot_readToken: filename err =
2020.01.19 11:45:52 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/50_TelegramBot.pm line 3304.

2020.01.19 11:45:52 5: TelegramBot_readToken: token =
2020.01.19 11:45:52 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/50_TelegramBot.pm line 3311.

2020.01.19 11:45:52 5: TelegramBot_readToken: token
2020.01.19 11:45:52 1: TelegramBot_readToken: Error: No API token in file
2020.01.19 11:45:52 1: TelegramBot_Setup TelegramBot: no valid API token found, please call "set TelegramBot token <token>"
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

./FHEM/FhemUtils/uniqueID

Dort wird das Passwort oder der Token gespeichert



Ich würde ein

chmod -R 755 /opt/fhem/

machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Hat nichts gebracht:
2020.01.19 12:35:46 1: ./www/images/fhemSVG/car.svg is not useable
2020.01.19 12:36:29 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.19 12:36:29 1: ./www/images/openautomation/phone_answering.svg is not useable
2020.01.19 12:36:29 1: ./www/images/openautomation/phone_call_end_out.svg is not useable
2020.01.19 12:36:29 1: ./www/images/openautomation/phone_answering.svg is not useable
2020.01.19 12:36:55 5: TelegramBot_UpdatePoll TelegramBot: called
2020.01.19 12:36:55 5: TelegramBot_UpdatePoll TelegramBot: - Initiate non blocking polling - With callback set
2020.01.19 12:36:55 5: TelegramBot_readToken: Read Telegram API token from file
2020.01.19 12:36:55 5: TelegramBot_readToken: index =TelegramBot_TelegramBot_token
2020.01.19 12:36:55 5: TelegramBot_readToken: filename err =
2020.01.19 12:36:55 5: TelegramBot_readToken: token =
2020.01.19 12:36:55 5: TelegramBot_readToken: token
2020.01.19 12:36:55 1: TelegramBot_readToken: Error: No API token in file

Dabei enthält die Datei uniqueID den Token:
TelegramBot_TelegramBot_token:wiegesagtdaswirdsehrgeheimsein

Das ist doch nicht normal, dass das auf zwei verschiedenen RPis, SD-Karten und zwei Installationen passiert?!
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Könnte die Reihenfolge, in der die Geräte angelegt werden, etwas ausmachen? Dann würde ich FHEM entfernen und händisch alle Geräte noch einmal hinzufügen. Ich habe gestern schon den ganzen Tag damit zugebracht, die eine Stunde kann ich dann auch noch investieren.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

CoolTux

Ich würde einfach FHEM mal im Debug laufen lassen. Siehe Wiki FHEM startet nicht, letzter Abschnitt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

andies

Es war die Reihenfolge. Ich habe die Geräte in der fhem.cfg anders angeordnet (insbesondere die IODev nach vorn) und auf einmal konnte man die svg-Datei wieder sehen, die angeblich verschwunden war. Telegram geht auch wieder.

Das war vielleicht eine Tortur. Danke!
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann