Ankündigung
Einklappen
Keine Ankündigung bisher.
Suche Hilfe für Plugin für Auerswald 5020
Einklappen
Dieses Thema ist geschlossen.
X
X
-
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
Ich google gleich mal, will das hier nur erstmal als kleine "Dokumentation" posten
Kommentar
-
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; }
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
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>~;
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
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
-
Zitat von daviid Beitrag anzeigenIch 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.
Oder habt ihr bessere Vorschläge das zu lösen?
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
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
-
im Bash-script ?
Code:if [ -e /tmp/tel-data.csv ]; then # mach was sinvolles hier else # mach was anderes fi
MakkiEIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
-> Bitte KEINE PNs!
Kommentar
-
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
Kommentar