Beispiel PHP-Skript zum ansteuern eines SNOM 870

danield

Neuer User
Mitglied seit
12 Sep 2007
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Hallo,

hat jemand einen Link zu einem Beispiel PHP-Skript zum ansteuern eines SNOM 870 für mich?
Ich würde damit gerne mal etwas experimentieren.

Anrufen, Anrufe in Abwesenheit abrufen, etc.

Danke :-)

Gruß,
Daniel
 
Moins


Klaro, kannst du haben...

psgSNOM1.php
PHP:
<?php // Schalter speichert/liest/liefert Schaltzustand aus SQLite3 Datenbank, Tabelle: pseudodevice
error_reporting(0);
require_once("../db.php");// SQLite3 Datenbankoeffner
require_once("../include/psg.php");
$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), temp VARCHAR(255), watt VARCHAR(255), command VARCHAR(255), command0 VARCHAR(255), command1 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,temp,watt,command,command0,command1) VALUES ('1','S','20','2.25','http://snom1/command.htm?number=200','http://snom1/screen.bmp','http://snom1/command.htm?number=100')");
}
if ($_GET[info]=="status") {
$sth = $dbh->prepare('SELECT active,type FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="1") {
throw new Exception(trim($Status[type])."#".trim($Status[active])."#");
}
if ($Status[active]=="0") {
throw new Exception(trim($Status[type])."#".trim($Status[active])."#");
}}
if ($_GET[schalter]=="1") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '1' WHERE id = ".$p_id."");
$sth = $dbh->prepare('SELECT id,active,type,command FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="1") {
webget($Status[command],"");
throw new Exception(trim($Status[type]."#".$Status[active])."#");
}}
if ($_GET[schalter]=="0") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '0' WHERE id = ".$p_id."");
$sth = $dbh->prepare('SELECT active,type,command1 FROM pseudodevice WHERE id = '.$p_id.'');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status[active]=="0") {
webget($Status[command1],"");
throw new Exception(trim($Status[type]."#".$Status[active])."#");
}}
throw new Exception($Status[type]."##E##");
}
catch(Exception $e) {
echo $e->getMessage();
}
?>
sas_alle_01.jpg
Dieses Skript benutze ich als Schalter in SensorAndSwitch* um ein SNOM** die Zeit oder seine Nummer ansagen zu lassen.
Das kann es, weil es an einem Asterisk registriert ist.
Die Nummern landen in einem entsprechenden [context], ein selbstgebasteltetes Sprachmenü.

* Letzte Zeile meiner Signatur
** Vorletzte Zeile meiner Signatur
 
Zuletzt bearbeitet:
Vielen Dank, dass Du Dir die Mühe gemacht hast.
Aber ausser ein wenig aus der Datenbank lesen und updaten, ist da nichts bezüglich der Kommunikation zum SNOM zu erkennen.
 
Wenn der Schalter eingeschaltet wird, dann wird...
webget($Status[command]);
...ausgeführt.
Wobei command, richtig, aus der Datenbank geholt wird und...
"http://snom1/command.htm?number=200"
...entspricht (snom1 = IP oder Hostname (d)eines SNOMs).

Analog beim Auschalten command1, dann...
"http://snom1/command.htm?number=100"

Die Funktion webget wird durch das...
require_once("../include/psg.php");
...nachgeladen und wurde folgendermassen definiert...
PHP:
function webget($url) {
/*******************/
        $ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $Status=curl_exec($ch);
        curl_close($ch);
        return $Status;
}
...was bedeutet: PHP braucht die curl Unterstützung.

Ergo wäre ein "working example", ohne SensorAndSwitch...
PHP:
<?php

function webget($url) {
/*******************/
        $ch=curl_init();
        $timeout=5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $Status=curl_exec($ch);
        curl_close($ch);
        return $Status;
}

webget("http://snom1/command.htm?number=100");

?>
Naja, fast.
Natürlich auch hier snom1 und 100 anpassen. ;)

Mit SensorAndSwitch geht halt vorallem das zeitgesteuerte Schalten.
...oder durch Sensoren ausgelöste.

Also in geistiger und/oder materieller Abwesenheit.

Das Skript aus Post #2 kann darüberhinaus auch über die Datenbankeinträge geschaltet werden.
...weil bei einer minütlichen Statusabfrage (von SensorAndSwitch) der Wert von active in der Datenbank geprüft wird.
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,855
Beiträge
2,302,948
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo