_
toggle menu eXmatrikulationsamt.de
online: 443 gäste
Themen Layout: [Standard] · Linear · Outline Thema abonnieren | Thema versenden | Thema drucken
post 04 Jan 2011, 20:56
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Wie oben schon erwähnt: Das Plugin scheint nach einigen Stunden zu hängen, was sich darin äußert, dass man das Fenster mit der Linienübersicht nicht mehr aufmachen kann und das Gnome-Panel im Arsch ist oder so. Schätze ich hab vergessen irgendwo zwischendrin aufzuräumen. Falls das bei euch vorkommt, lasst es mich wissen smile.gif


--------------------
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 02:32

Neuling


Punkte: 9
seit: 15.07.2005

Schön, dass es wieder etwas Bewegung hier gibt. Nicht alle haben so viel Platz im Panel. Kann man den Panel-Knopf auch kleiner machen bzw. abgekürzt darstellen?
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 07:06
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Also 1. gibt es eine neue Version, die hoffentlich nicht mehr sinnlos rumhängt und das Panel dichtmacht, wenn der VVO-Service mal wieder Fehler spuckt: klicksu

2. Für Python-Könner ist der Code zur Anzeige im Panel in Zeile 66 versteckt. Vorschläge zur Optimierung bei wenig Platz werden gerne gehört, aktuell fällt mir grad nichts ein.

3. Es ist ein kompletter rewrite (weil Code==untergründig) geplant. Es soll auch einen Webservice (und einen Daemon) geben, den man auf einem Tomcat o. ä. deployen kann (was den Webservice angeht) und für den es dann verschiedene Front-Ends geben kann, wie zum Beispiel das Plugin. Der Service lässt sich dann in einem Heimnetzwerk prima nutzen, um z. B. auch Windows-Applets für die Sidebar möglich zu machen. Fertigstellung: When it's done.
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 12:19
avatar
Straight Esh
*********

Punkte: 14030
seit: 01.10.2003

Sehr schön. Dann kann man das Ding wenigstens noch verwenden, wenn Gnome-Shell draußen ist.


--------------------


bonum agere et bonum edere,
sol delectans et matrona delectans

(Verlängere dein Leben indem du hier und hier und hier und hier klickst!)
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 12:40
avatar
parse error
*********

Punkte: 13746
seit: 27.05.2003

kann man das ding auch mehrfach mit verschiedenen einstellungen verwenden, wenn man zwei 30" monitore hat und in ner gegend wohnt wo ganz viele bahnen in der nähe fahren?
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 13:41
avatar
Diplom
********

Punkte: 1884
seit: 17.03.2009

Zitat(mcnesium @ 05 Jan 2011, 11:40)
kann man das ding auch mehrfach mit verschiedenen einstellungen verwenden, wenn man zwei 30" monitore hat und in ner gegend wohnt wo ganz viele bahnen in der nähe fahren?
*



ich schätze, wenn es einmal stabil is, reicht es, das script zu kopieren und umzubenennen, die jeweiligen Angaben zu ändern und dann alle ins panel einzufügen?

biggrin.gif


--------------------
wer braucht schon liebe, wenn man dinge mit käse überbacken kann


"Ihren Ansatz halte ich für interessant, aber irrelevant"


HäMa war hier!!!
Bernd auch...
aeon auch

bild kann nicht angezeigt werden
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 13:49
avatar
alles anzweifeln!
****

Punkte: 472
seit: 01.10.2003

Ooooh, Software! Davon habe ich schonmal gehört! Also - ich würde ja eher ein config file verwenden (python hat .ini und json parser) und dem tool einen parameter für --config-file=... mitgeben. Falls man bei gnome applets keine Parameter angeben kann -> wrapperskript, das das erledigt.


--------------------
I am now surrounded by hypocrites, liars, drunks, clowns, fools, sycophants and the desparate.
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 13:50
avatar
alles anzweifeln!
****

Punkte: 472
seit: 01.10.2003

(einen Parser für cmdline options hat es auch ...)
(und default config file wäre dann ~/.dvbdings oder ~/.gnomeWHATEVER/rtfm/keine/ahnung/was/gnome/da/vorgibt )
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 13:55
avatar
alles anzweifeln!
****

Punkte: 472
seit: 01.10.2003

Zitat(Stormi @ 04 Jan 2011, 19:15)
Wie ich soeben durch eine wunderschöne Nerdfee lernen durfte, gehört die dvb_applet.py bei Ubuntu nach /usr/lib/gnome-applets.
*


Also ich würde ja eher /usr/local/lib/gnome-applets nehmen, wenn gnome das zulässt (sollte) - nach /usr/lib gehören m.E. nur Sachen, die einer Paketverwaltung unterliegen.
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 14:00
avatar
Flunkyballmeister 2010
*******

Punkte: 1415
seit: 26.11.2003

Zitat(anatoL @ 05 Jan 2011, 12:55)
Also ich würde ja eher /usr/local/lib/gnome-applets nehmen, wenn gnome das zulässt (sollte) - nach /usr/lib gehören m.E. nur Sachen, die einer Paketverwaltung unterliegen.
*


was anatol sagt


--------------------
There is a theory which states that if ever anybody discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened.
Douglas Adams
ProfilPM
AntwortenZitierenTOP
post 05 Jan 2011, 17:30
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Wie schon mehrfach geschrieben erhebt der Code keinen Anspruch auf eine irgendwie geartete Qualität, was eben auch die Einstellung der Haltestelle angeht. Diese Einstellung ist in richtig wenn dann nur über das Applet selbst änderbar, alles andere ist natürlich quatsch.

Was den Ablageort angeht, hat er natürlich recht. /usr/local ist sicher besser geeignet, wenn man dem örtlichen Paketmanager nicht ins Handwerk pfuschen will.

Ich habe eine kleine Korrektur am Script vorgenommen, die das Abfrageintervall auf 30 Sekunden heraufsetzt. Die Version von heute früh hatte 10 Sekunden weil wegen Debug wink.gif

Die nächste Version wird dann eher in Richtung "richtig" gehen und ich werde sowohl die Konfiguration, als auch unterschiedliche Anzeigemöglichkeiten (weil wegen Platz) einstellbar über UI einbauen. Evtl. wirds sogar ein Installscript geben. Stay tuned.

Dieser Beitrag wurde von Stormi: 05 Jan 2011, 17:30 bearbeitet
ProfilPM
AntwortenZitierenTOP
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
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: