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

    #46
    Siehe hierzu auch:

    Auerswald Systemschnittstelle

    Kommentar


      #47
      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

      Kommentar


        #48
        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
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #49
          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

          Kommentar


            #50
            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
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #51
              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?

              Kommentar


                #52
                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
                EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar


                  #53
                  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>~;

                  Kommentar

                  Lädt...
                  X