Kommunikation IPS --> dSS

Hallo zusammen,
hab auch schon ab und an gepostet auf dieser Seite. Wie ihr, habe auch ich DS im Einsatz. Total 18 dsm mit ca. 150 Klemmen. Ist ein EFH. Zusätzlich mache ich gerade DS bei meinen Eltern rein. Also viel zu tun :slight_smile:
Verwende DS auch in Verbindung mit Symcon und es geht recht gut (wenn man einmal die Philosophie von DS verstanden hat).

Im Anhang findet ihr ein paar News zu der Version 1.8. Hat ein paar geniale Neuerungen. Sollte eigentlich ab heute online sein, finde auch noch nix bei Aizo.

Kurz ein paar interessante Aspekte:

  • Es wird einen mein.digitalstrom bereich geben
  • Es ist geplant Twitter und Push Nachrichten zu integrieren
  • Es ist geplant Spracherkennung zu integrieren (wenn ich das richtig verstanden habe?!)
  • Eine grosse Integration von IP Geräten soll folgen (ein paar bereits ab Version 1.8, andere kommen) z.B. Netatmo, Sono, IP Gateways usw.

Es kommt noch vieles mehr, aber ich freu mich erst mal auf die Version 1.8.

Was ich nach wie vor vermisse ist der Rückkanal in IPS (hab den gepostet Workaround umgesetzt, ist aber „mühsam“.)

Habts gut und gruss aus der Schweiz!

digitalSTROM Flyer Release 1.8_2013.pdf (329 KB)

Ich habe vor Ort Zeit gehabt mit den Entwicklern zu sprechen, und der Rückkanal pro Gerät (An/Aus) wird in nächster Zukunft nicht kommen. Das Konzept von DS ist die Szenensteuerung für die einzelnen Stimmungen.

Wir werden somit demnächst unsere Module erweitern, womit einzelne Geräte/Räume/Apartment auf die jeweiligen Stimmungen gesetzt werden können, wofür es auch Feedback seitens des dSS gibt. Wer die Einzelsteuerung nutzen möchten, kann dies weiterhin tun, jedoch ohne einem entsprechendem Rückkanal.

Die 1.8 bietet auf jeden Fall tolle neue Funktionen und sollte bald auch verfügbar sein :slight_smile:

paresy

Hallo zusammen,
möchte an dieser Stelle vielleicht schnell einen Input geben, wie ich über Symcon mit DS kommuniziere. Ob es der beste Weg ist, naja, ich denke mal nicht, aber viele Wege führen nach Rom.
Ich habe ein „Function“ File geschrieben (Danke auch an Kollegen, welcher mir geholfen hat!)


<?php

//Devices
$dsserver = new dsserver('IP DS Server', 'Port', 'Auth');

define ("DS_ROOM_CHEF", 7);

define ("DS_SCENE_ROOM_OFF", 0);
define ("DS_SCENE_ROOM_SCENE2", 17);

define ("DS_GROUP_GRAY", 'gray');

class dsserver {
	private $host = null;
	private $port = null;
	private $curl_handle = null;
	private $token = null;
	private $sessionToken = null;
	
	public function __construct($host, $port, $token) {
		$this->host = $host;
		$this->port = $port;
		$this->token = $token;
		$this->curl_handle=curl_init();
		curl_setopt($this->curl_handle, CURLOPT_CONNECTTIMEOUT,5);
		curl_setopt($this->curl_handle, CURLOPT_RETURNTRANSFER,true);
		curl_setopt($this->curl_handle, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($this->curl_handle, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($this->curl_handle, CURLOPT_FAILONERROR, true);
		$this->authenticate();
	}
	
	// clean up the mess
	public function __destruct() {
		curl_close($this->curl_handle);
	}

	public function callScene($scene, $room, $groupname) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/zone/callScene?id='.$room.'&sceneNumber='.$scene.'&groupName='.$groupname;
		$this->invokeDsCall($url);
	}
	
		public function getstate($dsid) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/device/getState?dsid='.$dsid;
		//return $this->invokeDsCall($url);
		$result=$this->invokeDsCall($url);
		return $result->result->isOn;
		
	}
	
			public function turnOn($dsid) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/device/turnOn?dsid='.$dsid;
		//return $this->invokeDsCall($url);
		$result=$this->invokeDsCall($url);
		return $result->ok;
		
	}
	
				public function turnOff($dsid) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/device/turnOff?dsid='.$dsid;
		//return $this->invokeDsCall($url);
		$result=$this->invokeDsCall($url);
		return $result->ok;
		
	}
	
		public function Apartment($call) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/apartment/'.$call;
		//return $this->invokeDsCall($url);
		return $this->invokeDsCall($url);
		//return $result->result->consumption;
		
	}
	
			public function CircuitPowerConsumption($id) {
		$url = 'https://'.$this->host.':'.$this->port.'/json/circuit/getConsumption?id='.$id;
		$result=$this->invokeDsCall($url);
		return $result->result->consumption;
		
		//return $this->invokeDsCall($url);
		//return $this->invokeDsCall($url);
		//return $result->result->consumption;
		
	}
	
	//https://192.168.0.30/json/circuit/getConsumption?id=3504175fe000001000001913

	/**
	 * Authentifizierung mit ds server, holt sessiontoken
	 */
	private function authenticate()	{
		$this->sessionToken = null;
		$url = 'https://'.$this->host.':'.$this->port.'/json/system/loginApplication?loginToken='.urlencode($this->token);
		$result = $this->invokeDsCall($url);
		$this->sessionToken = $result->result->token;
	}

	/*
	 * ruft eine Remote-Funktion mittels json interface beim DS Server auf
	 * dekodiert das Ergebnis und gibt es als Objekt zurück
	 */
	private function invokeDsCall($url) {
		// wenn es ein session Token gibt, verwende es; gibt es nicht beim 1. Aufruf (Funktion authenticate())
		if (isset($this->sessionToken) && $this->sessionToken != null) {
			$url = $url.'&token='.$this->sessionToken;
		}

		curl_setopt($this->curl_handle, CURLOPT_URL,$url);
		$fileContent = curl_exec($this->curl_handle);
		$error = curl_error($this->curl_handle);
		if ($error != null) echo "ERROR: $error, url: $url
";

		return json_decode($fileContent, false);
	}

}


Mit diesem File kann ich einschalten/ausschalten, Stimmungen aufrufen, Strom auslesen usw.

Im Symcon habe ich ein Dummy Modul erstellt mit den Variablen dsid und eStatus (für Effektiv Status)

Wenn wir uns nun z.B. einschalten ansehen, dann schalte ich nicht das Licht direkt ein, sondern rufe via DS Server eine Stimmung auf.
Über getState Frage ich aber nach, ob es wirklich eingeschalten ist und update den eStatus für die Visualisierung im Dashboard.


<?php

$dsid = GetValueString(43396 /*[Räume\OG Essen\OG Essen Tisch\dsid]*/ );


include('c:\scripts\ds\dsDevice.php');
$dsserver->callScene(0,3,'yellow'); //public function callScene($scene, $room, $groupname) Essen Licht


$result=$dsserver->getstate($dsid);
SetValueBoolean(24326 /*[Räume\OG Essen\OG Essen Tisch\eStatus]*/ , $result);

?>


Grundsätzlich ist es das.
Zusätzlich frage ich Geräte, welche mir wichtig sind alle 1-4h ab, ob sie eingeschalten oder ausgeschalten sind, einfach damit der Sync da ist, zwischen manuellem Schalter und Symcon.
Zusätzlich verwende ich für manche Taster den geposteten Workaround über den Sceneresponder, damit per Tastendruck Symcon Funktionen über DS aufrufen kann. Ich habe festgestellt, dass das System so schneller reagiert, als wenn ich eine Stimmung über den Sceneresponder autonom aufrufe (subjektiver Eindruck).

Nun gut, hoffe ich konnte einen kleinen Mehrwert liefern!
Freue mich aber auf alle Updates im DS Bereich!

Gruss

Hallo,

das hört sich für mich nach wie vor nicht so gut an. Leider schafft ja auch das Script von Spacecraft nur begrenzt Abhilfe.
Ein Haus wird eben auch über lokale Taster bedient. Dieses Konzept sieht Digitalstrom auch vor, da es an jeder Klemme die Möglichkeit gibt lokale Taster an zu schließen. Und wenn die Haussteuerung davon nichts mit bekommt kann ich das weder visualisieren noch kann ich auf Events reagieren.

Ich bin leider von meinen Kenntnissen in der Programmierung nicht so weit, aber bei openHAB bekomme ich eine Rückmeldung, wenn ein Digitalstrom-Device lokal bedient wurde.

Vielleicht kann sich Paresy ja mal deren Lösung ansehen:

https://github.com/openhab/openhab/wiki/digitalSTROM-Binding

Auf dem Digitalstrom-Server werden zwei Dateien abgelegt. Eine Java-Script:

var now = new Date();
var evt;

if (raisedEvent.source.isDevice) {
   evt = new Event("openhabEvent",
          {
             dsid: raisedEvent.source.dsid,
             zoneID: raisedEvent.source.zoneID,
             sceneID: raisedEvent.parameter.sceneID,
             timestamp: now.getTime(),
             isDevice: raisedEvent.source.isDevice,
          }  );

}
else
{
   evt = new Event("openhabEvent",
          {
             zoneID: raisedEvent.source.zoneID,
             groupID: raisedEvent.source.groupID,
             sceneID: raisedEvent.parameter.sceneID,
             timestamp: now.getTime(),
             isDevice: raisedEvent.source.isDevice,
          }  );
}
evt.raise();

und eine xml:

<?xml version="1.0"?>
<subscriptions version="1">
 <subscription event-name="callScene" handler-name="javascript">
    <parameter>
      <parameter name="filename1">/usr/share/dss/add-ons/openhab/openhab.js</parameter>
      <parameter name="script_id">openhab</parameter>
    </parameter>
  </subscription>
  <subscription event-name="undoScene" handler-name="javascript">                  
    <parameter>                                                                    
      <parameter name="filename1">/usr/share/dss/add-ons/openhab/openhab.js</parameter>               
      <parameter name="script_id">openhab</parameter>                         
    </parameter>                                                                   
  </subscription> 
  <subscription event-name="buttonClick" handler-name="javascript">                  
    <parameter>                                                                    
      <parameter name="filename1">/usr/share/dss/add-ons/openhab/openhab.js</parameter>               
      <parameter name="script_id">openhab</parameter>                         
    </parameter>                                                                   
  </subscription>
</subscriptions>

Vielleicht kann man ja damit etwas anfangen.

Gruß
Christian

Ich bin leider von meinen Kenntnissen in der Programmierung nicht so weit, aber bei openHAB bekomme ich eine Rückmeldung, wenn ein Digitalstrom-Device lokal bedient wurde.

Diese Aussage ist ja auch korrekt. Und das werden wir bald auch anbieten. Jedoch wirst du nicht den Zustand des Geräts kennen (=An/Aus), sondern du wirst die aktuelle Szene des Geräts kennen. (=Aus, Stimmung1, Stimmung2…)

Bei der Szene Aus ist die Sache noch klar, jedoch bedeutet Szene 1 nicht zwangsläufig, dass das Gerät An ist. Schau mal, ob dir openHAB anzeigt, welche Szene aktiv ist, oder ob du den Status siehst… und ob der Status auch AUS ist, wenn du eine Klemme darauf programmierst, dies bei z.B. Szene 1 zu sein.

paresy

Hallo zusammen,

Erst mal ein großes Danke für die neuen Infos.
Wenn man erst mal in Szenen denkt, muss die Rückmeldung der Szene eines Gerätes evtl. Nicht mal von Nachteil sein.
Das wird sich erst in einem Praxistest zeigen.
Evtl. Kann ja auch über den Stromverbrauch einer Klemme Rückschluss auf den Zustand gezogen werden.
Ich freue mich auf jeden Fall, dass es in Zukunft eine überarbeitete Anbindung an dss geben wird!

Jens

Wie war denn so der Gesamteindruck ?
Was steckt so hinter DS?
Kann man absehen wo die Reise hin gehen wird?
Man munkelt ja schon über Recht viele Neuerungen /Anbindungen ab 1.8
Wird z.B. Eine direkt an dss angebundene Wetterstation auch in IPS nutzbar sein…

Hallo Paresy,

ich habe die Items so definiert, das ich den Status selbst sehe:

Switch DG_Bad_Decke_Licht        "Licht Bad Decke"		(DG_Bad, Light){digitalstrom="dsid:3504175fe00000000001926a"}

Eine Statusmeldung dazu sieht wie folgt aus:

2013-11-21 06:40:12 - DG_Bad_Decke_Licht state updated to OFF

Ich kann das Item aber auch als Szene definieren.

Number|String Zone_Scene            "Room Scene"      {digitalstrom="context:zone#zoneid:65535"}

Das habe ich aber noch nicht gemacht.
Ob beim Aufruf einer Szene eine Rückmeldung auf das Atem erfolgt muss ich testen, da ich derzeit noch nicht mit Szenen arbeite, bzw nur an einer Stelle.

Klar ist aber, eine Rückmeldung der einzelnen Klemme würde funktionieren, scheint aber nicht ins Konzept von Digitalstrom zu passen.

Ich kann da nur noch mal auf die Seite von openHAB verweisen:openHAB

Vielleicht habe ich das Thema Szenen noch nicht durchgängig verstanden :confused:

Kann das jemand mal versuchen zu erklären.

Gruß
Christian

Hallo Paresy,

gibt es zum Thema Digitalstrom und der Integration in IP-Symcon Neuigkeiten oder eine Zeitplanung. Derzeit stehen scheinbar die neuen Serverbetriebssysteme sehr weit oben auf der Prioritätenliste.

Gruß
Christian

Ich kann’s auch kaum erwarten!
Sieht für mich so aus als kann es leider noch länger dauern.
Ich verstehe zwar dass es Systeme gibt die von mehr Usern verwendet werden als DigitalStrom und somit höher priorisiert werden müssen, aber seit November 13 ist auch schon einige Zeit vergangen…:loveips:

Ich würde mich über eine zeitnahe Umsetzung auch freuen, aber paresy hat ja gesagt es kommt bald :smiley:

Hallo zusammen,

ich wollte mich auch noch zu Wort melden.

Ich habe ebenfalls meine Wohnung mit digitalSTROM ausgerüstet und warte auch auf die weitere integration in IPS.

Wer spezielle Fragen zum dS-System selber hat, darf Sie gerne an mich stellen. Bin da relativ gut informiert.

Schönen Gruß aus Stuttgart.

Ralf

Hallo zusammen,

Ich habe eine DS-Installation mit etwa 80-90 Klemmen. Neben der Verwendung von Szenen (was mit der Dashboard App ja ganz gut funktioniert) möchte ich an einigen Orten aber Geräte direkt ansteuern sowie das ganze Haus auf einen Blick managen können. Daher würde ich gerne eine Visualisierung für DS implementieren.

Offenbar is IPS momentan die einzige Lösung. Ich bin mir allerdings unsicher, wie weit die Unterstützung von IPS geht. Ist DS schon ausreichend integriert oder wird noch sehr viel Handarbeit notwendig sein?

Danke für eure Einschätzung.

Viele Grüsse aus der Schweiz
axeon

@paresy:

Schade, das Du auf diese Anfragen hier gar nicht mehr reagierst. Ein kurzer Status über die nächsten Schritte und ein Zeitplan wäre schön, aber wenigstens ein „keine Zeit für DS, kommt irgendwann oder gar nicht“ als Aussage, dann wüssten Deine Kunden wenigstens wo sie dran sind.

Gruß
Christian

Zur Zeit ist es geplant, dass die wir die neuen Funktionen erst einmal mit den Module für RasPi, Linux, OSX bringen und dann für die Windows-Version nachpflegen. Tut mir echt Leid, dass sich die Module so sehr verzögern. :frowning:

paresy

Mh, hat das einen besondern Grund warum die Windows Version jetzt so stiefmütterlich behandelt wird? Auf dieser Plattform sollten die meisten Installationen laufen.

Endlich sind die neuen Instanzen da: http://www.ip-symcon.de/forum/threads/24619-Funktionen-Fehler-und-Einschr%C3%A4nkungen-(Bitte-lesen!)?p=236809#post236809

Für den Konfigurator in der Konsole und Windows kommt das Update im Laufe der nächsten Woche.

paresy

Juhu!
Besten Dank!

Hallo Paresy,

beim hinzufügen der DS Splitter Instanz steigt mein RasPi aus

das kommt beim Raspi -->> terminate called after throwing an instance of ‚std::runtime_error‘
what(): Flow for Instance #27559 does not exist

Fix online: http://www.ip-symcon.de/forum/threads/24619-Funktionen-Fehler-und-Einschränkungen-(Bitte-lesen!)?p=236837#post236837

paresy

funktioniert
Danke