_
toggle menu eXmatrikulationsamt.de
online: simpson und 384 gäste

> DVB-Widget – Der Abfahrtsmonitor

Themen Layout: Standard · Linear · [Outline] Thema abonnieren | Thema versenden | Thema drucken
post 18 Dec 2007, 00:47
avatar
Froschologe
*********

Punkte: 5016
seit: 01.10.2003

bild kann nicht angezeigt werden

Bisher gibt es das widget nur in kombination mit Yahoo!Widget Software. laut DVB wird dem aber 2oo8 auch abhilfe geschaffen.

Zitat
Zukünftige Widgets

Unsere aktuelle Widget-Version läuft mit der Yahoo! Widget Software auf Microsoft Windows und Apple Macintosh Computern. Anfang 2008 werden wir unseren Abfahrtsmonitor auch als Microsoft Vista Gadget, Mac OS X Dashboard Widget und Opera Widget veröffentlichen. Außerdem arbeiten wir an einer Version für den Google Desktop und iGoogle.


widgets @ dvb.de


--------------------
Lacht kaputt, was euch kaputt macht!
ProfilPM
AntwortenZitierenTOP
 
Antworten
post 06 Jan 2011, 16:12
avatar
Herr Dachs
*********

Punkte: 8394
seit: 15.12.2004

Hier mal eine schmutzige Implementierung eines UPnP-Device welches folgende Möglichkeiten bietet:

SetHaltestelle
SetOrt
GetHaltestelleData

ACHTUNG, DAS IST NUR DEMOSTUFF
Sonderzeichen werden nicht behandelt etc

Kontrolliert werden kann das Device mit jedem Universal-ControlDevice oder mit dem welches ich als nächstes basteln werde, was aber noch ein wenig dauern dürfte.

man braucht folgende libs:
ClingCore
org.json

DVBService.java:
CODE


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package device;

import java.io.*;
import java.util.Date;
import java.net.*;
import org.json.JSONArray;
import org.json.JSONException;

import org.teleal.cling.binding.annotations.*;

@UpnpService(
serviceId = @UpnpServiceId("DVBService"),
serviceType = @UpnpServiceType(value = "DVBService", version = 1)
)

/**
*
* @author kauerauf
*/
public class DVBService {

@UpnpStateVariable(defaultValue = "0")
private String haltestelle = "Sachsenallee";

@UpnpStateVariable(defaultValue = "0")
private String ort = "Dresden";

@UpnpStateVariable(defaultValue = "0")
private String haltestelledata = "";


// @UpnpStateVariable(defaultValue = "0")
// private long letzteakt = 0;

@UpnpAction
public void setHaltestelle(@UpnpInputArgument(name = "SetHaltestelle")
   String newHst) {
 haltestelle = newHst;
}

@UpnpAction
public void setOrt(@UpnpInputArgument(name = "SetOrt")
   String newOrt) {
 ort = newOrt;
}

@UpnpAction(out = @UpnpOutputArgument(name = "GetHaltestelleData"))
public String getHaltestelledata() throws MalformedURLException, IOException, JSONException {
 return getDVBFromServer(ort, haltestelle).toString();
}

// private long getCurrentTime() {
//  Date date = new Date();
//  return date.getTime();
// }

private JSONArray getDVBFromServer(String ort, String hst) throws MalformedURLException, IOException, JSONException {

 String server = "http://widgets.vvo-online.de/abfahrtsmonitor/Abfahrten.do?";
 String params = "ort=" + ort + "&hst=\"" + hst + "\"";
 
//  URL url = new URL(server + params);

 URLConnection connection = new URL(server + params).openConnection();

//  URLConnection connection = url.openConnection();
 BufferedReader input = new BufferedReader(
  new InputStreamReader(
   connection.getInputStream()));
 String inputString;
 String DVBDataS = "";
 while((inputString = input.readLine()) != null)
  DVBDataS = DVBDataS + inputString;
 input.close();

 JSONArray DVBData = new JSONArray(DVBDataS);

 return DVBData;
}

}


Main.java
CODE


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package device;

import java.io.IOException;
import java.net.MalformedURLException;
import org.json.JSONException;
import org.teleal.cling.UpnpService;
import org.teleal.cling.UpnpServiceImpl;
import org.teleal.cling.binding.*;
import org.teleal.cling.binding.annotations.*;
import org.teleal.cling.model.*;
import org.teleal.cling.model.meta.*;
import org.teleal.cling.model.types.*;
/**
*
* @author kauerauf
*/
public class Main implements Runnable{

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) throws MalformedURLException, IOException, JSONException {
       // TODO code application logic here
Thread serverThread = new Thread(new Main());
serverThread.setDaemon(false);
serverThread.start();
    }

   public void run() {
try {
    final UpnpService upnpService = new UpnpServiceImpl();
    Runtime.getRuntime().addShutdownHook(new Thread() {
     @Override
     public void run() {
      upnpService.shutdown();
     }
    });
    upnpService.getRegistry().addDevice(
     createDevice()
    );
    } catch(Exception e) {
     System.err.println("Exception: " +e);
     e.printStackTrace(System.err);
     System.exit(1);
     }
    }

   LocalDevice createDevice() throws ValidationException {
    DeviceIdentity identity = new DeviceIdentity(UDN.uniqueSystemIdentifier("DVB Haltestellenauskunft"));
    DeviceType type = new UDADeviceType("Haltestellenauskunft", 1);
    DeviceDetails details = new DeviceDetails("Freundliche DVB Auskunft", new ManufacturerDetails("Stefan Kauerauf"), new ModelDetails("DVB Haltestellenauskunft", "gibt aktuelle Auskunft über abgehende Nahverkehrsmittel", "v1"));
        LocalService<DVBService> dvbservice = new AnnotationLocalServiceBinder().read(DVBService.class);
    dvbservice.setManager(new DefaultServiceManager(dvbservice, DVBService.class));
    return new LocalDevice(identity, type, details, dvbservice);
   }
}


bevor jetzt alle fragen was sie damit sollen, nein die meisten werdens nicht brauchen, aber vielleicht interessierts jemanden oder er möchte irgendwas damit basteln.

€: falls sich einer wundert, wieso ich den überflüssigen JSON-Schnickschnack mache, das ist gedacht um die Daten im Device noch einfach anzupassen. Leider kann UPnP so einfach kein JSONArray Objekt übergeben, dh der String muss dann auf dem ControlDevice wieder in JSON umgewandelt werden.
ProfilPM
AntwortenZitierenTOP
Beiträge
wombat1st   DVB-Widget – Der Abfahrtsmonitor   18 Dec 2007, 00:47
schnatterinchen   uuuuhhhhhhh......... nice! :yes: bin auch ...   18 Dec 2007, 01:40
schildkroet   für igoogle, ein traum!   18 Dec 2007, 01:46
No Name   Quebaaammmmmmmmmmmmmmmmmmmmm   18 Dec 2007, 10:19
KillerLooP   Falsch! Das sind "echte" Abfahrtsz...   18 Dec 2007, 12:17
loco   na das wollen wir mal hoffen :shifty:   18 Dec 2007, 12:21
schildkroet   Echtzeit wäre spitze. Die Bahn kommt einfach regel...   18 Dec 2007, 13:00
KillerLooP   Bei dem Widget kannst du eine Vorlaufzeit eintra...   18 Dec 2007, 14:12
Zottelfisch   wenn du weißt dass die regelmäßig 2minuten eher ko...   18 Dec 2007, 13:01
Hannsen   Feine Sache :D Da hat sich die DVB ja mal was ri...   18 Dec 2007, 14:31
Socres   oder gdesklets   18 Dec 2007, 15:07
aktsizr   Wer nen fieser Nerd ist kann auch in ein Shells...   18 Dec 2007, 16:14
Socres   geil, das ist doch schonmal nen anfang   18 Dec 2007, 16:27
lusch3   ma frickeln wenn ich wieder heeme bin :)   18 Dec 2007, 16:40
AdD   das ding fetzt mir   18 Dec 2007, 17:33
aktsizr   ist ganz einfach. probier mal: dort wo jetzt m...   18 Dec 2007, 18:16
marco   und wo bleibt das dashboard-widget???   18 Dec 2007, 18:41
mcnesium   das kriegste weg mit utf-8 support: | perl -pe ...   18 Dec 2007, 19:40
stabilo   Danke für das Script, Leute! Ich schau eh nie ...   18 Dec 2007, 20:56
hullbr3ach   Geht nicht auch wget?   19 Dec 2007, 02:01
hullbr3ach   :lol: Das Teil entwickelt sich ja zum Frickelscrip...   19 Dec 2007, 04:03
KillerLooP   Das habt ihr alle fein gemacht! Bienchen in Mu...   19 Dec 2007, 10:43
Chris   Jawollja :)   19 Dec 2007, 12:08
hullbr3ach   Cool, qt4. Kannst ja gleich noch ein KDE4 Plasma W...   19 Dec 2007, 21:49
wicked   gratisspiel 'such das fenster' inklusive ...   21 Dec 2007, 21:49
Chris   hackersau :) gut gemacht ;)   21 Dec 2007, 19:50
hullbr3ach   So, ein KDE 4 Plasma Widschet gibts jetzt auch: ht...   22 Dec 2007, 21:28
hullbr3ach   Der Quellcode fuer das KDE4 Plasma Widget ist mitt...   30 Dec 2007, 17:40
KillerLooP   Der VVO hat jetzt seine eigene Widgetimplementieru...   10 Jan 2008, 12:48
KillerLooP   Immer diese Insider! :D - Viele Grüße in di...   10 Jan 2008, 14:11
hullbr3ach   Noch dazu bei diesem Avatar :hypo:   10 Jan 2008, 18:09
serano   ... oder für Opera? *wart*   26 Jan 2008, 10:21
TheHunter   Ich will och eins für osx .. oder mal gucken .. ba...   26 Jan 2008, 14:32
thejensi1   hab auch mal eine version erstellt, aber diesma fü...   28 Jan 2008, 00:13
erimac   schon sache .danke ~   06 Feb 2008, 18:37
onkelroman   und nu gibts neben dem abfahrtsmonitor auch eine f...   08 Feb 2008, 03:10
tenrapid   Ich konnte nicht mehr warten... Dashboard Widget   09 Feb 2008, 20:01
marco   geile sau...   10 Feb 2008, 00:29
marco   und nun noch das andere teil...   11 Feb 2008, 10:36
yocheckit   ich hab ehrlich gesagt nur ganz kurz in den einste...   14 Feb 2008, 02:38
oZmann   das widget gibts jetzt endlich auch für opera :D   14 Feb 2008, 04:17
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: