Danke, aber ich werde mich erst später darum kümmern können - bzw. mal einen eigenen Thread für "Bitte diesen LBS aufnehmen" machen, sonst komme ich durcheinander
Also bitte im Hinterkopf behalten und noch etwas Geduld aufbringen...
Danke, aber ich werde mich erst später darum kümmern können - bzw. mal einen eigenen Thread für "Bitte diesen LBS aufnehmen" machen, sonst komme ich durcheinander
Also bitte im Hinterkopf behalten und noch etwas Geduld aufbringen...
###[DEF]###
[name =Restwertdivision A/B ]
[e#1 =A ]
[e#2 =B ]
[a#1 =0/1 ]
###[/DEF]###
###[HELP]###
Durch die Restwert-Division lässt sich schnell herausfinden, ob eine Zahl (Wert an E1) durch eine andere Zahl (Wert an E2) teilbar ist.
Jedes neue Telegramm an E1 oder E2 triggert den Baustein.
E1: Wert A
E2: Wert B
A1: Wenn E1 (A) / E2 (B) teilbar ist, wird A1=1 gesetzt. Andernfalls wird A1=0 gesetzt.
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['refresh']==1 || $E[2]['refresh']==1) {
if ($E[1]['value'] % $E[2]['value']==0) {
setLogicLinkAusgang($id,1,1);
} else {
setLogicLinkAusgang($id,1,0);
}
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###
Der Hilfetext ist ja auch länger als die Logik selbst
###[DEF]###
[name =Toggeln mit Status-KO ]
[e#1 =Trigger ]
[e#2 =Wert A #init=0 ]
[e#3 =Wert B #init=1 ]
[e#4 =Status-KO ]
[a#1 =Wert A/B ]
###[/DEF]###
###[HELP]###
Dieser Baustein setzt A1 auf den Wert an E2 oder E3 in Abhängigkeit vom Wert z.B. eines Status-KOs an E4:
Ist der Wert des Status-KOs an E4 = E2, wird A1 auf den Wert an E3 gesetzt.
Ist der Wert des Status-KOs an E4 ≠ E2, wird A1 auf den Wert an E2 gesetzt.
Dieses "Toggeln" wird bei jeden neuen Telegram ≠0 an E1 durchgeführt.
Wichtig: Als Vergleichswert dient ausschließlich E2. Ist z.B. E2=0 und E3=1 und E4=999 (also weder =E2 noch =E3), wird A1 auf E2 gesetzt.
Eine Änderung der Werte an E2, E3 oder E4 triggert den Baustein nicht(!). Der Baustein wird ausschließlich über ein neues Telegramm ≠0 an E1 getriggert.
E1: Trigger ≠0
E2: Wert A
E3: Wert B
E4: Vergleichswert, z.B. ein Status-KO
A1: wird bei jedem Trigger (E1) entweder auf den Wert von E2 oder auf den Wert von E3 gesetzt
###[/HELP]###
###[LBS]###
<?
function LB_LBSID($id) {
if ($E=getLogicEingangDataAll($id)) {
if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
if ($E[4]['value']==$E[2]['value']) {
setLogicLinkAusgang($id,1,$E[3]['value']);
} else {
setLogicLinkAusgang($id,1,$E[2]['value']);
}
}
}
}
?>
###[/LBS]###
###[EXEC]###
<?
?>
###[/EXEC]###
function Upnp($url,$SOAP_service,$SOAP_action,$SOAP_arguments = '',$XML_filter = '')
{
$POST_xml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">';
$POST_xml .= '<s:Body>';
$POST_xml .= '<u:'.$SOAP_action.' xmlns:u="'.$SOAP_service.'">';
$POST_xml .= $SOAP_arguments;
$POST_xml .= '</u:'.$SOAP_action.'>';
$POST_xml .= '</s:Body>';
$POST_xml .= '</s:Envelope>';
$POST_url = $this->IP.":".$this->PORT.$url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $POST_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml", "SOAPAction: ".$SOAP_service."#".$SOAP_action));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_xml);
$r = curl_exec($ch);
curl_close($ch);
if ($XML_filter != '')
return $this->Filter($r,$XML_filter);
else
return $r;
}
function Filter($subject,$pattern)
{
preg_match('/\<'.$pattern.'\>(.+)\<\/'.$pattern.'\>/',$subject,$matches); ///'/\<'.$pattern.'\>(.+)\<\/'.$pattern.'\>/'
return $matches[1];
}
function GetPositionInfo()
{
$url = '/MediaRenderer/AVTransport/Control';
$action = 'GetPositionInfo';
$service = 'urn:schemas-upnp-org:service:AVTransport:1';
$args = '<InstanceID>0</InstanceID>';
$xml = $this->Upnp($url,$service,$action,$args);
$data["TrackNumberInQueue"] = $this->Filter($xml,"Track");
$data["TrackURI"] = $this->Filter($xml,"TrackURI");
$data["TrackDuration"] = $this->Filter($xml,"TrackDuration");
$data["RelTime"] = $this->Filter($xml,"RelTime");
$TrackMetaData = $this->Filter($xml,"TrackMetaData");
$xml = substr($xml, stripos($TrackMetaData, '<'));
$xml = substr($xml, 0, strrpos($xml, '>') + 4);
$xml = str_replace(array("<", ">", """, "&", "%3a", "%2f", "%25"), array("<", ">", """, "&", ":", "/", "%"), $xml);
$data["Title"] = $this->Filter($xml,"dc:title"); // Track Title
$data["AlbumArtist"] = $this->Filter($xml,"r:albumArtist"); // Album Artist
$data["Album"] = $this->Filter($xml,"upnp:album"); // Album Title
$data["TitleArtist"] = $this->Filter($xml,"dc:creator"); // Track Artist
return $data;
}
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Einen Kommentar schreiben: