michl
9. November 2017 um 18:51
9
So hab das Script nun umgeänder-Danke!
Nun werden die Hz in m/s umgerechnet.
Jedoch hab ich den Fehler, oder auch nicht, das wenn ich 0 Hz habe ich immer 0,66 m/s habe? ( das ergibt sich ja aus der Formel).
Kann ich dies ändern das, das Script unter 500 Hz eine 0 in die Variable schreibt.
Erst ab 501 Hz das Script umrechnen?
Oder geht es noch einfacher als ich denke?
michl
9. November 2017 um 20:15
11
Ok,
in diesem Fall müsste das Script Starten, bzw. errechnen wenn:
$a > $b Größer Als Gibt TRUE zurück, wenn $a größer als $b ist.
Dann müsst ich sagen wenn FALSE dann eine „0“ in die Variable m/s?
Muss ich im Script dann den Wert $a mit 500 angeben?
wenn wert größer als vergleichswert dann setzte die variable mit errechneten wert sonst schreibe 0 >> if/else
michl
10. November 2017 um 09:15
13
Kannst du mir helfen wie ich dies jetzt ins bestehende Script einfügen kann?
Ich wollte dich anregen, das selbst zu verstehen.
Nach fast 5 Jahren IPS dachte ich, dass du „dein Brot selbst schmieren“ kannst;)
Zumindest bei solchen Aufgaben…
michl
11. November 2017 um 12:15
15
Ich hab schon etwas rumprobiert
Frequenz ist Variable 51822 ( dieser Wert ist der Ausgangswert ).
Windgeschwindigkeit m/s ist 42832
Dann möchte ich auch noch die M/s in Kmh umrechnen diese möchte ich in eine andere Variable 35243 Schreiben
Die Formel dafür ist ja 1 m/s = 3,6 Km/h ( ist das so richtig )
<?
$mhz = GetValue(51822 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY]*/);
$ms2 = ($mhz/1000 + 2) /3;
$kmh = ($ms2*3,6);
SetValue(35243 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\Windgeschwinigkeit]*/, $kmh);
SetValue(42832 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\Windgeschwinigkeit]*/, $ms2);
?>
Beim Urechnen bekomm ich die Fehlermeldung:
Parse error: syntax error, unexpected ‚,‘ in /mnt/data/symcon/scripts/21163.ips.php on line 4
Mit dem If/else hab ich noch nicht Probiert…
ralf
11. November 2017 um 12:27
16
In PHP Punkte statt Komma, also nicht 3,6 ;).
michl
11. November 2017 um 15:06
17
Danke, das war der Fehler
Jetzt wird in M/s und in Km/h umgerechnet!
Was jetzt noch Fehlt ist das mit dem If/else.
Muss ich das vor dem Eigentlichen Umrechnen einbringen?
Sprich:
zuerst GetValue, dann if/else und dann umrechnen?
$Wert ist der Wert ab dem das Script Rechnen soll. „if“ ist ja die Bedingung?
§Wert 1000
if($Wert > "1000")
$mhz = GetValue(51822 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY]*/);
$ms2 = ($mhz/1000 + 2) /3;
$kmh = ($ms2*3.6);
SetValue(35243 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY\Windgeschwindigkeit km/h]*/, $kmh);
SetValue(42832 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\Windgeschwinigkeit m/s und km/h]*/, $ms2);
Bekommst du das wirklich nicht hin?
Dein Messwert mit deinem selbst angegebenen Wert
zu vergleichen und danach Aktionen folgen zu lassen?
Alles weitere schrieb ich schon oben.
if (vergleich)
{Aktion}
else
{Aktion}
Hallo,
da ich die gleichen Komponenten habe, aber im Moment noch mit dem Original Eltako Relais arbeite, wäre es sehr nett, wenn Du hier eine Anleitung Posten könntest.
Also Anschluss und Einstellungen in HM wired. Frequenzauswertung und das fertige Script.
Nicht, dass ich zu faul wäre, mir das alles selbst zu suchen, aber dann schimpft meine Frau weniger…
Danke Sebastian
michl
11. November 2017 um 17:46
20
Das Fertige Script ist hier im Thema also, wenn ich das mit dem If/Else noch hinbekomme bin ich zufrieden
Ich hab eine Ader des Windsensors an GND Angeschlossen und die andere an den Eingang I12 des Wired IO Moduls.
Danach hab ich den Eingang des I12 auf Analog gestellt. ( in der Web Oberfläche der CCU2 ).
Variable in IPS für m/s und km/h angelegt ( Float ).
Lasse das Script bei Änderung der Frequenz starten-weis aber noch nicht ob das nicht zu oft ist, da ist am Wired BUS ganz schön was los. Am Überlegen bin ich ob ich es nicht alle 5 Sekunden Starten soll?
michl
11. November 2017 um 18:16
21
Ich wird nicht schlau draus!
Wo liegt jetzt der Fehler? Und warum?
<?
if (GetValueFloat(51822)< 501);
{ $mhz = GetValue(51822 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY]*/);
$ms2 = ($mhz/1000 + 2) /3;
$kmh = ($ms2*3.6);
SetValue(35243 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY\Windgeschwindigkeit km/h]*/, $kmh);
SetValue(42832 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\Windgeschwinigkeit m/s und km/h]*/, $ms2);
}
else
{
SetValueFloat (35243, 0);
}
?>
Parse error: syntax error, unexpected ‚else‘ (T_ELSE) in /mnt/data/symcon/scripts/21163.ips.php on line 13
ralf
11. November 2017 um 18:27
22
Nach dem if kein Semikolon.
Ok…
<?
$mhz = GetValue(51822 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY]*/);
$ms2 = ($mhz/1000 + 2) /3;
$kmh = ($ms2*3.6);
if ($mhz > 500)
{
SetValue(35243 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\FREQUENCY\Windgeschwindigkeit km/h]*/, $kmh);
SetValue(42832 /*[Hardware Homematic\Wired\Windsensor\DIGITAL_INPUT\Windgeschwinigkeit m/s und km/h]*/, $ms2);
}
else
{
SetValueFloat (35243, 0);
}
?>
Heisst… Läuft so, wie du’s dir vorstelltest?
Meist kommt da ja noch was nach… :rolleyes:
Wenn ja, dann wars doch nicht so schwer, oder!?
Lerne doch einfach mal diese „doofe“ PHP-Programmierung zu verstehen und nicht nur C&P!
VG
… und ich konnte meinen 3333sten Beitrag tippen:D:D:D
michl
12. November 2017 um 10:25
26
Morgen.
Danke, momentan passt soweit alles
Man denkt immer zu kompliziert. Werde mich mit PHP wieder mehr auseinander setzen.
Das sieht doch soweit gut aus.
Eventuell möchtest du noch im else-Fall deine m/s-Variable auch auf 0 setzen. Ansonsten bleibt diese auf dem letzten Wert der über 501 war stecken.
michl
14. November 2017 um 05:48
28
Danke, das hab ich schon berichtigt