Hallo,
ich hab eine wirklich blöde Frage und bräuchte einmal Eure Hilfe. Folgende Situation habe ich:
mit dem Befehl systemCommand("php7.0 /home/pi/SetCurve.php 0 0.9
kann ich auf meiner Heizung die Heizkurve setzen 0 für Niveau und 0.9 für die Steigung.
Jetzt habe ich einen Dummy erstellt, mit welchem ich die Steigung über ein PulldownMenü einstellen kann. Das Niveau möchte ich über das Reading aus der dem Heizungs-device ziehen, welches leider nicht funktioniert :-(
SetCurve:.* {
my $Niv=ReadingsVal('vitoconnect100','HK1-Heizkurve-Niveau','0');
systemCommand("php7.0 /home/pi/SetCurve '$Niv' '$EVENT'");
}
Was aber funktioniert ist folgendes:
SetCurve:.* {
systemCommand("php7.0 /home/pi/SetCurve 0 '$EVENT'");
}
Ob jetzt 0 oder 1 oder 2 für die Steigung ist egal. Mit eingetragener Zahl klappt es.
Mein Ziel ist es, über zwei Dummies (einmal Niveau und einmal Steigung) beide Werte getrennt voneinander einzustellen, da aber der Befehl an die Heizung beide Werte enthalten muss, wollt ich den jeweils anderen aus dem aktuellen Reading des Heizungs Devices ziehen.
Ich hoffe das war einigermaßen Verständlich. ::)
Entweder mal die einfachen Hochkommatar bei den Variablen.
In '$EVENT' wird keine Variable aufgelöst.
Ich denke CoolTux meinte nicht Entweder sondern Entferne :)
Hier (https://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html)etwas ausführlicher.
Gruß Otto
Danke Dir Otto. Doofe Rechtschreibkorrektur ;D
Allerdings dürfte das mit seinen " vom systemCommand kollidieren ...
Btw:
Wenn Du in Deinem Script in der ersten Zeile stehen hast (o.Ä.)
#!/usr/bin/php7.0
Brauchst Du das Script nicht direkt mit php zu öffnen, sondern das System sucht sich den selber automatisch raus ....
HK1.Steigung:.* {
my $Niv=ReadingsVal('vitoconnect100','HK1-Heizkurve-Niveau','0');
systemCommand("php7.0 /home/pi/SetCurve.php $Niv '$EVENT'");
}/code]
So funktioniert es. Super Danke.
Sicher? Weil $EVENT steht immer noch in '$EVENT' :o
Ja ganz sicher. Ich habe im Vorfeld sämtliche Varianten ausprobiert. Aber $Niv und '$EVENT' nicht.
Ich habe mir jetzt zwei Dummies gebastelt einen für das Niveau und einen für die Steigung. Ich setze jetzt zuerst den Dummy für die Neigung und dann sende ich beide Werte mittels dem Notify an die Heizung. Werde diese Einstellungen hoffentlich nur noch diese Woche brauchen :-)
den Pfad in die php einzutragen habe ich gemacht, ist sogar korrekt. Hat bei mir aber noch nie funktioniert. Ich sach mal so, Hauptsache es läuft :-)
Bei der Ausführung eines Bash-Skriptes funktioniert dies übrigens.
Naja ok, wird so sein. Ich hatte es mir ja auch so aufgeschrieben.
ZitatDamit es nicht zu leicht wird, kann man die String Terminatoren natürlich auch schachteln. Für die Auflösung von Perl Variablen ist dabei die äußere Klammer bestimmend. Das erste Beispiel gibt Hallo Welt aus, das zweite nur Hallo.
{my $a = "Welt";;qx "echo 'Hallo $a'"}
{my $a = "Welt";;qx 'echo "Hallo $a"'}
Die Variable $a wird im zweiten Fall nicht aufgelöst, sondern als Shell Variable interpretiert.
Gruß Otto