Hallo,
ich habe nun einige Stunden lang vergeblich versucht meine SISPM via FHEM2FHEM zum laufen zu bekommen und habe nun die Hoffnung, das Ihr mir vielleicht weiterhelfen könnt.
Vorab eine kurze Zusammenfassung der Gegebenheiten: FHEM läuft bei mir auf einem Raspberry Pi, an diesen hatte ich ursprünglich die SISPM angeschlossen (zuerst direkt, danach mit aktivem USB hub), wieso auch immer hängt sich der Raspberry nach einer gewissen Zeit/beim Schalten auf und muss neu gestartet werden. (Falls hier noch jemand eine Idee hat darf er mir natürlich auch gerne weiterhelfen... ;)). Da die SISPM vor dem Raspberry ohne Probleme an die Fritzbox funktioniert hat, hab ich die SISPM nun wieder an die Fritzbox gehängt und versuche nun mehr oder weniger erfolgreich das ganze mit FHEM2FHEM laufen zu lassen... Der aktuelle Stand der Dinge ist, das ich auf dem Raspberry zwar die Events im Event Log sehe, beim Schalten vom Raspberry aus scheitere ich dann aber leider :(
Hier nun mal die aktuellen Konfigurationen:
Fritzbox:
define PMS_0 SISPM /usr/bin/sispmctl
rename PMS_0 PMS_WZ
#SIS 1
define wz_sis1 SIS_PMS 01:06:63:97:41 1
attr wz_sis1 room Wohnzimmer
define FileLog_wz_sis1 FileLog ./log/wz_sis1-%Y.log wz_sis1
attr FileLog_wz_sis1 group SIS_PMS
attr FileLog_wz_sis1 logtype text
attr FileLog_wz_sis1 room Logfiles
#SIS 2
define wz_sis2 SIS_PMS 01:06:63:97:41 2
attr wz_sis2 room Wohnzimmer
define FileLog_wz_sis2 FileLog ./log/wz_sis2-%Y.log wz_sis2
attr FileLog_wz_sis2 group SIS_PMS
attr FileLog_wz_sis2 logtype text
attr FileLog_wz_sis2 room Logfiles
#SIS 3
define wz_sis3 SIS_PMS 01:06:63:97:41 3
attr wz_sis3 room Wohnzimmer
define FileLog_wz_sis3 FileLog ./log/wz_sis3-%Y.log wz_sis3
attr FileLog_wz_sis3 group SIS_PMS
attr FileLog_wz_sis3 logtype text
attr FileLog_wz_sis3 room Logfiles
#SIS 4
define wz_sis4 SIS_PMS 01:06:63:97:41 4
attr wz_sis4 room Wohnzimmer
define FileLog_wz_sis4 FileLog ./log/wz_sis4-%Y.log wz_sis4
attr FileLog_wz_sis4 group SIS_PMS
attr FileLog_wz_sis4 logtype text
attr FileLog_wz_sis4 room Logfiles
Raspberry:
define PMS_WZ dummy
define FHEM_FB FHEM2FHEM 192.168.2.1:7072 RAW:PMS_WZ
Beim Schalten via FHEM auf Fritzbox sehe ich die Schaltvorgänge dann auch im Event Monitor des FHEM's auf dem Raspberry:
2013-08-30 10:47:35 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 1 state off
2013-08-30 10:47:35 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 2 state off
2013-08-30 10:47:35 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 3 state off
2013-08-30 10:47:35 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 4 state off
2013-08-30 10:48:09 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 1 state off
2013-08-30 10:48:09 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 2 state off
2013-08-30 10:48:09 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 3 state off
2013-08-30 10:48:09 dummy PMS_WZ UNKNOWNCODE socket 01:06:63:97:41 4 state on
Event Monitor auf der Fritzbox:
2013-08-30 10:47:35 SIS_PMS wz_sis4 off
2013-08-30 10:47:57 SIS_PMS wz_sis4 on
So und nun stellt sich mir die Frage, was ich auf dem Raspberry in die Config schreiben muss um die PMS zu schalten. Wenn ich die Dokumentation von FHEM2FHEM richtig verstanden habe, sollte ich "PMS_WZ" auf dem Raspberry ja nicht als dummy definieren sondern eigentlich als SISPM ("define PMS_WZ SISPM /usr/bin/sispmctl"). Wenn ich das so mache, bekomme ich allerdings im Logfile folgendes:
2013.08.30 11:13:01 5: Cmd: >define PMS_WZ SISPM /usr/bin/sispmctl<
2013.08.30 11:13:01 5: Loading ./FHEM/70_SISPM.pm
2013.08.30 11:13:01 3: SISPM using "/usr/bin/sispmctl" as parameter to open(); trying ...
2013.08.30 11:13:01 3: SISPM_GetCurrentConfig: Using "/usr/bin/sispmctl" as parameter to open(); trying ...
2013.08.30 11:13:01 3: SISPM_GetCurrentConfig: Whoops? No GEMBIRD SiS-PM found.
2013.08.30 11:13:01 3: SISPM_GetCurrentConfig: Initial read done
2013.08.30 11:13:01 3: SISPM_GetCurrentConfig: No SISPM devices found.
2013.08.30 11:13:01 3: SISPM GetCurrentConfing done
2013.08.30 11:13:01 3: SISPM: An error occured: no SISPM devices found.
2013.08.30 11:13:01 1: define: no SISPM devices found.
2013.08.30 11:13:01 5: Cmd: >attr PMS_WZ dummy 1<
2013.08.30 11:13:01 3: Please define PMS_WZ first
2013.08.30 11:13:01 5: Cmd: >define FHEM_FB FHEM2FHEM 192.168.2.1:7072 RAW:PMS_WZ<
2013.08.30 11:13:01 5: Loading ./FHEM/93_FHEM2FHEM.pm
2013.08.30 11:13:01 1: define: Undefined local device PMS_WZ
2013.08.30 11:13:01 5: Cmd: >define wz_sis4 SIS_PMS 01:06:63:97:41 4<
2013.08.30 11:13:01 5: Loading ./FHEM/17_SIS_PMS.pm
2013.08.30 11:13:01 3: No I/O device found for wz_sis4
2013.08.30 11:13:01 1: configfile: no SISPM devices found.
Please define PMS_WZ first
Undefined local device PMS_WZ
Das "sispmctl" keine Geräte findet macht ja auch Sinn, demnach würde ich also so eine Art dummy SISPM brauchen, den Pfad zu "sispmctl" muss ich soweit ich das im Code gesehen habe allerdings angeben (so etwas wie "none" bei CUL (siehe Doku)scheint es bei SISPM nicht zu geben). Liege ich da soweit richtig oder ist es an der Stelle ok PMS_WZ so wie oben als dummy anzulegen? Das die Zeile "define wz_sis4 SIS_PMS 01:06:63:97:41 4" keine I/O devices findet verstehe ich ja auch, allerdings weiß ich auch hier nicht, wie ich das anders angeben sollte....
So ich hoffe mal ich habe alles einigermaßen verständlich beschrieben und hoffe das jemand so nett ist und mir helfen kann. Vielen Dank im Voraus.
Marcel
Hallo,
ich stehe vor exact dem gleichen Problem.
Bist Du inzwischen weitergekommen?
Gruss,
Wolle
Hi Wolle,
nein ich bin bis jetzt aufgrund mangelnder Zeit leider nicht weitergekommen, ich vermute allerdings stark, dass Anpassungen in "17_SIS_PMS.pm" und "70_SISPM.pm" notwendig sind, um jeweils ein "dummy" device anzulegen.
Viele Grüße
poeppe
ps. stürzt bei dir der Raspberry mit angeschlossener SISPMS auch ab?
ok, danke, hab ich befürchtet.
Ich versuche gerade das Problem über ssh Zugriff (mit Zertifikat) und remote call zu lösen.
Von der cmd line klappt es mit diesem Script:
#!/bin/sh
cmdstring='sispmctl '$@
ssh -i /var/mod/etc/ssh/rsa_host_key root@repeater "$cmdstring"
aber sobald ich das aus fhem aufrufe passiert nix und ich erhalte im syslog des remote host:
Sep 4 21:41:44 fritz authpriv.info dropbear[6402]: Child connection from 192.x.x.x:58204
Sep 4 21:41:44 fritz authpriv.info dropbear[6402]: Exit before auth: Error reading: Connection reset by peer
Also bricht fhem den Prozess ab. Ich hab schon diverse Versuche mit fork (&) gemacht, komme aber auch nicht weiter.
Irgend jemand eine Idee?
Gruß,
Wolle
PS ich hatte auch noch ne andere Idee probiert:
#!/bin/sh
cmdstring='sispmctl '$@
ssh -i /var/mod/etc/ssh/rsa_host_key root@repeater "$cmdstring" 1>output
scp -i /var/mod/etc/ssh/rsa_host_key root@repeater:output output
cat output
In diesem Script hab ich den stdout auf dem remote host in ne Datei geschrieben,
diese anschliessend auf den lokalen host kopiert und im lokalen stdout ausgegeben.
Dann habe ich in fhem ein SISPM definiert und das script oben als sispmctl übergeben
Damit konnte das Modul die Steckdose finden und erkennen aber weitere Kommunikation
hat leider nicht mehr geklappt.
Ich nehme an das liegt an dem file handling im SISPM fhem Modul.
Aber davon hab ich zuwenig Ahnung deshalb hab ich den Ansatz wieder verworfen.
Vielleicht bringt er ja jemand andres auf ne Idee.
Hallo,
ist das Problem eigentlich gelöst?
Stehe vor dem gleichen Problem.
Gruß,
Wolly
Was mir dazu einfällt:
Habe bei mir (aus anderen Gründen) ein Dummy defice definiert, nach welchen ich die SISPM schalte. Dieses hatte ich auch Regelgründen gemacht.
In Eurem Falle könntet Ihr es doch genau so machen, d.h. der Dummy ist bei beiden FHM bekannt und damit kann per FHEM2FHEM dieses durchgereicht werden. Und auf der Zielplatform wird per sispm geschaltet, wenn der Dummy geschaltet wird.
Umständlich, aber wäre doch eine Lösung?
(Habe hier eher das Problem, das sich dauernd kurzfristig die Dosen USB-technisch abmelden .. aber DAS ist ein anderes Thema)
Vom Ansatz her wollte ich das auch so machen, nur bei der Umsetzung scheitert es :-\
Auf dem "Master" habe ich dummies angelegt mit den Device Namen der Ports vom "Slave", wo die Steckdosenleiste angeschlossen ist.
Wenn ich dich richtig verstehe, müßte ich auf dem "Slave" die Schaltzustände an dummies übergeben, die dann auch auf dem "Master" vorhanden sein müssen.
Meine "Slave" config sieht so aus:
define PMS_Wohnzimmer SISPM /usr/bin/sispmctl
define FireTV SIS_PMS 01:03:be:4e:00 1
attr FireTV room EG_Wohnzimmer
define SAT SIS_PMS 01:03:be:4e:00 2
attr SAT room EG_Wohnzimmer
define TV SIS_PMS 01:03:be:4e:00 3
attr TV room EG_Wohnzimmer
define PS3 SIS_PMS 01:03:be:4e:00 4
attr PS3 room EG_Wohnzimmer
Wie muß ich denn die dummies auf dem "Slave/Master" anlegen?
Gruß,
Wolly
Ich dachte es anders:
1. Auf dem Master + Slave Dummy anlegen.
2. Wenn Auf Slave der Dummy geschaltet -> localhost SISPM + übergeben.
Also z.B.
define dummy1_on notify dummy1:on set sispm1 on
define dummy1_off notify dummy1:off set sispm1 off
Weiß aber nicht, ob es so geht, da dummy1 über fhem2fhem geschaltet würde. Ist momentan auch eher eine Idee .... aber verstanden, was ich meine?
(P.S. obiger Code ohne Gewähr und ungetestet)
Edit
Damit müste zwar dummy1 (dummy2 etc. analog) an beiden Instancen angelegt werden, aber nicht der notify ....
Grundsätzlich ja, allerdings bei der Umsetzung hapert es.
Auf dem "Slave" habe ich also das physikalische Device definiert:
define PMS_Wohnzimmer SISPM /usr/bin/sispmctl
define FireTV SIS_PMS 01:03:be:4e:00 1
attr FireTV room EG_Wohnzimmer
Dann zusätzlich den Dummy zum abgreifen:
define FireTV_d dummy
attr FireTV_d room dummy-room
define FireTV_on notify FireTV_d:on set FireTV on
attr FireTV_on room dummy-room
define FireTV_off notify FireTV_d:off set FireTV off
attr FireTV_off room dummy-room
aber das funktioniert schon nicht :-\
Probiere erst mal nur am Slave
also bei mir sieht es z.B. so aus:
define Hedwig dummy
attr Hedwig room SIS_PMS
attr Hedwig setList on off
define Hedwig_On notify Hedwig:on set M4 on
attr Hedwig_On room SIS_PMS
define Hedwig_Off notify Hedwig:off set M4 off
attr Hedwig_Off room SIS_PMS
Btw:
Habe immer größere Probleme, mit dem Schalten von Induktives lasten, bei mir ein aktiver Lautsprecher. irgendwo hatte ich mal eine Lösung dazu gefunden, aber wieder verlohren und ich finde sie nicht wieder. Weißt Du etwas davon?
Mein neuer Rechner scheint auf USB-Ebene empfindlicher zu sein, als mein Alter :o(
Das war die fehlende Zeile: :)
attr FireTV_D setList on off
Damit kann ich mit dem "Slave Dummy" das "Slave Device" schalten, wenn ich das Device direkt schalte aktualisiert sich der Dummy aber nicht.
Daher werde ich das Device auf hidden setzen und nur den Dummy zum schalten verwenden.
Allerdings funktioniert das Schalten vom Master noch nicht
define FireTV_d dummy
attr FireTV_d room dummy-room
attr FireTV_D setList on off
Zu dem USB-Probleme kann ich leider nichs sagen, hab die Leiste erst letzte Woche bekommen :(
Wie FHEM2FHEM dafür konfiguriert werden muss ... guuuute Frage.
Du könntest natürlich auch an den SISPM-Device ein notify setzten, darfst dafür dann nur nicht set verwenden um ein Loop zu vermeiden.
Übrigens heißen aus dem Grunde meine "Dummys" nicht Dummys, sondern die Dose hat einen kryptischen Namen, also bei meinem Beispiel M4, da es die 4. Dose ist.
Nachdem ich meine vorherigen config Versuche aufgeräumt habe funktioniert auch das Schalten vom den Master Dummies, sie werden zwar nicht aktualisiert wenn man am Slave schaltet, das ist aber erstmal zweitrangig.
Vielen Dank für deine Hilfe.
Gruß,
Wolly