Raumfeld Controller

Hallo zusammen,

ich versuche derzeit meinen Raumfeld controller in IP Symcon und in meiner LCN anlage mit einzubinden.
Derzeit bin ich soweit, das ich via HTTP Request aus dem Browser den Player Starten, Stoppe, Playlisten und Radiosender „Starten“ kann.

Gerne würde ich das nun im Webfront bzw im IPS mit einbringen.

Kann mir da einer Weiterhelfen?

die Adressen im Browser sehen wie folgt aus:

http://<ip>:8080//raumserver/controller/play?id=Wohnzimmer << zum Starten
http://<ip>:8080//raumserver/controller/stop?id=Wohnzimmer << zum stoppen

bin da über jeden Tipp dankbar…

greetz Adeee

Was willst Du denn machen erst mal mit Skripten arbeiten oder gleich ein Modul erstellen?
Ich würde vor einer Modul Erstellung erst mal damit beginnen alle Befehle zu testen.

Dafür erstellt Du Dir erst mal jeweils ein Skript mit nur dem einen Befehl, dass führst Du aus und schaust ob das funktioniert.


$ip = "192.168.55.100"; // IP Adresse
$port = 8080; // Port
$roomid = "Wohnzimmer"; // RoomID
$play = play($ip, $port, $roomid);

function play($ip, $port, $roomid)
{
$play = file_get_contents("http://".$ip.":".$port."/raumserver/controller/play?id=".$roomid); // Play zum Starten
return $play;
}



Wenn das geht kannst Du im nächsten Schritt Dir überlegen welche Variablen Du für den Webfront brauchst und wie ein Aktionskript aussehen müsste. Im letzten Schritt wenn alle Befehle funktionieren kannst Du Dir dann überlegen wie dies als Modul aussehen müsste und welche Eingaben vom Modul benötigt werden. Dann baust Du alle bisher verwendeten Funktionen zu einer Klasse für das Modul zusammen.

Erstmal Danke,

das skript funktioniert soweit, dann werd ich mich mal weiter an die weiteren befehle machen und schauen was draus wird :slight_smile:

Mal schauen wie weit wir damit als Modul kommen.

Grüße Adeeee

Wenn Dir alle Befehle bekannt sind und Du dafür Funktionen hast ist der Weg zum Modul nicht mehr weit. Du musst halt nur mal schauen ob und wie Raumfeld auch Rückmeldungen liefert oder ob man nur Befehle absetzten kann.

Bevor Du anfängst alles neu zu machen wurde unter
Raumfeld Steuerung
schon mal darüber diskutiert.

Ich besitze kein Raumfeld aber wenn Du anscheinend den RaumfeldServer installiert kannst Du Raumfeld über http steuern.

Dokumentiert sind die Befehle alle sauber also brauchst Du diese dann nur noch von IP-Symcon analog s.o. abzuschicken und schon solltest Du Raumfeld steuern können. Wenn das geht kannst Du Dich ans Modul bauen machen ;).

Mahlzeit,

So nachdem nun der Raumserver „eingestellt“ wurde und der eigentliche Programmierer seinen Raumserver auf Node.js installiert hat, lässt sich der Node-Raumserver auch problemlos auf nemm Raspi installieren. Habs derzeit auf meinem Rapsi 3 neben Symcon und PCHK laufen, problemlos.

Die HTTP requests sind gleich geblieben nur mit dem unterschied, das ich im Browser ne Meldung zurückbekomme und die Console (auf dem Raspi) ebenfalls status meldungen rausgibt. jetzt ergibt sich die Frage ob man diese nun auch vernünftig in IPS nutzen kann um somit Variablen für den Status nutzen kann??? Bin da leider nicht soweit drinn in der Programmierung.

Hiermal ein Beispiel für die Ausgabe nach absenden eines HTTP Requests


requestUrl	"/raumserver/controller/enterManualStandby?id=Wohnzimmer&scope=room"
action	"enterManualStandby"
error	false
msg	""
data	
udn	"uuid:ffffffff-f2c4-359f-ffff-fffff2c4359f"


die Nächste frage die sich mir ergibt, gibt es die Möglichkeit den „server“ auf dem Raspi aus IP Symcon zu starten und/oder zu Prüfen ob der server Läuft??

um den Server zu starten benötigt man folgenden Befehl:

node node_modules/node-raumserver/raumserver.js

Wie wird der HTTP Request abgesetzt GET oder POST? Hast Du einfach mal aus einem Skript in IP-Symcon mit curloder file_get_contens einen Befehl abgeschickt und Dir den Inhalt des Rückgabe wert mit var_dump angeschaut? Wenn das so was wie XML oder JSON ist sollte es ja überhaupt kein Problem sein den Rückgabe Wert dann in IP-Symcon Variablen zu schreiben.

Kannst ja mal schreiben was var_dump ausgibt nur mit der Anzeige im Browser kommt man da nicht weiter.

Falls das Skript z.B. noch funktionieren sollte


$ip = "192.168.55.100"; // IP Adresse
$port = 8080; // Port
$roomid = "Wohnzimmer"; // RoomID
$play = play($ip, $port, $roomid);
var_dump($play);


function play($ip, $port, $roomid)
{
$play = file_get_contents("http://".$ip.":".$port."/raumserver/controller/play?id=".$roomid); // Play zum Starten
return $play;
}  

Wie lautet dann die Ausgabe von var_dump für $play?

So,

ich habe gerade mal dein Skript ausprobiert @Fonzo

wie gesagt bin nicht so der Programmierer :wink:

aber wenn ich das so in IPS einpflege und starte bekomm ich als ausgabe:


Notice:  Use of undefined constant play - assumed 'play' in C:\IP-Symcon\scripts\50933.ips.php on line 6
string(4) "play"

hilft das??

Da war ein Fehler im Skript. Wobei ich das Gerät nicht kenne Du musst wissen wie der Befehl lautet. Kannst es ja noch mal probieren. Sind Dir die Befehle denn bekannt die Du senden musst?

so,

kam gerade nochmal zum ausprobieren.
in Zeile 6 hatte sich bei mir ein Fehler eingeschlichen,

hatte

var_dump (play);

drinne stehen, es fehlte das ‚$‘ vor dem play.

wenn ich dieses hinzufüge bekomme ich folgende Ausgabe


string(149) "{"requestUrl":"/raumserver/controller/play?id=One","action":"play","error":false,"msg":"","data":{"udn":"uuid:ffffffff-f2c4-359f-ffff-fffff2c4359f"}}"

Grüße Adeee

Na dann hast Du doch Deine Rückmeldung was auch immer da daraus jetzt brauchst. Das kannst Du ja bei jedem Befehl machen. Ob da bei den Befehlen irgendwas sinnvolles zurückkommt das Du in IPS ablegen willst musst Du dann schauen.

Das ist im Übrigen normales JSON was Du als Antwort kommt. Du kannst also mit json_decode das dann einfach in eine Form umwandeln mir der Du auf die einzelnen Werte zugreifen kannst und diese kannst Du dann ja auch in Variablen speichern wenn Du willst. Siehe auch Wie kann ich 2.0 bzw. json_decode

Verfolge das Thema gespannt. Vielleicht gibt es ja bald ein Raumfeld-Modul in IP Symcon. Das wäre sowas von Klasse. :slight_smile:

Bisher Leider noch nicht, bin in letzterzeit aber auch nicht mehr zum Programmieren gekommen.

Und ob meine Kenntnisse dann noch für ein Modul reichen ist auch noch ein anderes Thema :slight_smile: