Antworten
Apr 02, 2021 - 16:46
Das was Du vorhast, wird von NEO alleine nicht unterstützt, Du kannst nicht einfach XML in NEO einem Textfeld zuweisen.
Was sich über die Jahre geändert hat und inzwischen von NEO selber unterstützt wird, ist das man JSON einem Textfeld zuweisen kann, aber kein XML.
Daher brauchst Du unverändert für solche Sachen ein externes System, das an NEO angebunden wird und das die Daten an ein Textfeld per NEO Plugin übergibt, wie bereits auch schon unter
Dreambox EPG in Fernbedienung integrieren
vor Jahren beschrieben. Geändert hat sich seit dem nur das der Inhalt von Textfeldern auch scrollbar ist.
Ansonsten kannst Du Dein Vorhaben z.B. über Anbindung von IP-Symcon und dem NEO Plugin IP-Symcon realisieren.
Dann kannst Du all die Werte des Geräts, die Du suchst, ganz normal in NEO einzeln einem Textfeld zuordnen.
Anschließend kannst Du Textfelder frei im NEO Creator platzieren und nach Deinem Belieben anordnen.
Längere Listen, die auch Grafiken enthalten bzw. das EPG, das auch zum Umschalten des Geräts dient, werden nicht über ein Textfeld eingebunden, sondern mit einem Element vom Typ Webseite, dem dann ein Status des Geräts über ein NEO Plugin zugewiesen wird.
Hier ist ein Beispiel wie so was aussehen könnte, benutzt wird hier das Icon Set NEO Carbon, die Inhalte bzw. der Status, der den Textfeldern bzw. dem Webseitenelement zugewiesen wurde, stammt in dem Beispiel aus IP-Symcon, dass das Gerät ansteuert und ausliest.
Da der Platz je nach Auflösung immer knapp ist, lassen sich weitere Information in dem Beispiel Screen über Icons neben dem Sender Logo auf der rechten Seite öffnen. Dort kommt man dann zur einem separaten Popup für die EPG Suche, einem separaten Popup um Nachrichten an das Gerät zu schicken, einem separaten Popup für die Aufnahmen und einem Netzwerkinformationen und erweiterten Geräte Informationen und ein separates Popup für die Einstellung des Sleeptimers.
Ein Wechsel der Fernsehsender erfolgt über die Auswahl in der EPG Liste, unten rechts oder Alternativ wir auch hier ein Popup mit einer Senderliste mit einem Swipe geöffnet.
Wie man das letztlich anordnet bzw. darstellt ist ja einem persönlich überlassen, dazu ist NEO da, um das individuell zu gestalten.
Was sich über die Jahre geändert hat und inzwischen von NEO selber unterstützt wird, ist das man JSON einem Textfeld zuweisen kann, aber kein XML.
Daher brauchst Du unverändert für solche Sachen ein externes System, das an NEO angebunden wird und das die Daten an ein Textfeld per NEO Plugin übergibt, wie bereits auch schon unter
Dreambox EPG in Fernbedienung integrieren
vor Jahren beschrieben. Geändert hat sich seit dem nur das der Inhalt von Textfeldern auch scrollbar ist.
Ansonsten kannst Du Dein Vorhaben z.B. über Anbindung von IP-Symcon und dem NEO Plugin IP-Symcon realisieren.
Dann kannst Du all die Werte des Geräts, die Du suchst, ganz normal in NEO einzeln einem Textfeld zuordnen.
Anschließend kannst Du Textfelder frei im NEO Creator platzieren und nach Deinem Belieben anordnen.
Längere Listen, die auch Grafiken enthalten bzw. das EPG, das auch zum Umschalten des Geräts dient, werden nicht über ein Textfeld eingebunden, sondern mit einem Element vom Typ Webseite, dem dann ein Status des Geräts über ein NEO Plugin zugewiesen wird.
Hier ist ein Beispiel wie so was aussehen könnte, benutzt wird hier das Icon Set NEO Carbon, die Inhalte bzw. der Status, der den Textfeldern bzw. dem Webseitenelement zugewiesen wurde, stammt in dem Beispiel aus IP-Symcon, dass das Gerät ansteuert und ausliest.
Da der Platz je nach Auflösung immer knapp ist, lassen sich weitere Information in dem Beispiel Screen über Icons neben dem Sender Logo auf der rechten Seite öffnen. Dort kommt man dann zur einem separaten Popup für die EPG Suche, einem separaten Popup um Nachrichten an das Gerät zu schicken, einem separaten Popup für die Aufnahmen und einem Netzwerkinformationen und erweiterten Geräte Informationen und ein separates Popup für die Einstellung des Sleeptimers.
Ein Wechsel der Fernsehsender erfolgt über die Auswahl in der EPG Liste, unten rechts oder Alternativ wir auch hier ein Popup mit einer Senderliste mit einem Swipe geöffnet.
Wie man das letztlich anordnet bzw. darstellt ist ja einem persönlich überlassen, dazu ist NEO da, um das individuell zu gestalten.
Apr 02, 2021 - 19:50
Hallo ViceLord!
ich stand vor kurzem vor einer ähnlichen Herausforderung - wie auch von Fonzo beschrieben geht das leider nur über über Zusatzsoftware - in meinem Fall ein Homematic CCU2 Script (und installiertem CUxD).
Anbei mein CCU2 Script für das Auslesen des aktuellen Senders und der aktuellen Sendung auf einer Dreambox mit Newnigma2:
Martin
ich stand vor kurzem vor einer ähnlichen Herausforderung - wie auch von Fonzo beschrieben geht das leider nur über über Zusatzsoftware - in meinem Fall ein Homematic CCU2 Script (und installiertem CUxD).
Anbei mein CCU2 Script für das Auslesen des aktuellen Senders und der aktuellen Sendung auf einer Dreambox mit Newnigma2:
!- Get Dreambox Status and Program
!- MG 2021-03-20
!- debug and update on or off
var debug = false;
var update = true;
!- ***************** dreambox urls ************************
string dbip = "192.168.1.104";
string powerstate = "/web/powerstate";
string currentservice = "/web/getcurrent";
string aw;
string sub_aw;
string wort;
string daten;
var wort_position;
var wort_laenge;
string servicename = "";
string eventname = "";
string status = "?";
!- ***************** get powerstate ***********************
string url= "'" + "http://" + dbip + powerstate + "'";
if( debug ) {
WriteLine(url);
}
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - "#url);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
aw = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
if( debug ) {
WriteLine(aw);
}
integer antwort = aw.Find("true"); !- search for instandby == true
if ( antwort == -1 ){ !- dreambox not in standby
status = "on";
!- ***************** get current **************************************
url= "'" + "http://" + dbip + currentservice + "'";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - "#url);
if( debug ) {
WriteLine(url);
}
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
aw = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
if( debug ) {
WriteLine(aw);
}
integer laenge = aw.Length();
if ( laenge > 0 ){
wort = "e2eventservicename";
wort_laenge = wort.Length();
wort_position = aw.Find(wort);
if( wort_position == -1 ) { !- e2eventservicename nicht gefunden
servicename = "-";
} else {
sub_aw = aw.Substr(wort_position, (laenge - wort_position));
laenge = sub_aw.Length();
if( debug ) {
WriteLine(sub_aw);
}
wort = "/e2eventservicename";
wort_position = sub_aw.Find(wort);
if( wort_position == -1 ) { !- /e2eventservicename nicht gefunden
servicename = "-";
} else {
servicename = sub_aw.Substr(wort_laenge+1,(wort_position-wort_laenge+2));
}
}
wort = "e2eventname";
wort_laenge = wort.Length();
wort_position = aw.Find(wort);
if( wort_position == -1 ) { !- e2eventname nicht gefunden
servicename = "-";
} else {
sub_aw = aw.Substr(wort_position, (laenge - wort_position));
laenge = sub_aw.Length();
if( debug ) {
WriteLine(sub_aw);
}
wort = "/e2eventname";
wort_position = sub_aw.Find(wort);
if( wort_position == -1 ) { !- /e2eventname nicht gefunden
eventname = "-";
} else {
eventname = sub_aw.Substr(wort_laenge+1,(wort_position-wort_laenge+2));
}
}
}
} else {
if ( antwort > 0 ){ !- dreambox in standby
status = "off" ;
}
}
if( update ) {
dom.GetObject("Dreambox_Status").State(status);
!- UTF-8 nach Latin ISO-8859 konvertieren
servicename = servicename.ToLatin();
dom.GetObject("Dreambox_Servicename").State(servicename);
!- UTF-8 nach Latin ISO-8859 konvertieren
eventname = eventname.ToLatin();
dom.GetObject("Dreambox_Eventname").State(eventname);
}
aw = "";
sub_aw = "";
!- ******************* continuous update *******************
if( status == "on" ) {
!- CUxD Timer
string timer_number = "CUX2800006";
!- CUxD Timer number and command
string timer_db = ":1.TIMER_SET";
string timer_we_db = ":2.TIMER_SET";
!- delay in seconds for next update
integer delay = 29;
string objectname = "CUxD." + timer_number + timer_db;
dom.GetObject(objectname).State(delay); !- set timer
if( debug ) {
WriteLine(delay);
}
}
Schöne Grüße,Martin
Neuen Kommentar hinzufügen