Zitat von coliflower
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
EDOMI - LBS - Diskussion
Einklappen
X
-
Ich hätte eine Frage zum LBS 19000040 - Wettervorhersage:
Wie kann ich die Ausgabe des Bausteines um die Werte "function getWindSpeed()" und "function getWindBearing()" erweitern. So wie ich das verstanden habe, sind die in der forecast.io.php schon enthalten und werden dem z Folge abgefragt, aber für mehr fehlt mir aktuell leider noch das Verständnis bzgl. LBS. Kann mir da einer weiterhelfen?
Danke Euch, Christoph
Kommentar
-
Zitat von MrMirror Beitrag anzeigenIch hätte eine Frage zum LBS 19000040 - Wettervorhersage:
Wie kann ich die Ausgabe des Bausteines um die Werte "function getWindSpeed()" und "function getWindBearing()" erweitern. So wie ich das verstanden habe, sind die in der forecast.io.php schon enthalten und werden dem z Folge abgefragt, aber für mehr fehlt mir aktuell leider noch das Verständnis bzgl. LBS. Kann mir da einer weiterhelfen?
Danke Euch, Christoph
[a#1 = Aktuelle_Temp ]
[a#2 = Gefühlte_Temp ]
[a#3 = Vorhersage_Text ]
[a#4 = Vorhersage_Symbol ]
[a#5 = Min_Temp ]
[a#6 = Max_Temp ]
[a#7 = Luftdruck ]
[a#8 = Taupunkt ]
[a#9 = Luftfeuchtigkeit ]
[a#10 = Windgeschwindigkeit ]
[a#11 = Windrichtung ]
[a#12 = Niederschlagswahrscheinlichkeit ]
[a#13 = Niederschlagstyp ]
[a#14 = Bewölkungsgrad ]
[a#15 = Sonnenaufgang ]
[a#16 = Sonnenuntergang ]
[a#17 = Stunde_Temp ]
[a#18 = Mo_Vorhersage_Text ]
[a#19 = Mo_Vorhersage_Symbol ]
[a#20 = Mo_Min_Temp ]
[a#21 = Mo_Max_Temp ]
[a#22 = Mo_Luftdruck ]
[a#23 = Mo_Taupunkt ]
[a#24 = Mo_Luftfeuchtigkeit ]
[a#25 = Mo_Windgeschwindigkeit ]
[a#26 = Mo_Windrichtung ]
[a#27 = Mo_Niederschlagswahrscheinlichkeit ]
[a#28 = Mo_Niederschlagstyp ]
[a#29 = Mo_Bewölkungsgrad ]
[a#30 = Mo_Sonnenaufgang ]
[a#31 = Mo_Sonnenuntergang ]
[a#32 = Ue_Vorhersage_Text ]
[a#33 = Ue_Vorhersage_Symbol ]
[a#34 = Ue_Min_Temp ]
[a#35 = Ue_Max_Temp ]
[a#36 = Ue_Luftdruck ]
[a#37 = Ue_Taupunkt ]
[a#38 = Ue_Luftfeuchtigkeit ]
[a#39 = Ue_Windgeschwindigkeit ]
[a#40 = Ue_Windrichtung ]
[a#41 = Ue_Niederschlagswahrscheinlichkeit ]
[a#42 = Ue_Niederschlagstyp ]
[a#43 = Ue_Bewölkungsgrad ]
[a#44 = Ue_Sonnenaufgang ]
[a#45 = Ue_Sonnenuntergang ]
Mo_* steht für Morgen, UE_* steht für Übermorgen
Jetzt muss mich nur noch jemand unter https://edomi.knx-user-forum.de/ freischalten, dann lade ich den LBS gerne hoch.
Gruß,
Christian
Kommentar
-
Zitat von ChristianHS Beitrag anzeigenJetzt muss mich nur noch jemand unter https://Edomi.knx-user-forum.de/ freischalten, dann lade ich den LBS gerne hoch.
Kommentar
-
Zitat von wintermute Beitrag anzeigenMeinst Du die Fehlermeldung im Error-Log?, Ja, haette ich... mein hostcheck LBS macht das zB.
Allerdings musst Du Dich dann allein um das Loggen von Fehlern kuemmern - also von Meldungen die eigentlich ins Edomi-Errorlog gehoeren. Ich taete das in Deinem Fall eigentlich nicht empfehlen...
gruesse :: Michael
Hallo Michael,
hättest du einen Tip für mich wie ich nach dem IF anstatt des EXIT das 404er Thema lösen kann (EXIT steht jetzt nur symbolisch da obwohl in real life Edomi kontinuierlich rebootet) ?
Gibt es da eine Möglichkeit/Lösung wenn IF erfüllt wird, zurück zu springen bis IF nicht erfüllt is ?
PHP-Code:$url = 'http://'.$E[3]['value'].'/%7E'.$E[5]['value'].'/';
$urlplayer = $url.$E[11]['value'].'.json';
$headers1 = get_headers($urlplayer);
if ($headers1[0] == 'HTTP/1.1 404 Not Found') {
EXIT;
writeToTraceLog(0,true,'404er is TRUE >> EXIT Player');
} else {
$player__ = file_get_contents('http://'.$E[3]['value'].'/%7E'.$E[5]['value'].'/'.$E[11]['value'].'.json');
writeToTraceLog(0,true,'404er do not exists / Player '.$player__);
}
Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Zitat von coliflower Beitrag anzeigenhättest du einen Tip für mich wie ich nach dem IF anstatt des EXIT das 404er Thema lösen kann (EXIT steht jetzt nur symbolisch da obwohl in real life Edomi kontinuierlich rebootet) ?
Gibt es da eine Möglichkeit/Lösung wenn IF erfüllt wird, zurück zu springen bis IF nicht erfüllt is ?
Achte drauf, am Ende der while-Schleife eine Pause (ruhig laenger, 5-10s etwa) zu verbasteln, sonst laeuft das schnell Amok.
HTH:: Michael
Kommentar
-
Zitat von wintermute Beitrag anzeigenAlles in eine while-Schleife packen in der so oft versucht wird das File zu holen, bis $headers1[0] != 'HTTP/1.1 404 Not Found'
Bis jetzt habe ich es mit einem "DUMMY" gelöst ...
PHP-Code:if ($headers1[0] == 'HTTP/1.1 404 Not Found') {
$player__ = '{"status":"","time":""}';
writeToTraceLog(0,true,'404er is TRUE >> EXIT Player');
} else {
$player__ = file_get_contents('http://'.$E[3]['value'].'/%7E'.$E[5]['value'].'/'.$E[11]['value'].'.json');
writeToTraceLog(0,true,'404er do not exists / Player '.$player__);
}
Zitat von wintermute Beitrag anzeigenAchte drauf, am Ende der while-Schleife eine Pause (ruhig laenger, 5-10s etwa) zu verbasteln, sonst laeuft das schnell Amok.Zuletzt geändert von coliflower; 15.04.2016, 10:47.Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Zitat von coliflower Beitrag anzeigenMeinst du wirklich SEKUNDEN oder Milisekunden ?
Haengt aber natuerlich von Deinem konkreten Szenario ab...
Kommentar
-
Haengt aber natuerlich von Deinem konkreten Szenario ab...
D.h., die alte JSON wird gelöscht und die Neue erstellt - deshalb gibt es den 404er wenn sich die Abfrage (sekündlich) mit der neuen JSON überschneidet ...
Mit WHILE sollten 100 Milisekunden reichen um maximal 10x zu laufen ... Was meinst du ?Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
-
Zitat von coliflower Beitrag anzeigenDie JSON wird bei Zustandsänderung neu erzeugt - z.B. Play / Pause / Stop / Next / Previous / ...
Im Prinzip haengt das alles nur davon ab, wie sehr Du Edomi und dein iTunes stressen magst - mein Gedanke war: wenn da gar kein Server laeuft muss man auch nicht 10mal in der Sekunde nachgucken ob sich das geaendert hat...
Kommentar
-
Hallo zusammen,
ich bastel grad an einem LBS mit dem ich meinen BenQ Beamer steuern kann, dieser hängt über einen RS232-TCP Umsetzer direkt am Netzwerk (http://content.etilize.com/User-Manual/1011260948.pdf), da ich ja doch eher stümperhafter copy&paste "Programmierer" bin wolle ich fragen ob kurz jemand drüberschauen kann bevor ich das ganze in einen LBS packe.
In der Konsole funktionierts wunderbar, aber wie ich mich kenne gibts bestimmt einen (oder mehrere) Wege das ganze schöner/einfach usw. zu machen.
PHP-Code:<?php
$commandstart ="\r*";
$commandend = "#\r";
$command = "ltim=?";
$writesock = "{$commandstart}{$command}{$commandend}";
$sock = fsockopen("10.0.150.82", 23, $errno, $errstr, 30);
if (!$sock) {
echo "$errstr ($errno)<br />\n";
} else {
fwrite($sock, $writesock);
while (!feof($sock)) {
$beamer = fgets($sock, 128);
if (strpos($beamer, $command) == false) {
$beamer = trim($beamer,"*\r\n?#");
if ($beamer == "Block item") {
echo "Ausfuehrung nicht Moeglich, bitte versuchen Sie es spaeter.";
break;
}
$beamer = explode("=",$beamer);
var_dump($beamer[1]);
break;
}
}
fclose($sock);
}
?>
oder man baut einige IFs ein z.B 1= Beamer an, 0 = Beamer aus usw., oder gibts eine ganz andere Idee?
Ich würde 2 Bausteine erstellen, einen zum senden (Beamer an, usw) und einen zeiten zum Daten auslesen (Lampen Zeit usw.)
Christian
Kommentar
-
wintermute ich hätta da noch eine Fragen ...
Ich trau mich gar nicht zu fragen ...
Wenn das letzte elseif bevor try erfüllt wird, dann kommt der try/curl Abschnitt zu tragen ..
Wenn ich keine Verbundung zum WebServer habe, dann wird nach "catch" die Fehlermeldung ausgegeben und der Code wird weiter abgearbeitet ...
Muss / kann ich hier vor "try" das ganze mit zusätzlichem "if" abfangen (damit nach der JSON nicht gesucht wird wenn der WebServer nicht verfügbar ist) oder muss das aufgrund von "try" anders gelöst werden ?
Nochmals Sorry für die banale Frage
PHP-Code:if ($E[10]['value'] == 'http' AND !isEmpty($E[5]['value']) == true) {
if (isEmpty($E[3]['value']) == true) {
LB_LBSID_TRACE($id,'iTunes | E03 | Modus HTTP is true, IP-Adress is empty : '.$E[3]['value'],3);
} elseif (!isEmpty($E[3]['value'] == true) AND (filter_var($E[3]['value'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4) != true)) {
LB_LBSID_TRACE($id,'iTunes | E03 | IP is not a valid IPv4-Address: '.$E[3]['value'],3);
} elseif (!isEmpty($E[3]['value'] == true) AND (filter_var($E[3]['value'],FILTER_VALIDATE_IP,FILTER_FLAG_IPV4) == true)) {
try {
$ch = curl_init($ipx);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,1);
$re = curl_exec($ch);
if (!$re) throw new Exception(curl_error($ch));
// curl_close($ch);
}
catch (Exception $e) {
LB_LBSID_TRACE($id,'Exception: '.$e->getMessage(),3);
}
if (!isEmpty($E[11]['value'])) {
$urlplayer = $url.$E[11]['value'].'.json';
$headers_1 = get_headers($urlplayer);
if ($headers_1[0] == 'HTTP/1.1 404 Not Found' OR $headers_1[0] == 'HTTP/1.0 404 Not Found') {
$player__ = '{"state":""}'; // dummy
LB_LBSID_TRACE($id,'iTunes | E11 | 404-ERROR-Code -->> JSON-file on web-server not found',7);
} else {
$player__ = file_get_contents($urlplayer);
LB_LBSID_TRACE($id,'iTunes | E11 | 404-ERROR-Code does not exists / Player '.$player__,7);
}
}
}
Danke und LG, Dariusz
GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL
Kommentar
Kommentar