FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Der_müde_Joe am 14 Januar 2018, 20:15:23

Titel: [gelöst] Fehler in meinem Perl Code
Beitrag von: Der_müde_Joe am 14 Januar 2018, 20:15:23
Hallo ihr lieben,

ich hatte bis letzten Winter folgenden Code erfolgreich laufen und nun wollte ich den wieder benutzen und er tut es nicht mehr. Ich vermute, dass sich durch ein FHEM Update etwas geändert hat, was dazu führt, dass er nicht mehr geht. Kann mir da jemand helfen?

Folgende Funktion soll der Code erfüllen:
Ein FHT80B misst die Raumtemperatur und gibt einen Wert für den Stellmotor der Heizung an FHEM. Den Wert Actuator. NUn soll, wenn der actuator Wert größer als 60% ist ein Steckdosenschalter einschalten und bei unterschreiten entsprechend ausschalten. Also ich steuer mit einem FHT80B3 einen Heizlüfter.


define AZ2_Thermostat_Logo notify AZ2_Thermostat { \
my $FHT = "$EVENT";; \
  if ($FHT =~ "actuator:") { \
    $FHT = (substr($FHT, 9, (length($FHT)-10)));; \
    if (($FHT > 60) && Value("AZ2_Heizungsschalter") eq "off") { \
      fhem("set AZ2_Heizungsschalter on") \
    } \
    else { \
    if (($FHT < 60) && Value("AZ2_Heizungsschalter") eq "on") { \
      fhem("set AZ2_Heizungsschalter off") \
    } \
    } \
  } \
}
attr AZ2_Thermostat_Logo room AZ2


Vielleicht sieht ja einer den Fehler.

Vielen Dank!
Joe
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 14 Januar 2018, 20:27:31

define AZ2_Thermostat_Logo notify AZ2_Thermostat:actuator.* {my $cmd = ReadingsNum('AZ2_Thermostat','actuator',0) > 60 ? 'on' : 'off'; fhem("set AZ2_Heizungsschalter $cmd")}
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 14 Januar 2018, 20:27:50
Sind die &amp; wirklich so im Code oder kommt das durch das kopieren ins Forum?
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 14 Januar 2018, 20:31:02
die sind mit Sicherheit so im Code, weil das eine logische Verknüpfung ist. (die übrigens völlig überflüssig ist)
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 14 Januar 2018, 20:55:25
Zitat von: betateilchen am 14 Januar 2018, 20:31:02
die sind mit Sicherheit so im Code, weil das eine logische Verknüpfung ist. (die übrigens völlig überflüssig ist)
Ich meinte ob da AMP drinsteht...

Edit: Vergessen wir das: In tapatalk steht da &amp; drin - im Web sieht's normal aus. Komisch, ist mir noch nie aufgefallen, dass tapatalk da Unfug macht...
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 14 Januar 2018, 21:03:15
Wo steht denn da &amp?
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 14 Januar 2018, 21:04:56
(https://uploads.tapatalk-cdn.com/20180114/0006488b00b7b04aec14437441175fa2.jpg)
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 14 Januar 2018, 21:14:43
Das ist aber ein Darstellungsproblem in Deinem Webbrowser / Client.
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 14 Januar 2018, 21:23:11
Zitat von: betateilchen am 14 Januar 2018, 21:14:43
Das ist aber ein Darstellungsproblem in Deinem Webbrowser / Client.

Habe ich mittlerweile auch gemerkt und oben ja auch oben schon angemerkt. AMP-Diskussion beendet. Die Frage ist jetzt, ob der_müde_Joe mit der Lösung zufrieden ist, oder ob er verstehen möchte, warum sein Code nicht funktioniert. Ich seh's nicht und bräuchte dazu mehr Infos, z.B. wie das Event im EventLog aussieht...
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 14 Januar 2018, 21:42:40
Zitat von: KernSani am 14 Januar 2018, 21:23:11
Ich seh's nicht und bräuchte dazu mehr Infos, z.B. wie das Event im EventLog aussieht...

Das würde Dir auch nix nützen, ausserdem ist der Event-Aufbau eines FHT80b bekannt.

Es gibt in dem Code mehrere Stellen, die Probleme machen können:

Titel: Antw:Fehler in meinem Perl Code
Beitrag von: RomanticBoy83 am 14 Januar 2018, 21:47:14
Ich kann ersteinmal keinen Fehler finden. Aber hier noch Stichworte zum besser Lesen:
-elsif
-$evtpart[1]
Vermutlich liegt das Problem im falschen event - wurde ja auch schon von anderen vermutet.
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: Prof. Dr. Peter Henning am 15 Januar 2018, 10:12:59
So etwas schreibt man aber auch nicht in eine FHEM-Konfigurationsdatei, sondern in eine echte Perl-Datei (z.B. 99_myUtils,pm). Das kann man wesentlich besser testen und
debuggen.

LG

pah
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: frank am 15 Januar 2018, 11:45:19
ich hätte ja mal in fhem.log geschaut.
und in zeile 2 würde ich die doublequotes entfernen.
my $FHT = "$EVENT";; \
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 15 Januar 2018, 12:59:55
Zitat von: frank am 15 Januar 2018, 11:45:19
und in zeile 2 würde ich die doublequotes entfernen.

die tun aber nix zur Sache.

Zitat von: Prof. Dr. Peter Henning am 15 Januar 2018, 10:12:59
So etwas schreibt man aber auch nicht in eine FHEM-Konfigurationsdatei, sondern in eine echte Perl-Datei (z.B. 99_myUtils,pm). Das kann man wesentlich besser testen und debuggen.

Da hast Du zwar recht, aber diese sinnvolle Vorgehensweise werden wir in diesem Leben wohl nicht mehr in die FHEM Anwender reinbekommen...
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: Der_müde_Joe am 15 Januar 2018, 19:12:32
Hallo,

vielen lieben Dank an die vielen Helfer für die genauso vielen Anregungen und Ideen.

Das man das nicht in die fhem.cfg schreibt weiß ich. Das ist ein Codebrocken, welchen ich mir irgendwann mal mühselig zusammen kopiert und umgebastelt habe. Und somit eine Altlast. Alle anderen Sachen dieses Umfangs stehen bei mir tatsächlich schon in der 99_myutils.pm. Deshalb bin ich auch sehr dankbar für die Lösung oben und dann ich nun diesen "Schandfleck" aus meiner fhem.cfg entfernen kann. Nun muss ich mir noch  mehr angewöhnen die fhem.cfg mit dem Web Interface zu bearbeiten und weniger mit einem Edit Files, dann bin ich stolz auf mich.

Ich habe die alternative Lösung eben in die fhem.cfg opieren wollen und bekomme nun aber ein

Unknown command fhem("set, try help.


Ich habe die Vermutung, dass da was mit den Klemmern nicht passt. Aber obwohl ich schon versucht habe die Klammern zu versetzen klappt das nicht so recht. Vielleicht könnt ihr mir nochmal helfen?
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 15 Januar 2018, 19:38:45
Zeig mal deinen aktuellen Code. Die Fehlermeldung deutet darauf hin, dass du ein } an der falschen Stelle hast.
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: Der_müde_Joe am 15 Januar 2018, 19:44:02
Hi,

ich habe den Code von Betateilchen aus Post 2 genutzt.

define AZ2_Thermostat_Logo notify AZ2_Thermostat:actuator.* {my $cmd = ReadingsNum('AZ2_Thermostat','actuator',0) > 60 ? 'on' : 'off'; fhem("set AZ2_Heizungsschalter $cmd")}

Danke und lieben Gruß
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: betateilchen am 16 Januar 2018, 09:06:30
Es kommt darauf an, wie/wo Du den Code eingibst. Ggf. mußt Du das Semikolon verdoppeln.
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: Der_müde_Joe am 16 Januar 2018, 20:13:49
Danke nun geht es. Man sollte doch die Commandozeile nutzen :-)
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: KernSani am 17 Januar 2018, 00:19:24
Setzt du dann noch auf gelöst (Ersten Post bearbeiten und [Gelöst] vor das Subject)?
Danke!
Titel: Antw:Fehler in meinem Perl Code
Beitrag von: Prof. Dr. Peter Henning am 17 Januar 2018, 07:57:18
Und: bitte etwas mehr lesen

LG

pah