Fehlermeldung Unknown command FHTnominal("FHT_XXXXX"), try help.

Begonnen von juliusha, 04 Januar 2015, 18:37:18

Vorheriges Thema - Nächstes Thema

juliusha

Hallo lb. Forum,
ich bin langsam am Verzweifeln!
Am 22.12.2014 habe ich ein Update gemacht. Seit diesem Zeitpunkt werden alle Aufrufe von Sub's aus meiner 99_myUtils.pm mit der Fehlermeldung "Unknown command ....." quittiert.
Auch Aufrufe aus der Eingabezeile aus Fhem erzeugen identische Fehlermeldungen!
Inzwischen habe ich viel dazu nachgelesen und auch geändert, bzw. wieder zurück geändert, jedoch ohne Erfolg.
Es wäre toll, wenn mal jemand sich meine 99_myUtils.pm anschauen könnte.

(Bis zum 22.12.2014 lief alles ordnungsgemäß!)

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}
###################################################################
#Solltemperatur (auto) eines FHT zur aktuellen Uhrzeit ermitteln
sub
FHTnominal($) {

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)) {
  fhem("set $fht mode auto desired-temp " . ReadingsVal($fht,"day-temp","21.0"));
} else {
  fhem("set $fht mode auto desired-temp " . ReadingsVal($fht,"night-temp","17.0"));
}
}
###################################################################

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail {
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xxxxxxxx\@gmail.com";
my $konto = "xxxxxxxx\@gmail.com";
my $passwrd = "yyyyyyyyyyyy";
my $provider = "smtp.gmail.com:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
###################################################################

sub
FHTTK_status {
my @fhttks = devspec2array("TYPE=CUL_FHTTK");
my @wopen = ();
foreach(@fhttks) {
  my $fhttk_window = ReadingsVal($_, "Window", "nA");
  push (@wopen,$_) if ($fhttk_window eq "Open" );
}
my $num_wopen = @wopen;
my $resultstring='';
if ( $num_wopen gt 0 ) {
  $resultstring="folgende Fenster sind noch offen:\n\n";
  foreach(@wopen) {
   $resultstring.="- ".$_."\n";
   Log 4, "FHTTK_status: ". $_. "noch offen";
  }
} else {
  $resultstring="alle Fenster sind derzeit geschlossen.";
}
return $resultstring;
}
###################################################################
1;


Was habe ich falsch gemacht?

Gruß
Jürgen

betateilchen

Hast Du schonmal nach einem fhem Neustart in das Logfile geschaut, um zu sehen, ob beim Laden der Datei ein Fehler auftritt?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Deine Utils-Datei funktioniert in meinem fhem problemlos.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

juliusha

Hallo Betateilchen,

zuerst einmal recht herzlichen Dank für die schnelle Antwort.

Ich kann da keinen Fehler entdecken.
Hier der Auszug aus der Log-Datei nach dem "shutdown restart"

2015.01.04 20:21:35 1: Including fhem.cfg
2015.01.04 20:21:36 3: telnetPort: port 7072 opened
2015.01.04 20:21:36 3: WEB: port 8083 opened
2015.01.04 20:21:36 3: WEBphone: port 8084 opened
2015.01.04 20:21:36 3: WEBtablet: port 8085 opened
2015.01.04 20:21:37 2: eventTypes: loaded 947 events from ./log/eventTypes.txt
2015.01.04 20:21:38 3: FHZ opening FHZ device /dev/ttyUSB0
2015.01.04 20:21:38 3: FHZ opened FHZ device /dev/ttyUSB0
2015.01.04 20:21:40 3: Opening CUL1 device /dev/ttyACM0
2015.01.04 20:21:40 3: Setting CUL1 baudrate to 9600
2015.01.04 20:21:40 3: CUL1 device opened
2015.01.04 20:21:40 3: CUL1: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2015.01.04 20:21:43 1: Including ./log/fhem.save
2015.01.04 20:21:44 3: initialUsbCheck return value: Unknown command usb, try help.
2015.01.04 20:21:44 2: SecurityCheck:  WEB has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2015.01.04 20:21:44 0: Server started with 120 defined entities (version $Id: fhem.pl 7358 2014-12-29 16:03:31Z rudolfkoenig $, os linux, user fhem, pid 4946)


Was ja merkwürdig ist, ist die Tatsache, daß es bis zum letzten Update lief.
Ich bin mir relativ sicher, daß ich davon keinerlei Änderungen vorgenommen habe.

In den Logmeldungen vor dem restart sehe ich gerade sporadisch eine andere Fehlermeldung, die aber meines erachtens mit meinem CUL_WS (S300TH) zu tun hat:
PERL WARNING: Argument "0,0" isn't numeric in addition (+) at ./FHEM/14_CUL_WS.pm line 148.

Merkwürdig!

Gruß
Jürgen

juliusha

Hallo an alle.

Zum meinem obigen Problem bin ich leider noch keinen Schritt weiter gekommen.
Ich habe inzwischen fhem auf dem Pi völlig neu aufgesetzt (inkl. Pi auf einer neuen SD-Card).
Habe also fhem (von fhem.de) Version vom 29.12.2014 16:03:31 auf meinem Pi. Habe allerdings meine bisherige Config wieder eingespielt.
Fazit: KEINE Änderung, d.h. der Fehler ist immer noch da.
Hat evtl. jemand eine Idee was ich noch machen kann?
Für jeden Tip wäre ich dankbar.

Danke und Gruß

Jürgen

juliusha

Hallo Forum,

das Problem ist behoben, hatte beim Aufruf einen Schreibfehler (Groß-/Kleinschreibung) beim Aufruf der Sub "FHTnominal".

Recht herzlichen Dank an Betateilchen für die Mühe.

Gruß

Jürgen

DJ_Chaos

Hallo!
Ist zwar schon ne Weile her, bin aber auch am verzweifeln.
Bei mir kommt die gleiche Fehlermeldung aber ohne Rechtschreibfehler.
Eingabe ist:
FHTnominal ("FHT_Arbeitszimmer") auf der FHEM Kommandozeile.

Habe es auch schon mit
define AZ_Temp_test notify FHT_Arbeitszimmer {FHTnominal(,,FHT_Arbeitszimmer")}

probiert. Er legt das notify auch an und es wird auch bei einer Aktion (z.Bsp. Schalter) was ausgeführt, kommen aber dann Fehlermeldungen im Logfile:
017.03.24 10:26:51 1: ERROR evaluating my $EVTPART1='26%';my $SELF='AZ_Temp_test';my $EVTPART0='actuator:';my $EVENT='actuator: 26%';my $NAME='FHT_Arbeitszimmer';my $TYPE='FHT';{FHTnominal(,,FHT_Arbeitszimmer")}: Unrecognized character \xE2; marked by <-- HERE after HTnominal(<-- HERE near column 151 at (eval 74) line 1.

Kurios ist auch das bei der Fehlermelung HTnominal anstatt FHTnominal dasteht.

Das ganze soll in meinen vorhandenen und funktionierenden Threshold eingebunden werden.

define Thermostat_Ofen Threshold Temp_Ofen:temperature:1 FHT_Wohnzimmer|set FHT_Wohnzimmer mode manual desired-temp off|set FHT_Wohnzimmer mode auto desired-temp 22.5

Der regelt bei mir einen FHT80 bei Ofenbetrieb auf Mode Manual und off und wenn der Ofen die temperatur nicht mehr hat im Moment wieder auf Auto und 18°C.
Soll dann nat. abhängig von FHTnominal zurückgesetzt werden.
Ob das dann geht weiß ich noch nicht, aber erst muß das FHTnominal laufen.

Weiß mir im Moment keinen Rat mehr. Fehlermeldung bei reload 99_myUtils kommt nicht im Logfile.

Viele
Grüße
Jörg

viegener

Ich weiss nicht mit was Du diese Texte bearbeitest, aber die Anführungsstriche sind definitiv inkorrekte Zeichen. Du solltest so etwas nur in einem Texteditor zusammenstellen, der nicht versucht deutsche Anführungsstriche (unten/oben) einfügt. Hier empfiehlt sich etwas wie notepadpp, wo man encoding direkt einstellen kann. Word oder ähnliches ist ungeeignet.

Bitte Code in Code tags packen (# button)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

DJ_Chaos

Ja Danke erst mal. Lag zumindest bei dem notify an den Anführungszeichen. Nicht nur das die oben und unten waren, sind auch noch von der Darstellung anders. Hatte den Teil aus einem Forum kopiert. das Funktioniert erst mal.
Nur beim Aufruf aus der Kommandozeile von FHEM geht es noch nicht. Zur not muß ich eben das Notify ins Threshold einbinden wenn das funktioniert.
Muß jetzt erst mal auf Arbeit.

Grüße
Jörg

viegener

FHTnominal ("FHT_Arbeitszimmer") auf der FHEM_Kommandozeile kann nicht funktionieren - das ist ein perl funktionsaufruf - Empfehlung mal in der Commandref über Aufruf von perl direkt aus FHEM nachlesen (perl specials)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

DJ_Chaos

Alles klar! Funktioniert jetzt Alles wie gewünscht.
Dachte es wäre ein FHEM Befehl.
Vielen Dank!

Grüße
Jörg