Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
cscarn
Beiträge: 25
Registriert: 17.12.2013, 08:33

Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von cscarn » 15.10.2021, 15:10

Hallo liebe Communty,

ich habe gestern meine CCU2 zu einer virtualiserten Raspberrymatic (Synology VMM unter Intel Celeron CPU x86) migriert. Dabei kommt als RF-Gateway selbstverständlich die alte CCU2 zum Einsatz. So weit so gut. Das funktioniert :-)

Nun zu meinen Problemen:
Ich habe als Zusatzprogramme das CuxD AddOn (V2.6) und XML-API (V1.21) AddOn installiert. Auf der virtualiserten Raspberrymatic muss man eine spezielle Version des CuxD installieren (cuxd_2.6_ccux86.tar.gz). Das habe ich auch gemacht. Beim Drücken auf den in der Systemsteuerung befindlichen CuxD Button, öffnet sich die CuxD Webseite. Status = Ok. Es sind zwei virtuelle Geräte angelegt, genau wie in der CCU2 auch, allerdings funktionieren die Scripte offensichtlich nicht. Wie ich den Fehler weiter eingrenzen kann, ist mir ehrlich gesagt unklar. Bin unter Linux eher nicht bewandert (nur rudimentäre Kenntnisse).

Das XML-API AddOn scheint auch nicht so recht zu funktionieren. Beim Aufruf der Webseite https://homematicip/addons/xmlapi/info.html erscheint die Liste der möglichen CGIs. Status gibt sogar einen Wert zurück, aber alle anderen CGIs bringen keine Daten oder es läuft sich tot. So richtig kann ich das nicht auseinanderhalten.

Kann mir bitte jemand versuchen zu helfen!? Was braucht ihr für weitere Infos?

Danke für's lesen und beste Grüße.
Rainer
Homematic: Sehr nützlich, aber Finger weg von Funksensoren, wenn es um Zuverlässigkeit geht. Alles was zuverlässig funktionieren soll benötigt RS-485 und Direktverknüpfungen!

Samhain
Beiträge: 381
Registriert: 30.03.2017, 13:44
Hat sich bedankt: 171 Mal
Danksagung erhalten: 15 Mal

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von Samhain » 17.10.2021, 15:52

Ich hab das Gleiche vor einigen Wochen gemacht. Mit der richtigen CUXD Version läuft das problemlos (mit ca. 30 virt. Geräten).

Kannst Du mal die Scripte hier posten?

Benutzeravatar
cscarn
Beiträge: 25
Registriert: 17.12.2013, 08:33

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von cscarn » 17.10.2021, 19:41

Danke für Deine Antwort. Hier die Daten ->

Zunächst mal der Status:

Code: Alles auswählen

  USB 2-1 - QEMU USB Tablet [HID] - Fri Oct 15 17:59:10 2021
  Kein TTY-Device connected!

  Erfolgreich mit HomeMatic-CCU 127.0.0.1:8183 verbunden!

  als RPC-Server(INIT) von HomeMatic-CCU (24857) angefordert!

  Diese Web-Seite wurde aufgerufen von: 192.168.177.68

  CUxD-Uptime(2.6):               2 Tag(e) 01:24:16, 192856 Bytes belegt, Compiled May 11 2021 19:24:08
  CCU-Uptime(3.59.6.20211009):    2 Tag(e) 01:24:42, load-average: 0.16 0.03 0.01, 10s-cpu-load: 1.4%
  Speicher:  Total 2033120k  Used 392976k  Free 1640144k  (Cached 148124k)  Available 1779212k
  CPU(1): Intel(R) Celeron(R) CPU  N3160  @ 1.60GHz [3199.89 bogomips]
  CPU(2): Intel(R) Celeron(R) CPU  N3160  @ 1.60GHz [3199.89 bogomips]
  Linux version 5.10.70 (builder@283683684f84) (x86_64-buildroot-linux-gnu-gcc.br_real (Buildroot -g5a34bf7) 10.3.0, GNU ld (GNU Binutils) 2.36.1) #1 SMP PREEMPT Sat Oct 9 11:06:59 UTC 2021
  aktive CCU-Prozesse: ReGaHss(1) rfd(1) hs485d(1) java(1)

  Filesystem: /                  ext4     (ro) Total     996780k  Used     679052k (68.1%)  Free     317728k (31.9%)
  Filesystem: /dev               devtmpfs (rw) Total    1010652k  Used          0k ( 0.0%)  Free    1010652k (100.0%)
  Filesystem: /dev/shm           tmpfs    (rw) Total    1016560k  Used          0k ( 0.0%)  Free    1016560k (100.0%)
  Filesystem: /tmp               tmpfs    (rw) Total    1016560k  Used       1440k ( 0.1%)  Free    1015120k (99.9%)
  Filesystem: /run               tmpfs    (rw) Total    1016560k  Used        292k ( 0.0%)  Free    1016268k (100.0%)
  Filesystem: /var               tmpfs    (rw) Total    1016560k  Used       3780k ( 0.4%)  Free    1012780k (99.6%)
  Filesystem: /media             tmpfs    (rw) Total    1016560k  Used          0k ( 0.0%)  Free    1016560k (100.0%)
  Filesystem: /usr/local         ext4     (rw) Total   64502396k  Used    3441060k ( 5.3%)  Free   61061336k (94.7%)
  Filesystem: /boot              vfat     (ro) Total     261868k  Used      59604k (22.8%)  Free     202264k (77.2%)

  CCU-MAC:     02:11:32:22:C5:58
  HM-Config:   /etc/config/homematic.regadom(4465670) OK! - Sun Oct 17 18:00:21 2021
  CUxD-Config: /tmp/cuxd.ps.sav(1292) - D - Sun Oct 17 19:19:10 2021
               /usr/local/addons/cuxd/cuxd.ps(1292) - D - Sun Oct 17 13:59:10 2021
               /usr/local/addons/cuxd/cuxd.ps.bak(1292) - D - Sun Oct 17 02:59:10 2021

  aktuelle Parameter: (* = bei Änderung Neustart erforderlich)
	*LISTENPORT      '8700'
	*HM-HOST         '127.0.0.1'
	*HM-SCRIPT-PORT  '' -> (8183)
	*HM-REGA-PORT    '' -> (31999)
	*RPCHOST         '127.0.0.1'
	*RPCPORT         '8701'
	 HTTP-REFRESH    '5'
	 TERMINALLINES   '25'
	 RCVLOGSIZE      '10000'
	 USERACCESS      ''
	 CUXINITCMD      'X21'
	 LOGFILE         ''
	 LOGLEVEL        '1'
	 LOGFLAGS        ''
	 LOGSIZE         '1000000'
	 LOGFILEMOVE     ''
	 DEVLOGFILE      ''
	 DEVLOGSIZE      '100000'
	 DEVLOGMOVE      ''
	 DEVLOGMOVE-HR   ''
	 DEVLOGEXPORT    ''
	 DEVTIMEFORMAT   '%Y-%m-%dT%X'
	 DEVDATAFORMAT   ''
	 DEVLOGOLDALIAS  '0'
	 SUBSCRIBE-RF    '1'
	 SUBSCRIBE-WR    '1'
	 AUTOSAVE        '1'
	 MOUNTCMD        ''
	 UMOUNTCMD       ''
	 BACKUPCMD       ''
	 SYSLOGMOVE      ''
	 SYSLOGMOVEDAILY ''
	 TH-DIR          ''
	 TH-DIR-FILTER   ''
	 ADDRESS-BUFFER  '120'
	 CLOUDMATIC_CMD  '/etc/config/addons/mh/cloudmatic'
	 WEBCAMCONFIG    '/usr/local/addons/cuxd/webcamconfig.ini'
	 WEBCAMSNAPSHOT  '/tmp/snapshots'
	 WEBCAMCACHE     '/tmp/webcams'
	 SYSLOGFILENAME  '/var/log/messages'
	 CUXD-CHARTS     '/etc/config/addons/www/cuxchart/index.html'
	 DFU_ERASE       './dfu-programmer $TARGET$ erase'
	 DFU_FLASH       './dfu-programmer $TARGET$ flash $HEXFILE$'
	 DFU_START       './dfu-programmer $TARGET$ start'
	 REMOTE-PARAMS   ''
	 REMOTE-CMD      ''
	 LEVEL-FILTER    '5'
  Aktuelle Geräteeinstellungen - 2 Gerät(e), 32 Channel(s):
	CUX2801002:1	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:2	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:3	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:4	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:5	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:6	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:7	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:8	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:9	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:10	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:11	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:12	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:13	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:14	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:15	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2801002:16	rmax(65535) t(3600s) p(0)
			KEY-SHORT CMD_SHORT()
			KEY-LONG CMD_LONG()
	CUX2803001:1	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:2	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:3	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:4	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:5	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:6	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:7	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:8	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:9	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:10	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:11	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:12	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:13	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:14	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:15	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
	CUX2803001:16	host:'' int-alive:60s int-fail:60s max-retry:0 threshold:1
  gefundene Adressen f(3) (aktuelle zuerst 19:23:26):
Hier eines meiner Pushover-Scripte direkt ausgeführt:

Code: Alles auswählen

string nachricht = "<Frostschutz> wurde eingeschaltet";
dom.GetObject("CUxD.CUX2801002:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -d token=geheim -d user=geheim -d message='"#nachricht#"' -d priority=0 https://api.pushover.net/1/messages.json");
Dann quasi das gleiche in abgewandelter, universeller Form auf Basis dieser Anleitung: https://homematic.simdorn.net/push-meldung/

Code: Alles auswählen

var PushOverText = "1_Heizung-Comforttemperratur> wurde ausgeloest";
dom.GetObject('PushOver').State(PushOverText);

var programObj = dom.GetObject("PushOverSend");
programObj.ProgramExecute();
Diese beiden Varianten funktionierten bis zur Migration einwandfrei und zuverlässig. Die Netzwerkeinstellungen der Raspberrymatic habe ich nochmal geprüft. Alles OK. Gateway und DNS sind richtig gesetzt. In der Firewall ist alles mit "Vollzugriff" erlaubt. Irgendwie bin ich Ideenlos, was ich noch testen kann, bzw. wie ich überhaupt testen kann, ob die CUxD das macht, was sie soll. Ich habe natürlich auch schon gegoogelt, aber mit entsprechenden Suchbegriffen keine Treffer gefunden. Scheint so, als würde ich dieses Problem als einziger haben. Ggf. ist die Kombination mit dem VMM (QEMU) auf einem Synology NAS etwas außergewöhnlich. Für mich ist die Virtualisierung allerdings meiner Vorzugsvaríante.

Bin dankbar für jeden Hinweis :-)
Homematic: Sehr nützlich, aber Finger weg von Funksensoren, wenn es um Zuverlässigkeit geht. Alles was zuverlässig funktionieren soll benötigt RS-485 und Direktverknüpfungen!

Samhain
Beiträge: 381
Registriert: 30.03.2017, 13:44
Hat sich bedankt: 171 Mal
Danksagung erhalten: 15 Mal

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von Samhain » 18.10.2021, 12:25

Hast Du das Problem nur mit Pushover?

... das nutze ich nur auf NodeRed Plattform

Benutzeravatar
cscarn
Beiträge: 25
Registriert: 17.12.2013, 08:33

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von cscarn » 18.10.2021, 12:38

Ich vermute, dass ist das einzige, wozu ich CUxD nutze. Das ist allerdings fast existenziell.
Homematic: Sehr nützlich, aber Finger weg von Funksensoren, wenn es um Zuverlässigkeit geht. Alles was zuverlässig funktionieren soll benötigt RS-485 und Direktverknüpfungen!

Benutzeravatar
jmaus
Beiträge: 9844
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von jmaus » 18.10.2021, 15:17

cscarn hat geschrieben:
18.10.2021, 12:38
Ich vermute, dass ist das einzige, wozu ich CUxD nutze. Das ist allerdings fast existenziell.
Für solch primitive Sachen wie ein "wget" oder "curl" Aufruf brauchst du unter RaspberryMatic kein CUxD. Da funktioniert alles auch problemlos mit direkten "system.Exec()" Befehlen die genau das selbe erledigen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
cscarn
Beiträge: 25
Registriert: 17.12.2013, 08:33

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von cscarn » 18.10.2021, 15:33

Okay! Hat denn ggf. jemand ein Demoscript für mich, mit dem man aus der Raspberrymatic heraus mit Boardmitteln Nachrichten per Pushover versenden kann?
Homematic: Sehr nützlich, aber Finger weg von Funksensoren, wenn es um Zuverlässigkeit geht. Alles was zuverlässig funktionieren soll benötigt RS-485 und Direktverknüpfungen!

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von jp112sdl » 18.10.2021, 15:48

cscarn hat geschrieben:
18.10.2021, 15:33
Hat denn ggf. jemand ein Demoscript für mich, mit dem man aus der Raspberrymatic heraus mit Boardmitteln Nachrichten per Pushover versenden kann?
Will ja kein Spielverderber sein, aber Google nach "homematic pushover" liefert auf Anhieb mind. 2 ausführliche Anleitungen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Benutzeravatar
cscarn
Beiträge: 25
Registriert: 17.12.2013, 08:33

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von cscarn » 19.10.2021, 19:59

Damit funktioniert es ->

Code: Alles auswählen

! Pushover über system.exec und wget by alchy -> geht doch gut, aber ohne Umlaute in Nachricht
string stdout;string stderr;
string message = "Test mit system.exec und wget von Alchy - und ob das geht - nur ohne Ümläüte";
system.Exec("wget --no-check-certificate --post-data 'token=++++++++&user=++++++++++&message="#message#"' -O - https://api.pushover.net/1/messages" , &stdout, &stderr);
Ich würde aber gerne diese Variante nutzen -> https://homematic.simdorn.net/push-meldung/

Dafür müsste das Script von CUxD auf Syste.Exec umgeschrieben werden. Aufgrund meiner fehlenden Linux-Erfahrung bekomme ich das allerdings nicht hin. Geht das überhaupt? Wenn ich das halbwegs richtig verstanden habe, müsste die Befehlszeile rund um po_request verändert werden.

Code: Alles auswählen

!Pushover - Skript
!------------------------------
!__Pushover Keys
string po_api_user="+++++++++++++++++++++++";
string po_api_token="+++++++++++++++++++++++++";
!__Nachricht
string po_title="Betreff";
string po_message="Nachricht";
string po_sound="pushover";
string po_priority="1";
string po_device="Rainers_iPhone"; ! wenn leer, dann Nachricht an alle angemeldete Geräte
!___Nur benoetigt wenn Prioritaet auf Emergency (2) gesetzt ist
string po_retry="30";
string po_expires="3600";
!___Erlaeuterungen
! Sounds: pushover, bike, bugle, cashregister, classical, cosmic, falling, gamelan, incoming, intermission, magic, mechanical, pianobar, siren, spacealarm, tugboat, alien, climb, persistent, echo, updown, none
!Prioritaeten: 0=Normal; 1=High (AudioVibration auch waehrend quiet hour); 2=Emergency (Meldung Muss bestätigt werden, solange sound/Vibration); -1=Low ; -2=Lowest
! Bei Prio 2: po_retry gibt an (in sekunden), wie hauefig eine Nachricht vom Server geschickt wird (z.B. alle 30s)
! Bei Prio 2: po_expires gibt an (in Sekunden), wie lange nachrichten geschickt werden sollen. Bestätigt der User, stoppt die Benachrichtigung. Beispiel: Alle 30 sekunden wird eine Nachricht geschickt, das passiert eine Stunde lang (1 Stunde = 3600 sekunden).
!------ NICHT MODIFIZIEREN-------
string po_request;
if(po_priority=="2"){
po_request="curl -s -k -d token='"#po_api_token#"' -d user='"#po_api_user#"' -d device='"#po_device#"' -d title='"#po_title#"' -d message='"#po_message.ToUTF8()#"' -d priority='"#po_priority#"' -d sound='"#po_sound#"' -d retry='"#po_retry#"' -d expire='"#po_expires#"' https://api.pushover.net/1/messages.json";
}
else{
po_request="curl -s -k -d token='"#po_api_token#"' -d user='"#po_api_user#"' -d device='"#po_device#"' -d title='"#po_title#"' -d message='"#po_message.ToUTF8()#"' -d priority='"#po_priority#"' -d sound='"#po_sound#"' https://api.pushover.net/1/messages.json";
}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(po_request);
Kann jemand helfen?
Homematic: Sehr nützlich, aber Finger weg von Funksensoren, wenn es um Zuverlässigkeit geht. Alles was zuverlässig funktionieren soll benötigt RS-485 und Direktverknüpfungen!

Matthias K.
Beiträge: 1170
Registriert: 14.02.2016, 12:32
System: Alternative CCU (auf Basis OCCU)
Wohnort: Heidenheim
Hat sich bedankt: 57 Mal
Danksagung erhalten: 225 Mal

Re: Migration CCU2 -> Raspberrymatic (virtualisiert->x86)

Beitrag von Matthias K. » 20.10.2021, 13:54

Noch einfacher, du musst eigentlich nur die letzte Zeile ersetzen:

Code: Alles auswählen

system.Exec(po_request);
Wobei es sicher eine gute Idee wäre bei den cURL-Aufrufen noch einen Timeout (-m) mitzugeben, da das Script sonst u.U. minutenlang die komplette CCU blockieren kann:

Code: Alles auswählen

po_request="curl -m 5 -s -k -d...

Antworten

Zurück zu „RaspberryMatic“