[GELÖST] Upgrade auf 20171007: kein Import Mediola Creator Neo mögl.

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

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
Joerch
Beiträge: 16
Registriert: 24.06.2016, 09:06
Wohnort: Rheinland
Hat sich bedankt: 2 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von Joerch » 16.10.2017, 13:56

jmaus hat geschrieben:
Weiss zwar nicht was CloudMatic mit Mediola Creator im engeren Sinne zu tun haben soll. aber wenn bei dir Media Creator Neo auch nicht mit einer CCU2+FW 2.29.22 geht dann bin ich schon einmal etwas beruhigt, denn dann ist das kein RaspberryMatic-spezifisches Problem.
das meinte ich damit :D

MiKKey
Beiträge: 11
Registriert: 29.04.2015, 16:22
Wohnort: Pulheim

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von MiKKey » 16.10.2017, 18:00

jmaus hat geschrieben:
MiKKey hat geschrieben: Selbes Problem bei mir. Ich habe die Mediola Log-Datei an den Mediola Support geschickt. Mal schauen was dabei rauskommt.
Zeig doch mal bitte die Mediola Log-Datei auch hier nur um auszuschliessen das ich darin auch bereits ein Problem ausmachen kann.

Habe ich dir gerade per PM geschickt.
277 Kanäle in 102 Geräten

Benutzeravatar
Joerch
Beiträge: 16
Registriert: 24.06.2016, 09:06
Wohnort: Rheinland
Hat sich bedankt: 2 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von Joerch » 16.10.2017, 20:02

So, noch mal kurz ein Status von mir. Ich hatte vergangene Woche bei mir in der CCU2 die Logikschicht von „Standard“ auf „Community“ umgestellt.
Habe jetzt das ganze mal zurück geswitched und prompt werden mir alle Geräte in Mediola angezeigt und ich kann wieder problemlos importieren.
Ich hoffe das hilft Euch weiter!

Gruß Joerch

Benutzeravatar
jmaus
Beiträge: 9848
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: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von jmaus » 16.10.2017, 20:09

Das hilft in der Tat sehr. Hast du ggf eine neuere ReGa beta manuell installiert oder ist das die standard community version die bei der 2.29.22 dabei ist? Kannst du auch mal bitte auf die Communityversion zurückgehen und schauen ob bei dir Fehlermeldungen im syslog der CCU2 kommen wenn du die mediola gerätesuche startest...
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

JoMass
Beiträge: 316
Registriert: 26.11.2016, 12:52
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von JoMass » 16.10.2017, 20:33

Kann leider auch keine Geräte in Mediola mehr updaten; Fehlermeldung wie beschrieben; Im LOG der RaspiCCU sind keinerlei Einträge dazu
JoMass
~200 Geräte; ~70 Programme FW: 3.75.6.20240316 – Odroid N2+ 4GB 64GB-SSD , Homeassistant (latest), - HISTORIAN V3.6.0 auf QNAP; Mediola AIO Creator NEO - Node-RED (Current version: 17.0.10 (3.1.7))

Benutzeravatar
Joerch
Beiträge: 16
Registriert: 24.06.2016, 09:06
Wohnort: Rheinland
Hat sich bedankt: 2 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von Joerch » 16.10.2017, 21:02

jmaus hat geschrieben:Das hilft in der Tat sehr. Hast du ggf eine neuere ReGa beta manuell installiert oder ist das die standard community version die bei der 2.29.22 dabei ist? Kannst du auch mal bitte auf die Communityversion zurückgehen und schauen ob bei dir Fehlermeldungen im syslog der CCU2 kommen wenn du die mediola gerätesuche startest...
Ich hatte keine manuell installierte ReGa-Beta sondern alles aus der Standard FW 2.29.22.
ReGa Umstellung muss ich morgen früh machen.

JoMass
Beiträge: 316
Registriert: 26.11.2016, 12:52
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von JoMass » 16.10.2017, 21:19

Code: Alles auswählen

></xml>
16/10/2017 20:23:26.779 error: [FRONTEND] [DeviceManager.HomeMatic.listDevices] Backend returned null (no devices/programs/sysvars found).
16/10/2017 20:23:26.779 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:23:44.006 trace: [WebServer] POST:/api/data/config/tenants/1/remotes/4 body: [object Object]
16/10/2017 20:23:45.158 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:23:45.159 debug: [FRONTEND] [Remote.sendAfterSaveSignal] Backend processed saved pages.
16/10/2017 20:24:24.696 trace: [WebServer] PUT:/api/devicemanager/1/gateway/1 body: [object Object]
16/10/2017 20:24:24.713 all: [FRONTEND] [DeviceManager.update] Update successful: {"index":1,"name":"MassCCU","info":{"sys":"hm","ip":"CCU_IP_adresse","port":80,"uuid":"LEQ1013516","password":"","username":"","mac":"","tclport":0}}
16/10/2017 20:24:24.712 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:24:24.711 trace: [WebServer] GET:/api/devicemanager/1/gateway?_=1508177922825 body: [object Object]
16/10/2017 20:24:24.767 all: [FRONTEND] [DeviceManager._callbackReadGateways] Loaded gateways: 2 (1ms)
16/10/2017 20:24:24.766 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:24:24.767 debug: [FRONTEND] [DeviceManager.getGatewayList] Cached gateway list. (1ms)
16/10/2017 20:24:24.767 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:24:32.981 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:24:32.981 debug: [FRONTEND] [DeviceManager.getRoomDeviceList] Cached room-device list. (1ms)
16/10/2017 20:24:44.851 all: [FRONTEND] [DeviceManager.HomeMatic.listDevices] Searching for devices in the HomeMatic CCU with IP "CCU_IP_adresse:80" ...
16/10/2017 20:24:44.852 trace: [WebServer] POST:/module/hm/listdevices body: [object Object]
16/10/2017 20:24:44.851 trace: [WebServer] POST:/api/logmanager/log body: [object Object]
16/10/2017 20:24:44.853 debug: [xnm.aio.hm.MHMCCU] get device list from ccu:CCU_IP_adresse
16/10/2017 20:24:48.136 debug: [xnm.aio.hm.MHMCCU] <xml><exec>/tclrega.exe</exec><sessionId></sessionId><httpUserAgent>User-Agent: mediola</httpUserAgent><res>{"devices":{"4902":{"name":#[Bewegungsmelder_EG]#,"typename":&....
es folgen alle Geräte  ende mit <xml> 
das ist das PC-LOG zwischen 2 Versuchen den Mediola Devicemanager zu aktualisieren. Versuch 1 endet mit <XML> am beginn des Logs und die Meldungen des 2.Versuchs habe ich vor der lange Liste an Geräten abgeschnitten. Vielleicht bringts was
JoMass
~200 Geräte; ~70 Programme FW: 3.75.6.20240316 – Odroid N2+ 4GB 64GB-SSD , Homeassistant (latest), - HISTORIAN V3.6.0 auf QNAP; Mediola AIO Creator NEO - Node-RED (Current version: 17.0.10 (3.1.7))

Benutzeravatar
jmaus
Beiträge: 9848
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: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von jmaus » 16.10.2017, 22:42

Hallo JoMass,

danke, das hilft wirklich sehr weiter denn ich denke das ist es:
JoMass hat geschrieben:

Code: Alles auswählen

16/10/2017 20:24:44.853 debug: [xnm.aio.hm.MHMCCU] get device list from ccu:CCU_IP_adresse
16/10/2017 20:24:48.136 debug: [xnm.aio.hm.MHMCCU] <xml><exec>/tclrega.exe</exec><sessionId></sessionId><httpUserAgent>User-Agent: mediola</httpUserAgent><res>{"devices":{"4902":{"name":#[Bewegungsmelder_EG]#,"typename":&....
es folgen alle Geräte  ende mit <xml>
Was man hier sieht ist die Antwort der CCU2 bzw. RaspberryMatic. Diese Antwortet mit einem <xml></xml> string und innerhalb des <xml></xml> wird die Antwort bzw. das Resultat zwischen <res></res> gepackt. Und was man darin vor allem sieht ist, das die neueren Versionen der ReGaHss hier korrekterweise nun Sonderzeichen (unter anderem Anführungszeichen) als &xxxx; Strings escapt. D.h. hier wird der String {"devices":{"4902".... als {"devices":{"4902&quote;.... zurück gegeben. Und hier bin ich mir ziemlich sicher das hier Mediola eben durch diese neue Art des escapens von zurückgegebenen <xml></xml> Responses durcheinander kommt und erwartet das dies ausschliesslich in unescapter Form passiert. Hier muss also Mediola NEO von den Entwickler an diese neuen Gegebenheiten angepasst werden und vor weiterer Nutzung des xml-reponses der String durch einen URL-decoder geleitet werden der die &xxx; Sequenzen in entsprechende unescapte Strings wandelt.

Des Weiteren habe ich durch die Installation der Testversion (danke DrTob für den Tipp) herausgefunden das der von Mediola verwendete ReGa-Abfrageskript (der die oben genannte "res" Ergebnisvariable erzeugt) in der Tat auch noch ein Bug hat, der bei der Nutzung der Community-Version von ReGa korrekterweise zu einem ScriptRuntimeError führt. Der von Mediola entwickelte und verwendete Skript ist dieser hier:

Code: Alles auswählen

!# Get the device list
string res = '{';

string sDevId;
string sChnId;
string sDptId;
string sRoomId;
string sFunctionId;
object oDevice;
object oChannel;
object oDatapoint;
object oRoom;
string sDevInterfaceId;
string sDevInterfaceName;
boolean dFirst = true;
boolean cFirst = true;
boolean dpFirst = true;
boolean hasRoom = true;
res = res # '"devices":{';
foreach(sDevId, root.Devices().EnumUsedIDs()) {
	if (dFirst) {
		dFirst=false;
	} else {
		res = res # ',';
	}
	oDevice = dom.GetObject(sDevId);
	sDevInterfaceId = oDevice.Interface();
    sDevInterfaceName = dom.GetObject(sDevInterfaceId).Name();
	res = res # '"' # sDevId # '":{"name":#[' # oDevice.Name();
	res = res # ']#,"typename":"' # oDevice.TypeName();
	res = res # '","hsstype":"' # oDevice.HssType();
	res = res # '","address":"' # oDevice.Address();
	res = res # '","interface":"' # sDevInterfaceName;
	res = res # '","channels":{';

	cFirst = true;
	foreach(sChnId, oDevice.Channels()) {
		if (cFirst) {
			cFirst=false;
		} else {
			res = res # ',';
		}
		res = res # '"' # sChnId# '":{';
		oChannel = dom.GetObject(sChnId);
		res = res # '"hsstype":"' # oChannel.HssType();
		res = res # '","name":#[' # oChannel.Name();
		sFunctionId = oChannel.ChnFunction();
		res = res # ']#,"func":"' # dom.GetObject(sFunctionId);
		res = res # '","room":[';

        hasRoom = false;
		foreach(sRoomId, oChannel.ChnRoom()) {
		  oRoom = dom.GetObject(sRoomId);
		  res = res # '#[' # oRoom.Name();
          res = res # ']#,';
          hasRoom = true;
		}
		if (hasRoom) {
		  res = res.Substr(0, res.Length()-1);
		}
		res = res # ']';
		res = res # ',"address":"' # oChannel.Address() # '"';

        !read datapoint for CUxD device
        if (sDevInterfaceName == 'CUxD') {
          res = res # ',"datapoints":[';
          dpFirst = false;
          foreach(sDptId, oChannel.DPs()) {
            oDatapoint = dom.GetObject(sDptId);
            res = res # '"' # oDatapoint.HssType() # '"';
            res = res # ',';
            dpFirst = true;
          }
          if (dpFirst) {
            res = res.Substr(0, res.Length()-1);
          }
          res = res # ']';
        }
        !res = res # '","datapoints":{';
        !dpFirst = true;
        !foreach(sDptId, oChannel.DPs()) {
        !    if (dpFirst) {
        !        dpFirst=false;
        !    } else {
        !    	res = res # ',';
        !    }
        !    res = res # '"' # sDptId# '":{';
        !    oDatapoint = dom.GetObject(sDptId);
        !    res = res # '"name":"' # oDatapoint.Name();
        !    res = res # '","typename":"' # oDatapoint.TypeName();
        !    res = res # '","valuetype":"' # oDatapoint.ValueType();
        !    res = res # '","operations":"' # oDatapoint.Operations() # '"}';
        !}
        !res = res # '}}';
        res = res # '}';
	}
	res = res # '}}';
}
res = res # '},';

res = res # '"systemvars":{';
dFirst = true;
string sValue;
foreach(sDevId, dom.GetObject(ID_SYSTEM_VARIABLES).EnumUsedIDs()) {
	if (dFirst) {
		dFirst=false;
	} else {
		res = res # ',';
	}
	oDevice = dom.GetObject(sDevId);

  res = res # '"' # sDevId # '":{"name":#[' # oDevice.Name();
  res = res # ']#,"valuetype":"' # oDevice.ValueType();
  !res = res # '","valuesubtype":"' # oDevice.ValueSubType();
  !res = res # '","value":';
  !if (oDevice.ValueType() == 20) {
  !		res = res # '"' # oDevice.Value() # '"';
  !} else {
  !  sValue = oDevice.Value();
  !  if (oDevice.ValueType() == 2) {
  !    if (sValue) {
  !      res = res # "true";
  !    } else {
  !      res = res # "false";
  !    }
  !  } else {
  !    if (sValue == "") {
  !      res = res # "0";
  !    } else {
  !  	 res = res # sValue;
  !    }
  !  }
  !}
  res = res # '"}';
}
res = res # '},';

res = res # '"progs":{';
dFirst = true;
foreach(sDevId, dom.GetObject(ID_PROGRAMS).EnumUsedIDs()) {
	if (dFirst) {
		dFirst=false;
	} else {
		res = res # ',';
	}
	oDevice = dom.GetObject(sDevId);

  res = res # '"' # sDevId # '":{"name":#[' # oDevice.Name();
  res = res # ']#,"active":"' # oDevice.Active() # '"';

  res = res # '}';
}

res = res # '}}';
sDevId="";
sChnId="";
sDptId="";
sRoomId="";
sFunctionId="";
oDevice="";
oChannel="";
oDatapoint="";
oRoom="";
sDevInterfaceId="";
sDevInterfaceName="";
dFirst="";
cFirst="";
dpFirst="";
sValue="";
Führt man dieses nun aus kommt es zu einem "ScriptRuntimeError" der durch folgende foreach() schleife innerhalb des Skriptes ausgelöst wird:

Code: Alles auswählen

...
          foreach(sDptId, oChannel.DPs()) {
            oDatapoint = dom.GetObject(sDptId);
            res = res # '"' # oDatapoint.HssType() # '"';
            res = res # ',';
            dpFirst = true;
          }
...
Die Zeile die diesen ScriptRuntimeError auslöst ist die mit der Nutzung der HssType() Methode. Da in dieser foreach() schleife alle Datenpunkte eines Kanals abgearbeitet werden fehlt hierbei der Check nach einem konkreten HSSDP Types da nur für den die HssType() Methode auch gilt. Die foreach() schleife muss daher wie folgt angepasst werden:

Code: Alles auswählen

...
          foreach(sDptId, oChannel.DPs()) {
            oDatapoint = dom.GetObject(sDptId);
            if (oDatapoint.TypeName() == "HSSDP") {
              res = res # '"' # oDatapoint.HssType() # '"';
              res = res # ',';
              dpFirst = true;
            }
          }
...
D.h. es muss ein TypeName() Check eingebaut werden bevor die HssType() Methode auf einen Datenpunkt angewendet werden darf.

Zusammenfassend muss also gesagt werden, dass hier wohl Bugfixes von Mediola Crestor Neo notwendig sind, diese allerdings recht überschaubar sind. Auf der einen Seite müsste in Mediola Creator wohl der als <res></res> empfangene Result-String durch eine url decoding Funktion geleitet werden der die &xxxx; strings in einen normalen string wandelt und auf der anderen Seite der ReGa-Abfrageskript um die reparierte foreach() Schleife erweitert werden.

Wenn also jemand direkten Kontakt zu Mediola hat und das gerne als Lösung des Problems melden möchte, dann bitte machen. :)
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

JoMass
Beiträge: 316
Registriert: 26.11.2016, 12:52
Hat sich bedankt: 6 Mal
Danksagung erhalten: 11 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von JoMass » 17.10.2017, 00:07

bin leider bis Samstag beruflich unterwegs und kann bis dahin nichts weiter unternehmen
JoMass
~200 Geräte; ~70 Programme FW: 3.75.6.20240316 – Odroid N2+ 4GB 64GB-SSD , Homeassistant (latest), - HISTORIAN V3.6.0 auf QNAP; Mediola AIO Creator NEO - Node-RED (Current version: 17.0.10 (3.1.7))

Benutzeravatar
Homematic-Fan
Beiträge: 81
Registriert: 22.08.2015, 13:07
Hat sich bedankt: 18 Mal
Danksagung erhalten: 2 Mal

Re: Upgrade auf 20171007: kein Import Mediola Creator Neo mö

Beitrag von Homematic-Fan » 17.10.2017, 09:17

Habe bei Mediola ein Ticket im Bugtracker eröffnet:

https://mantis.mediola.com/view.php?id=1461

Gruß Andi
2x Raspberry-Matic auf Tinkerboard-S, 3x Raspberry Pi3B für diverse Aufgaben, 1x CCU-2, 2x Synology DS216/218play, 2x ioBroker auf Rasberry Pi4, Grafana, 1x Wiffi-WZ, >210 Geräte
Gardena R40Li mit Robonect und Steuerung komplett über HM
1x IPad Air2, 5x Android-Tab 7", alle mit Mediola Neo

Antworten

Zurück zu „RaspberryMatic“