Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche Hilfe für Plugin für Auerswald 5020

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • daviid
    antwortet
    Danke, genau das hab ich gesucht.

    Inzwischen spuckt mein Script auch schon nen schönen RSS-Feed aus, muss man nurnoch bisschen verschönern ...

    Code:
    #!/usr/bin/perl 
    
    
    use XML::Writer;
    use IO;
    use LWP::Simple;
    use HTML::Entities;
    use Encode qw(encode decode);
    #use utf8;
    use Encode qw(encode_utf8);
    #use Data::Dumper::Names;
    
    
    my $data_rss= new IO::File(">/tmp/aw-feed.xml");
    my $writer_rss = new XML::Writer (OUTPUT => $data_rss, DATA_MODE => 1, DATA_INDENT=>2);
    $writer_rss->xmlDecl('UTF-8');
    $writer_rss->startTag("rss" ,"version"=>"2.0", "xmlns:content"=>"http://purl.org/rss/1.0/modules/content/");
    $writer_rss->startTag ("channel");
    $writer_rss->dataElement( "title", "Anrufliste" );
    
    
    
    
    # Daten lesen
    open(CSV, '</tmp/csv-tel-data') or die $!;
    @csvInhalt = <CSV>;
    close(CSV);
    chomp(@csvInhalt);
    
    # Header
    
    
    
    
    # HTML- und Tabellenkopf schreiben
    # print qq~
    # <HTML>
    	# <HEAD>
    		# <meta http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-1"> 
    		# <meta http-equiv="expires" content="0">
    		# <meta http-equiv="Language" CONTENT="de">
    		# <meta name="author" CONTENT="Created by David S.">
    		# <meta name="description" content="Gesprächsdaten"> 
    	# </HEAD>
      # <BODY>
        # <TABLE border=1 width="100%">~;
    # Tabelleninhalt schreiben
    foreach (@csvInhalt) {
            ($sp0, $sp1, $sp2, $sp3, $sp4, $sp5, $sp6, $sp7, $sp8, $sp9, $sp10, $sp11, $sp12, $sp13, $sp14, $sp15, $sp16) = (split('	', $_))[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
            # print qq~
          # <TR>
            # <TD>
              # $sp1
            # </TD>
            # <TD>
              # $sp2
            # </TD>
            # <TD>
              # $sp5
            # </TD>
            # <TD>
              # $sp6
            # </TD>
            # <TD>
              # $sp13
            # </TD>
            # <TD>
              # $sp14
            # </TD>
          # </TR>~;
    
    	if ($sp6 eq "-") { $sp6 = "Unbekannt"; }
    	 
    	#<pubDate>Sat, 17 Dec 2011 10:57:00 +0100</pubDate> 
    
    	$sp6 = encode_entities($sp6);
    
    	$writer_rss->startTag ("item");
    	
    	#if ($success eq "vergebl.") {
    	#	$writer_rss->cdataElement( "title", "Verpasster Anruf von $sp_6 ($ex_number)" );
    	#	$writer_rss->cdataElement( "description", "Verpasster Anruf von $ex_name ($ex_number) um $sp2 am $sp1" );
    	#}
    	#else {
    		$writer_rss->cdataElement( "title", "Anruf von $sp6 ($sp6)" );
    		$writer_rss->cdataElement( "description", "Anruf von $ex_name ($sp6) um $sp2 am $sp1" );
    	#}
    	
    	
    #	$writer_rss->emptyTag ("call",'date' => @{$call}[1], 'time'=> @{$call}[2],'length' => @{$call}[3],'ex-number' => @{$call}[5],'ex-name' => @{$call}[6],'direction' => @{$call}[14],'success' => @{$call}[15]);	
    	$writer_rss->endTag("item");
    	  
    }
    
    $writer_rss->endTag ("channel");
    $writer_rss->endTag ("rss");
    
    # HTML- und Tabellenfuss schreiben
    # print qq~
        # </TABLE>
      # </BODY>
    # </HTML>~;

    Einen Kommentar schreiben:


  • makki
    antwortet
    im Bash-script ?

    Code:
    if [ -e /tmp/tel-data.csv ]; then
      # mach was sinvolles hier
    else
      # mach was anderes
    fi
    das -e (Datei existiert) oder nicht (! -e) sind übrigens Standard-tests und funktionieren in Perl nahezu syntaktisch (die Bash ist bei den Leerzeichen pingelinger, s.o.) gleich!

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    OK, auf den Ram hätt ich auch kommen können.

    Zu der Sache mit Script und PLugin.
    Also das Script läuft schon relativ lang (mehrere Sekunden!), und da ich das eh so als Script gefunden hab und das sofort funktioniert hat hab ich ich mir gedacht, das kann man ja auch so lassen, da braucht man kein großes Büro aufmachen.


    Aber noch ne andere Frage.
    Wie kann ich im Script überprüfen ob die Datei csv-tel-data schon vorhanden ist?

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von daviid Beitrag anzeigen
    Ich hab mir das so gedacht, das Script wird jede Minute (oder gibts da Einwände für die Lebensdauer der CF-Karte?) als Cronejob aufgerufen.
    Eigentlich nicht, also IMHO wurscht - aber bevor ich mir in 2J die jammereien der BastelGates durchlese und mich dabei amüsiere: lieber in /tmp auf die RAM-disk schreiben..

    Oder habt ihr bessere Vorschläge das zu lösen?
    Wenns (der Server!) langsam ist: der richtige Weg.. Ansonsten kann man das auch flockig im Plugin ohne wegschreiben holen und dann einfach direkt parsen (dito: LWP::Useragent)

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    ik

    nach kurzem googeln ist das hier dabei raus gekommen:
    Code:
    #!/usr/bin/perl 
    # Daten lesen
    open(CSV, '<./daten/csv-tel-data') or die $!;
    @csvInhalt = <CSV>;
    close(CSV);
    chomp(@csvInhalt);
    
    # Header
    
    
    
    
    # HTML- und Tabellenkopf schreiben
    print qq~
    <HTML>
    	<HEAD>
    		<meta http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-1"> 
    		<meta http-equiv="expires" content="0">
    		<meta http-equiv="Language" CONTENT="de">
    		<meta name="author" CONTENT="Created by David S.">
    		<meta name="description" content="Gesprächsdaten"> 
    	</HEAD>
      <BODY>
        <TABLE border=1 width="100%">~;
    # Tabelleninhalt schreiben
    foreach (@csvInhalt) {
            ($sp0, $sp1, $sp2, $sp3, $sp4, $sp5, $sp6, $sp7, $sp8, $sp9, $sp10, $sp11, $sp12, $sp13, $sp14, $sp15, $sp16) = (split('	', $_))[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
            print qq~
          <TR>
            <TD>
              $sp1
            </TD>
            <TD>
              $sp2
            </TD>
            <TD>
              $sp5
            </TD>
            <TD>
              $sp6
            </TD>
            <TD>
              $sp13
            </TD>
            <TD>
              $sp14
            </TD>
          </TR>~;
    }
    
    # HTML- und Tabellenfuss schreiben
    print qq~
        </TABLE>
      </BODY>
    </HTML>~;
    Das gibt schon ne schöne Tabelle, das ganze noch so umstricken dass da nen xml (rss) raus kommt und rein damit in die CV
    Wie das geht weiß ich inzwischen schon.

    Hab aber noch ne andere Frage, mein Code zum abrufen sieht jetzt so aus:
    Code:
    #!/bin/sh
    
    # hier das Verzeichnis eintragen, wo die Daten hingehen sollen:
    rm /var/www/cgi-bin/daten/csv-tel-data
    outputfile=/var/www/cgi-bin/daten/csv-tel-data.gz
    # hier wird der cookie gespeichert, muss man aber nicht ändern:
    cookie=/tmp/cookie.txt
    # IP-Adresse der TK-Anlage:
    auerswald=172.26.193.147
    # Passwort:
    passwort=123456
    curl -s --cookie-jar $cookie -o /dev/null -d "LOGIN_NAME=admin" -d "LOGIN_NOW=" -d "LOGIN_PASS=$passwort" http://$auerswald/login_json
    curl -s --cookie $cookie -o /dev/null http://$auerswald/page_listgespr_export
    curl -s --cookie $cookie --location -o $outputfile http://$auerswald/data_tmp/gespr_dat.csv.gz
    curl -s --cookie $cookie -o /dev/null http://$auerswald/appclose
    rm $cookie
    gzip -d /var/www/cgi-bin/daten/csv-tel-data.gz
    Ich hab mir das so gedacht, das Script wird jede Minute (oder gibts da Einwände für die Lebensdauer der CF-Karte?) als Cronejob aufgerufen.
    Das Script läd die Daten immer in die gleiche Datei csv-tel-data.gz, die wird am ende vom Script entpackt, dann gibts nurnoch csv-tel-data.

    Soweit so gut, jetzt würd ich einfach gerne am Anfang vom Script überprüfen ob es die Datei csv-tel-data schon gibt, und wenn ja soll die gelöscht werden.

    Oder habt ihr bessere Vorschläge das zu lösen?

    Gruß
    David

    Einen Kommentar schreiben:


  • makki
    antwortet
    Fällt mir spontan das hier ein:
    SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/SunnyWeb-CSV.pl
    CSV ist in Perl ein Kinderspiel im Gegensatz zu irgendwelchem HTML/XML-gedönse.
    Das wird dort aber (weil die Sunnyweb sehr gemächlich ist) auch per crontab abgerufen; steht in Stichworten im Kommentar..
    In kurz: Datei öffnen, foreach ... <file> { mach was; }

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    So ich meld mich mal wieder, wollte mal wieder weiter machen, aber irgendwie gibts da nur Probleme

    Irgendwie scheint die API bei mir mit der 5020 VOIP nicht mehr zu funktionieren, und zwar nutz ich folgende URL https://172.26.193.147/app_call_list...b&userpw=blubb
    Als Rückgabe erhalte ich: "[]", das kann irgendwie nicht sein.

    Firmware ist die neuste, dafür hab ich bischen gegoogelt und das Hier gefunden.

    Den Code noch um eine Zeile erweitert und gut is:
    Code:
    #!/bin/sh
    
    # hier das Verzeichnis eintragen, wo die Daten hingehen sollen:
    outputfile=/var/www/AW/daten/csv-$(date +%Y-KW%V).gz
    # hier wird der cookie gespeichert, muss man aber nicht ändern:
    cookie=/tmp/cookie.txt
    # IP-Adresse der TK-Anlage:
    auerswald=172.26.193.147
    # Passwort:
    passwort=123456
    curl -s --cookie-jar $cookie -o /dev/null -d "LOGIN_NAME=admin" -d "LOGIN_NOW=" -d "LOGIN_PASS=$passwort" http://$auerswald/login_json
    curl -s --cookie $cookie -o /dev/null http://$auerswald/page_listgespr_export
    curl -s --cookie $cookie --location -o $outputfile http://$auerswald/data_tmp/gespr_dat.csv.gz
    curl -s --cookie $cookie -o /dev/null http://$auerswald/appclose
    rm $cookie
    gzip -d /var/www/AW/daten/csv-$(date +%Y-KW%V).gz
    Jetzt hab ich schonmal die Daten als CSV, aber hat von euch jemand in nem Plugin fürs WG schonmal CSV aufbereitet?

    Ich google gleich mal, will das hier nur erstmal als kleine "Dokumentation" posten

    Einen Kommentar schreiben:


  • tkuehnel
    antwortet
    Siehe hierzu auch:

    Auerswald Systemschnittstelle

    Einen Kommentar schreiben:


  • tkuehnel
    antwortet
    Moin,

    Auerswald hat für so etwas auch eine App-Schnittstelle, die zwar für die größeren Anlagen konzipiert wurde, aber auch auf der COMpact 5020 funktioniert:

    <IP>/app_call_list?username=XXXXXX&userpw=XXXXXX

    username muss der Teilnehmer sein, dessen Anruferliste Du haben willst. userpw ist in die Benutzerpin des Teilnehmers

    Beste Grüße

    Torsten

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von daviid Beitrag anzeigen
    Aber jetzt ist es leider so wies ist, ..
    Klar, ich kenne das auch schon dutzendfach Daher auch die "harte" Grundhaltung für neues, LG hat ne Doku für die RS232 beiliegen, Samsung nicht:= und tschüss

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    Die Anlage war damals so ziemlich das Beste was ich für den Preis mit den riesen Funktionsumfang gefunden hab, nur damals kannte ich KNX glaub ich noch garnicht und hatta dafür auch kein besonders hohen Bedarf.

    ich präferiere nur noch Geräte zu kaufen die sowas dokumentiert haben.. sonst: =aussortiert..
    Entspricht ziemlich meiner Meinung (Stichwort Samsung TV [irgendwann ist auch unser "uralter" Sharp Aquos mal fällig ...])

    Aber jetzt ist es leider so wies ist, ich werd mal versuchen mich weiter zu informieren, dass muss ja irgendwie zu schaffen sein ...

    David

    Einen Kommentar schreiben:


  • makki
    antwortet
    Leider "normal"- es kommt drauf an wieviel Energie man da reinstecken mag, einhacken lässt sich im Zweifel alles, eine Frage des Aufwandes (ich präferiere nur noch Geräte zu kaufen die sowas dokumentiert haben.. sonst: =aussortiert..)

    Makki

    Einen Kommentar schreiben:


  • daviid
    antwortet
    Hab ich ja schonmal, die stellen auf Stur.
    Bla bla ist nicht angedacht oder wird weitergeleitet, auf gut Deutsch, mein Lieber Kunde, du kannst mich mal ...

    Einen Kommentar schreiben:


  • emax
    antwortet
    Ich benutze meine Auerswald nur via Web-Interface. Automatisch mach ich da nichts. Vielleicht ginge ja was via Web-Programmierung, aber davon verstehe ich nicht viel.

    Frage doch mal bei Auerswald an. Manchmal hat man bei Deutschen Firmen da Glück. Und wenn Du Erfolg hast, lass es uns bitte wissen :-)

    Einen Kommentar schreiben:


  • daviid
    antwortet
    Ich kram den Thread mal wieder aus ...

    Mich nervts langsam kolossal dass ich nich an die Daten komm, das decodieren ist ja jetzt gelöst, nur wie zu Hölle soll sich das Script einloggen, bist du emax da evtl. schon weiter?

    Es ist echt unglaublich, an der Anlage kann man jeden Furz einstellen, aber die Anrufliste raus rücken tut das Ding natürlich nicht ...

    David

    Einen Kommentar schreiben:

Lädt...
X