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
define AZ2_Thermostat_Logo notify AZ2_Thermostat:actuator.* {my $cmd = ReadingsNum('AZ2_Thermostat','actuator',0) > 60 ? 'on' : 'off'; fhem("set AZ2_Heizungsschalter $cmd")}
Sind die & wirklich so im Code oder kommt das durch das kopieren ins Forum?
die sind mit Sicherheit so im Code, weil das eine logische Verknüpfung ist. (die übrigens völlig überflüssig ist)
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 & drin - im Web sieht's normal aus. Komisch, ist mir noch nie aufgefallen, dass tapatalk da Unfug macht...
Wo steht denn da &?
(https://uploads.tapatalk-cdn.com/20180114/0006488b00b7b04aec14437441175fa2.jpg)
Das ist aber ein Darstellungsproblem in Deinem Webbrowser / Client.
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...
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:
- von vier möglichen Kombinationen werden nur zwei abgefragt
- das substr() nur um das Prozentzeichen wegzubekommen, ist haarsträubend. Genau dafür gibt es ReadingsNum()
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.
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
ich hätte ja mal in fhem.log geschaut.
und in zeile 2 würde ich die doublequotes entfernen.
my $FHT = "$EVENT";; \
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...
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?
Zeig mal deinen aktuellen Code. Die Fehlermeldung deutet darauf hin, dass du ein } an der falschen Stelle hast.
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ß
Es kommt darauf an, wie/wo Du den Code eingibst. Ggf. mußt Du das Semikolon verdoppeln.
Danke nun geht es. Man sollte doch die Commandozeile nutzen :-)
Setzt du dann noch auf gelöst (Ersten Post bearbeiten und [Gelöst] vor das Subject)?
Danke!
Und: bitte etwas mehr lesen
LG
pah