[HowTo] SensorAndSwitch: Pseudoscript: PseudoGeräte selbst entwickeln.

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,995
Punkte für Reaktionen
8
Punkte
38

-Information:
-Zu SensorAndSwitch werden im Verzeichnis pseudobeispiele/ einige PseudoGeräte-Scripte mitgeliefert. Diese Beispiel-Dateien sind PseudoGeräte-Dateien, die man zum Aktivieren ins Verzeichnis zu sensorandswitch.php ziehen muss. Dort werden sie in den Scripten von SensorAndSwitch wie normale Geräte angezeigt und behandelt.

Die Beispielscripte stammen auch aus vielen Ideen der IPPF-User, insbesondere koyaanisqatsi, der besonders Fritzbox-nahe PseudoGeräte-Scriptzugriffe eingebunden hat.


-Die nachfolgenden Angaben sind inzwischen nicht mehr aktuell!
Die aktuellsten Angaben bitte im SAS4PI-Web unter dem Menüpunkt PSGScripte oder SensorAndSwitch Web unter dem Menüpunkt PseudoScripte nachschlagen!

-

-Syntax:
-Der Name einer solchen Datei muss folgendermaßen aufgebaut sein:

Beispiel: pseudoname.php

  • Der erste Teil "pseudo" bedeutet, dass es sich um eine PseudoGeräte-Datei handelt.
  • Der zweite Teil "name" steht für den angezeigten Gerätenamen in den Scripten.
    Die Kleinbuchstaben a-z, die Zahlen 0-9 sowie der Bindestrich "-" sind für den Namen erlaubt.
    • Steht im Namen die Zeichenfolge "auto", so wird dieses Script in der sensorandswitch.php ncht angezeigt, kann aber in der sensorandswitchautopro.php eingesetzt werden.
    • Steht direkt am Anfang des Namensteils "display", so wird dieses Gerät nur im WebGUI angezeigt und ist für die Automationsnutzung gesperrt.
      Der Schriftzug "display" wird dabei im WebGUI nicht angezeigt.
  • Der letzte Teil ".php" ist wieder Pflicht.
  • Der Dateiname darf keine Großbuchstaben enthalten.
  • Sonderzeichen und Umlaute werden von einigen Servern nicht akzeptiert und sollten gemieden werden.

Die Dateien in diesem Verzeichnis dienen als Beispiele, wie PseudoGeräte-Dateien aufgebaut sein müssen.

Wichtig sind die übergebenen Parameter und die Ausgabe der Dateien bei ihrem Aufruf.

Die Dateien erhalten durch $_GET ihre Parameter.

pseudoname.php?info=status

  • Dies ist der Aufruf durch SensorAndSwitch um Sensor-Werte zu erhalten.
    $_GET["info"] beinhaltet den String "status"

    Dabei zeigt dann pseudoname.php als "echo"-Ausgabe
    • S#n# - n steht für 0 oder 1 - Schalter ist an oder aus
    • W#nnn# - n steht für einen beliebigen numerischen Wert für Leistung/Verbrauch
    • T#nnn# - n steht für einen beliebigen numerischen Wert für Temperatur
    • P#nnn*xxx# - n steht für einen beliebigen numerischen Wert - x steht für die (Mess-)Einheit
    • P#xxx*HTML# - x steht für beliebigen Text (auch HTML) / Nur Anzeige, keine Auswertung möglich
    • E## - Fehler, Gerät nicht verfügbar, Messwert nicht lesbar, etc.
      Diese Werte können in einer Zeile auch gemischt ausgegeben werden.
    Beispiele:
  • T#22.4# - gibt SensorAndSwitch an, dass es ein Sensorgerät für Temperatur ist und zeigt dieses mit 22,4°C an.
  • W#133.220#S#1# - gibt SensorAndSwitch an, dass es sich um ein schaltbares Gerät mit Watt-Messung handelt und zeigt an, dass es an ist und 133.22 Watt verbraucht.
  • T##E## - gibt SensorAndSwitch an, dass es ein Sensorgerät für Temperatur ist, aber nicht aktiv/verfügbar ist.
Die Pseudogeräte-Dateien müssen diese Werte so darstellen, so dass SensorAndSwitch sie erkennen und weiterverarbeiten kann.

Beim Erstellen eigener PseudoGeräte-Dateien ist darauf unbedingt zu achten!


pseudoname.php?schalter=1
pseudoname.php?schalter=0


Hier muss innerhalb der PseudoGeräte-Datei $_GET["schalter"] mit den Werten "0" oder "1" ausgewertet und ein entprechender Schaltbefehl per URL an das reale Gerät geschickt werden.



-Zusatz zu "P#xxx*HTML#":
-Der nutzbare Bereich ist 310x60 Pixel groß.
Standardmäßig wird der eingefügte Inhalt 20px nach unten rechtsbündig eingefügt.

Dies kann folgendermaßen beeinflusst werden:
Positionsbeginn links oben:
<div style='text-align:left;width:310px;position:relative;top:-20px;'>



-Weitere Beispiele:
-P#<div style='position:relative;top:-20px;font-size:14px;'>".$Status."</div>*HTML#

position:relative; top:-20px;
  • damit kommt man nach oben an den Rand.


font-size:nnnpx;
  • damit wählt man eine kleinere Schriftgröße für mehrzeilige Nutzung.


P#<div style='text-align:center;width:310px;position:relative;top:-20px;font-size:14px;'>".$Status."</div>*HTML#

text-align:center; width:310px;
  • damit zentriert man.




-Zusammengefasst:
-Der verfügbare <div>-Bereich ist: width:310px; height:60px; groß.
Die Zeile ist auf top:20px; festgelegt. Änderbar durch position:relative;top:-20px;

text-align:center; width:310px;
  • auf einen <div>-Bereich zentriert den Eintrag

text-align:left;width:310px;
  • auf einen <div>-Bereich beginnt den Text links.
 
Zuletzt bearbeitet:
...und so siehts aus...

@JL3: Nichts lockert einen Beitrag besser auf als ein Screenshot, der zeigt was dabei rauskommen kann.

Deswegen hier mal mein privates SNOM 320 Projekt mit Pseudosensoren für die Erreichbarkeit
und Pseudoschalter für Anzeige und Zusatzaktionen. Dabei kommt auch SQLite3 zum Einsatz.
snom320_sensor_schalter_03.jpg
SensorAndSwitch schaltet die Pseudoschalter in Abhängigkeit von den Sensoren.
Wobei der Pseudosensor ganz einfach gehalten werden kann...
pseudosnom1sensor.php
PHP:
<?php
if ($_GET["info"]=="status") {
$timeout = 1;
$ip = "snom1.fritz.box";
$port = "443";
$fp = @fsockopen($ip, $port, $timeout);
if($fp)
{
$Status="P#1*Online#";
}
else
{
$Status="P#0*Offline#";
}}
echo $Status;
?>
...und der Pseudoschalter mit SQL (PDO für SQLite3)...
pseudosnom1.php
PHP:
<?php // Schalter speichert/liest/liefert Schaltzustand aus SQLite3 Datenbank, Tabelle: pseudodevice
error_reporting(1);//SaS unterdrueckt alle Fehlermeldungen. Sinnvoll fuer: php-cgi -f
require_once "db.php";// SQLite3 Datenbankoeffner
$p_id=1;// Diese id aus der Datenbank gehoert diesen Schalter
try {// Dann versuchen wir es mal...
$count = $dbh->exec("CREATE TABLE IF NOT EXISTS pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255), type VARCHAR(255), command VARCHAR(255), command1 VARCHAR(255), command0 VARCHAR(255))");
$sth = $dbh->prepare('SELECT id FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status=="") {
$count = $dbh->exec("INSERT INTO pseudodevice (active,type,command,command1,command0) VALUES ('0','S','https://snom1.fritz.box/command.htm?key=DND','https://snom1.fritz.box/command.htm?key=P11','https://snom1/screen.bmp')");
}
if ($_GET[info]=="status") {
$sth = $dbh->prepare('SELECT id,active,type,command,command1,command0 FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="1") {
echo trim($Status[type])."#".trim($Status[active])."#P#<table style='position:relative;display:inline;left:0;'><tbody><tr><td><button onclick='location.assign(\"https://snom1/line_login.htm?PLAY_RINGER:5\")'>Ring</button></td><td><button onclick='location.assign(\"".$Status[command1]."\")'>P11</button></td><td><img src='".$Status[command0]."' height='26' alt='snom1'/></td></tr></tbody></table>*HTML#";
}
if ($Status[active]=="0") {
echo "S#".trim($Status[active])."#P#<span>DND oder OFFLINE</span>*HTML#";
}}
if ($_GET[schalter]=="1") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '1' WHERE id = ".$p_id."");
$sth = $dbh->prepare('SELECT id,active,type,command,command1,command0 FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="1") {
$url=$Status[command];
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$Link = curl_exec($ch);
curl_close($ch);
echo "S#".trim($Status[active])."#";
}}
if ($_GET[schalter]=="0") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '0' WHERE id = ".$p_id."");
$sth = $dbh->prepare('SELECT active FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="0") {
echo "S#".trim($Status[active])."#";
}}
exit;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
(Wird angeschaltet, wenn der Sensor Online anzeigt. Wird der Schalter betätigt, wird DND geschaltet (An/Aus).)
...superkompliziert aussieht.


Und noch ein Screenshot, alles Pseudoskripte...
sas_at_fritzbox_01.jpg
Der Webserver muss dabei allerdings auch auf der Fritz!Box laufen.
 
Zuletzt bearbeitet:
hier 2 Scripte die ich für mich gebastelt habe.

1. pseudozaehler.php
PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Dieses Script soll bei schalter=1 den Zähler um 1 erhöhen   	  | 
		|      bei schalter=0 den Zähler um 1 erniedrigen.                    |
		|                                                                     |
		+---------------------------------------------------------------------+
		*/
             
	$Statusdatei="statuszaehler.txt";    #hier Namen für Status-Datei eingeben 
	$Zaehlerdatei="zaehler.txt";
	$Pfad=".";
	
	$dateihandle=fopen($Zaehlerdatei,"r+");
	$a = fread($dateihandle, 50);
	rewind($dateihandle);
	$Status="S##E##";
	if (!file_exists($Statusdatei)) {
		$fp=fopen($Statusdatei,"w");
		$Status="0";
		fputs($fp,"S#".$Status."#");
		fclose($fp);
	}
	if ($_GET["info"]=="status") {
		$fp=fopen($Statusdatei,"r");
		$xml=fgets($fp);
		fclose($fp);
		if (strpos($xml,"1")) {
			$Status="S#1#";
		}
		if (strpos($xml,"0")) {
			$Status="S#0#";
		}
	}
	if ($_GET["schalter"]=="1") {
		$fp=fopen($Statusdatei,"w");
		$a++;
		$Status="S#1#";
		fwrite($dateihandle,$a);
		fclose($dateihandle);
		fputs($fp,$Status);
		fclose($fp);
	}
	if ($_GET["schalter"]=="0") {
		$fp=fopen($Statusdatei,"w");
		$a--;
		$Status="S#0#";
		fwrite($dateihandle,$a);
		fclose($dateihandle);
		fputs($fp,$Status);
		fclose($fp);
	}
	echo "P#".$a."*html#";
	echo $Status;
	return;
?>

wird wie ein normaler Schalter aufgerufen mit pseudozaehler?schalter=1 oder pseudozaehler?schalter=0 .
bei schalter=1 wird eine Zähler-Datei der Wert um 1 erhöht,
bei schalter=0 wird die Zöhler-Datei der Wert um 1 erniedrigt.

Sinn und Zweck, Beispiel:
3 Fernseher sind je an einer Fritz!Dect200 angeschlossen.
in sasautoui jeweils programmiert Verbrauch > 5 watt = pseudozähler.php ein,
Verbrauch < 5 Watt = pseudozähler.php aus.
in sasautoui programmiert pseudozähler.php > 1 = 4.Steckdose ein,
pseudozaehler.php < 1 = 4.Steckdose aus.

kurz, wenn nur 1 Fernseher eingeschaltet, wird der Sat-Verteiler an der 4.Steckdose eingeschaltet.
und erst wenn alle Fernseher ausgeschaltet wird der Sat-Verteiler ausgeschaltet.

2. pseudouniversalschalter.php

PHP:
<?php 

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Schalter                                                       |
		|      Dieses Script dient als vorlage für verschiedene         	  | 
		|      Schaltvorgänge										          |
		|                                                                     |
		+---------------------------------------------------------------------+
		*/
             
	$Statusdatei="universalschalter.txt";    #hier Namen für Status-Datei eingeben 
	$Pfad=".";
	function HTTP_CALL($url) {
	$ch = curl_init();
	$timeout = 5;
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
	curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$Link = curl_exec($ch);
	curl_close($ch);}
	
	$Status="S##E##";
	if (!file_exists($Statusdatei)) {
		$fd=fopen($Statusdatei,"w");
		$Status="0";
		fputs($fd,"S#".$Status."#");
		fclose($fd);
	}
	if ($_GET["info"]=="status") {
		$fd=fopen($Statusdatei,"r");
		$xml=fgets($fd);
		fclose($fd);
		if (strpos($xml,"1")) {
			$Status="S#1#";
		}
		if (strpos($xml,"0")) {
			$Status="S#0#";
		}
	}
	$Uschalter=$_GET["schalter"];
	if ($Uschalter=="1") {
		$fd=fopen($Statusdatei,"w");
	/*  Beispiele für ein anderes Script zum einschalten aufrufen
	mit include können keine anderen Paremeter übergeben werden.
	wenn andere Parameter gebrucht werden, dann mit HTTP_Call
	dann auch Wechselschaltungen möglich.
	was nicht gebraucht wird, deaktivieren!
	*/
//	 dialer  klingeln, nach 5 Sekunden auflegen, hier Rufumleitung ein
	/*	shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Dial **791');
		$Status="S#1#";
		fputs($fd,$Status);
		fclose($fd);
		sleep(5);
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Hangup 1');
	*/	
//	Edimax Steckdose
#		include("pseudoedimax.php");		# Parameter schalter=1 wird mit übergeben.
//  oder mit anderem Parameter
#		HTTP_CALL("http://192.168.178.1:8086/sas/pseudoedimax.php?schalter=0");
//	mein Statuszähler, wird noch für Erweiterungen gebraucht.
#		include("pseudozaehler.php");	# Parameter schalter=1 wird mit übergeben.
//  oder mit anderem Parameter
#		HTTP_CALL("http://192.168.178.1:8086/sas/pseudozaehler.php?schalter=0");
//	1. Fritz!Dect Steckdose
#		HTTP_CALL("http://192.168.178.1:8086/sas/sensorandswitch.php?ain=087610076498&schalter=an");
//	2. Fritz!Dect Steckdose
#		HTTP_CALL("http://192.168.178.1:8086/sas/sensorandswitch.php?ain=087610144480&schalter=an");  
		$Status="S#1#";
		fputs($fd,$Status);
		fclose($fd);
	}
	if ($Uschalter=="0") {
		$fd=fopen($Statusdatei,"w");
	/*  Beispiele für ein anderes Script zum ausschalten aufrufen
	mit include können keine anderen Paremeter übergeben werden.
	wenn andere Parameter gebrucht werden, dann mit HTTP_Call
	dann auch Wechselschaltungen möglich.
	was nicht gebraucht wird, deaktivieren!
	*/
//	 dialer   klingeln und nach 5 Sekunden auflegen, hier Rufumleitung aus	
	/*	shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Dial **792');
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
		sleep(5);
		shell_exec('/usr/bin/ctlmgr_ctl w telcfg command/Hangup 1');
	*/	
//	Edimax Steckdose
#		include("pseudoedimax.php");		# Parameter schalter=0 wird mit übergeben.
//  oder mit anderem Parameter
#		HTTP_CALL("http://192.168.178.1:8086/sas/pseudoedimax.php?schalter=1");
//	mein Statuszähler, wird noch für Erweiterungen gebraucht.
#		include("pseudozaehler.php");	# Parameter schalter=0 wird mit übergeben.
//  oder mit anderem Parameter
#		HTTP_CALL("http://192.168.178.1:8086/sas/pseudozaehler.php?schalter=1");
//	1. Fritz!Dect Steckdose
#		HTTP_CALL("http://192.168.178.1:8086/sas/sensorandswitch.php?ain=087610076498&schalter=aus");
//	2. Fritz!Dect Steckdose
#		HTTP_CALL("http://192.168.178.1:8086/sas/sensorandswitch.php?ain=087610144480&schalter=aus"); 
		$Status="S#0#";
		fputs($fd,$Status);
		fclose($fd);
	}
//	echo "P#".'wenn Text ausgeben, dann hier einfügen'."*HTML#"; 
	echo $Status;
	exit;
?>
wird auch wie ein normaler Schalter aufgerufen.
nur werden darin weitere Schalter aufgerufen.
so das ich z.B. mit einem Aufruf mehrere Geräte gleichzeitig ein-, oder ausschalten kann.
auch ein Gerät einschalten und ein anderes ausschalten ist so möglich.

ist noch viel Text zur Erklärung drin, und vor den eigentlichen Schaltbefehlen ein "#" welches dann wenn der Befehl gebrauht wird entfern werden muss.
im Prinzip, nichts ist unmöglich damit.
 
Tip: Um den Code übersichtlicher zu Gestalten, eigene Funktionen einbinden.

Beispiel (Funktion: HTTP_CALL):

my_funcs.inc
PHP:
<?PHP
function HTTP_CALL($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
return curl_exec($ch);
}
?>
Wichtig: Statt echo am Ende immer return benutzen.

Beispiel für eine Inkludierung im Pseudoskript...
pseudogastwlan.php
PHP:
<?php
include "my_funcs.inc";
if (isset($_GET["info"])) {
$query=$_GET["info"];
}
if (isset($_GET["schalter"])) {
$query=$_GET["schalter"];
}
$url="http://[::1]:81/cgi-bin/gastwlan.cgi?".$query;
$Status=trim(HTTP_CALL($url));
echo "S#".$Status."#T#314#W#0.5#P#".$Status."*XSS-Schutz#";
Erklärung: Ein auf der Fritz!Box laufender SaS schaltet mittels curl (HTTP_CALL) eine CGI oder liest den Status.
Die Rückgaben macht die CGI...
cgi-bin/gastwlan.cgi
Code:
#!/bin/sh
echo 'Content-Type: text/plain
'
if [ ${QUERY_STRING} == "1" ] ; then
/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled ${QUERY_STRING}
echo -ne "${QUERY_STRING}"
elif [ ${QUERY_STRING} == "0" ] ; then
/usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled ${QUERY_STRING}
echo -ne "${QUERY_STRING}"
fi
if [ ${QUERY_STRING} == "status" ] ; then
status=$(/usr/bin/ctlmgr_ctl r wlan settings/guest_ap_enabled)
echo -ne "$status"
fi
#EOF
Die komische Adresse "http://[::1]" ist übrigens localhost auf IPv6zisch. :mrgreen:
 
Zuletzt bearbeitet:
Ich stelle in der nächsten Version noch ein paar Funktionen zur Verfügung, die das Erstellen von PseudoGeräte-Scripts weiter vereinfachen. Ich empfehle dann ohnehin mit dem sashelper auf FB und PI zuzugreifen, auch wenn sas selbst auf ihnen läuft, weil dann einfacher mal der Webserver gewechselt werden kann.

Bin noch nicht ganz fertig, da noch eine Doku von mir dazu geschrieben werden muss. ;)
 
Hier noch eine Idee:

Vielleicht kann sie ja jemand verwirklichen...

Wetterwarnung vom Deutschen Wetterdienst (www.DWD.de)
 
@dtrieb: Gibts schon :)
pseudounwetter.php

PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   Unwetter RSS-Feed                                                 |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	include "conf/sensorandswitchbundesland.phpconf";
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	if ($_GET["info"]=="status") {
		$url="http://www.wetterleitstelle.de/".$bundesland.".xml";
	$Status=web($url,$post);
		$Cont=simplexml_load_string($Status);
		$Status=trim(strip_tags($Cont->channel->item->description));

		if ($Status) {
			echo "P#"."<div style='font-size:10px;text-align:left;width:310px;height:50px;position:relative;top:-10px;overflow:auto;'>".$Status."</div>"."*HTML#";
		}
		else {
			echo "P##E##";
		}
	}
	exit;
	
?>
 
woher kommt $bundesland ?
 
Hallo,
Ich denke aus: "conf/sensorandswitchbundesland.phpconf" Den entsprechenden Eintrag musst Du Dir von der Webseite suchen :mrgreen:
 
So?

<?php
$bundesland='nordrhein-westfalen';
?>
 
Hallo,
Was hast Du denn eingegeben: 'nordrhein-westfalen' oder "nordrhein-westfalen"? Hast Du die Datei korrekt (conf) abgelegt?
 
Hallo,
Was hast Du denn eingegeben: 'nordrhein-westfalen' oder "nordrhein-westfalen"? Hast Du die Datei korrekt (conf) abgelegt?

"nordrhein-westfalen"

......./sensorandswitch/conf/sensorandswitchbundesland.phpconf
 
Hallo,
Hmmm :gruebel: mit der vorherigen Version lief es bei mir. Das Update habe ich noch nicht gemacht, komme aber auch vor morgen nicht dazu :noidea:
Bei mit steht:
Code:
<?php     
$bundesland="niedersachsen-bremen";
?>
Hast Du mal probiert/kontrolliert, ob hier (pseudounwetter.php) alles korrekt eingetragen ist? Nicht, dass etwas bei C&P verloren ging.
 
SensorAndSwitch.jpg

Die Datei:

......./sensorandswitch/conf/sensorandswitchbundesland.phpconf


hat folgenden Inhalt:

<?php
$bundesland="nordrhein-westfalen";
?>
 
Eine Liste für conf/sensorandswitchbundesland.phpconf:
Code:
<?php
	$bundesland="bundeslandname";
?>
für bundeslandname:
baden-wuerttemberg
bayern
berlin-brandenburg
hessen
mecklenburg-vorpommern
niedersachsen-bremen
nordrhein-westfalen
rheinland-pfalz-saarland
sachsen
sachsen-anhalt
schleswig-holstein-hamburg
thueringen

Die Datei muss ANSI oder UTF-8 ohne BOM kodiert sein.
 
pseudounwetter.php

PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   Unwetter RSS-Feed                                                 |
		|	Eine Liste für mögliche $bundesland-Inhalte:                      |
		|     baden-wuerttemberg                                              |
		|     bayern                                                          |
		|     berlin-brandenburg                                              |
		|     hessen                                                          |
		|     mecklenburg-vorpommern                                          |
		|     niedersachsen-bremen                                            |
		|     nordrhein-westfalen                                             |
		|     rheinland-pfalz-saarland                                        |
		|     sachsen                                                         |
		|     sachsen-anhalt                                                  |
		|     schleswig-holstein-hamburg                                      |
		|     thueringen                                                      |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	include "conf/sensorandswitchbundesland.phpconf";
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	if ($_GET["info"]=="status") {
		$url="http://www.wetterleitstelle.de/".$bundesland.".xml";
	$Status=web($url,$post);
		$Cont=simplexml_load_string($Status);
		$Status=trim(strip_tags($Cont->channel->item->description));

		if ($Status) {
			echo "P#"."<div style='font-size:10px;text-align:left;width:310px;height:50px;position:relative;top:-10px;overflow:auto;'>".$Status."</div>"."*HTML#";
		}
		else {
			echo "P##E##";
		}
	}
	exit;
	
?>
 
ACHTUNG! Da stimmt etwas mit der Seite nicht mehr.
 
neue pseudounwetter.php

PHP:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   Unwetter RSS-Feed                                                 |
		|   Eine Liste für mögliche $bundesland-Inhalte:                      |
		|     baden-wuerttemberg                                              |
		|     bayern                                                          |
		|     berlin-brandenburg                                              |
		|     hessen                                                          |
		|     mecklenburg-vorpommern                                          |
		|     niedersachsen-bremen                                            |
		|     nordrhein-westfalen                                             |
		|     rheinland-pfalz-saarland                                        |
		|     sachsen                                                         |
		|     sachsen-anhalt                                                  |
		|     schleswig-holstein-hamburg                                      |
		|     thueringen                                                      |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	include "conf/sensorandswitchbundesland.phpconf";
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	if ($_GET["info"]=="status") {
		$url="http://www.wetterleitstelle.de/".$bundesland.".xml";
		$Status=web($url,$post);
		$Status=trim(strip_tags($Status));
		if ($Status) {
			echo "P#"."<div style='font-size:10px;text-align:left;width:310px;height:50px;position:relative;top:-10px;overflow:auto;'>".$Status."</div>"."*HTML#";
		}
		else {
			echo "P##E##";
		}
	}
	exit;
	
?>
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.