Veterraporto per SMS

Westphoenizier
Apr 16, 2017 · 5 min read
Aktualigo (2017-12-25): Mi modifis puntkton 2 de "Bezonataj aferoj", kaj punkton 1 de "Funkcio"; krome figurajho 1 estas laue shanghita.Aktualigo (2017-12-24): Mi modifis mia_skripto2.cgi tiuefike, ke la priskriboteksto de la vetero estas en Esperanto. Ankau figurajho 4 estas laue aktualigita.Aktualigo (2017-11-25): Mi anstatauigis figurajhon 4 per "korektita" figurajho. En la prikribo de figurajho 4 kaj mia_skripto2.cgi mi shanghis "km" al "m", nome rilate al la viddistanco.Aktualigo (2017-06-15): Mi anstatauigis figurajhon 4 per "korektita" figurajho. En la prikribo de figurajho 4 kaj mia_skripto2.cgi mi shanghis "km/s" al "m/s".Aktualigo (2017-05-05): Jen alternativoj al la malsupre menciita mia_ecall_sms_numero.

Enkonduko

La artikolo “Build A Weather By SMS Service With Twilio and NodeJS” de Giuliano Iacobelli instigis min fari ion similan per parte malsama aro de rimedoj. Ricevi per SMS veterraporton pri elektebla loko estas utile, ekzemple kiam ne estas retkonekto.

Bezonataj aferoj

  1. Konto (inkluzive API-shlosilon) che OpenWeatherMap.
  2. Konto che ecall.ch (ekz. mia_ecall_nomo) inkluzive la agordon, ke SMS estu plusendata, kiel retposhtmesagho, al mia_retposhtadreso_(che)_blogger.com (vidu figurajhon 1).
  3. Du skriptodosieroj, t. e. mia_skripto1.cgi kaj mia_skripto2.cgi, prezentataj malsupre en chapitro “Skriptodosieroj”.
  4. Por ilin deponi kaj funkciigi: tauga retspaco, t. e. http://mia_retspaco/cgi-bin/mia_skripto1.cgi
    kaj http://mia_retspaco/cgi-bin/mia_skripto2.cgi.
  5. Blogpagho che blogger.com, t. e. http://mia_blogpagho.blogspot.de inkluzive jenajn agordojn (“Einstellungen”):
    a) “E-Mail”: mia_retposhtadreso_(che)_blogger.com (vidu figurajhon 2)
    b) “Sonstiges” -> “Weiterleitungs-URL für Post-Feeds”: http://mia_retspaco/cgi-bin/mia_skripto1.cgi (vidu figurajhon 3).
Figurajho 1: Agordoj che ecall.ch
Figurajho 2: Agordoj por la blogpagho che blogger.com; pri “E-Mail”
Figurajho 3: Agordoj por la blogpagho che blogger.com; pri “Sonstiges” -> “Weiterleitungs-URL für Post-Feeds”

Funkcio

  1. De mia_poshtelefona_sms_numero mi sendas al 0041763332020 SMS kun ekz. jena teksto:
    !mia_ecall_nomo!ung:abdcPalermo,itdbcaBest
    (ne estu spaceto antau nek post Palermo,it).
    abdc kaj dbca estas kodajhoj libere elekteblaj kaj estu diferencaj disde tiuj, kiuj eventuale estas elektitaj por aliaj SMS-aplikoj.
  2. De mia_ecall_sms_numerookazas automate plusendo je tiu SMS, kiel retposhtmesagho, al mia_retposhtadreso_(che)_blogger.com.
  3. Pro tio automate estas alvokata http://mia_retspaco/cgi-bin/mia_skripto1.cgi.
  4. mia_skripto1.cgi automate kontrolas la kodajhon (en la supra ekzemplo: abcd) kaj, se ghi estas ghusta, alvokas http://mia_retspaco/cgi-bin/mia_skripto2.cgi.
  5. Pro tio mia_skripto2.cgi automate estas funkciigata.
    Ghi
    a) alvokas tiun retejon, kiu entenas la deziratan informon,
    b) tiun informon eltiras,
    c) ghin skribas en retposhtmesaghon kaj
    d) tiun chi sendas al mia_poshtelefona_sms_numero_(che)_sms.ecall.ch.
  6. Pro tio mia_poshtelefona_sms_numero ricevas automate SMS entenantan la deziratan informon (vidu fihurajhon 4). Notu, ke tiucele che ecall.ch devas esti agordita tio, ke retposhtmesagho ricevita de mia_nomo_(che)_post.webmailer.de (ghi dependas de la supre menciita tauga retspaco) estu plusendebla kiel SMS.
Figurajho 4: SMS kun veterraporto pri Palermo,it; klarigoj: 13*C: temperaturo; 1021hPa: atmosfera premo; 10000m: viddistanco; 10.8m/s: ventrapido; 20gradoj: ventdirekto; — : neniu indiko pri rapido de ventopushoj; 75%: nubkovriteco; 6:20: = 06:20 UT: horo de sunlevigho; 15:51 = 15:51 UT: horo de sunsubiro; 38.12: latitudo; 13.36: longitudo; 12:51 UT: horo, por kiu validas la indikoj

Skriptodosieroj

La skriptodosieroj estas faritaj en la programlingvo Perl. Por ke ilin povu utiligi ankau vi, ilin vi devas adapti rilate al almenau la kursivaj programkodajhpartoj.

mia_skripto1.cgi

#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(header);
use lib “/vojnomparto/cgi-bin/moduloj”;
use Simple;
print header;
$ttt_ejo = ‘http://mia_blogpagho.blogspot.de/';
$enhavo = get $ttt_ejo;
$enhavo =~ s/<.+?>//gs;
$enhavo =~ s/\&nbsp\;//gs;
$enhavo =~ s/\&gt\;//gs;
$enhavo =~ /ung\:(.+?)Best/s;
$enhav1 = $1;
if ($enhav1 =~ /abcd/g)
{
$ttt_ejo = ‘http://mia_retspaco/cgi-bin/mia_skripto2.cgi';
$t = get $ttt_ejo;
}

mia_skripto2.cgi

#!/usr/bin/perl -w
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(header);
use lib "/vojnomparto/cgi-bin/moduloj";
use Simple;
require retsendu;
print header;$ricevonto = "mia_poshtelefona_sms_numero\@sms\.ecall\.ch";
$sendintnomo = "mia_nomo";
$sendintadreso = "mia_nomo\.mia_nomo\@post\.webmailer\.de";
$koncerno = "";
$ttt_ejo = 'http://mia_blogpagho.blogspot.de/';
sleep(10);
$enhavo = get $ttt_ejo;
$enhavo =~ s/<.+?>//gs;
$enhavo =~ s/\&nbsp\;//gs;
$enhavo =~ s/\&gt\;//gs;
$enhavo =~ /abcd(.+?)dcba/s;
$enhav1 = $1;
$ttt_ejo = 'http://api.openweathermap.org/data/2.5/weather?q='.$enhav1.'&appid=mia_api_shlosilo&units=metric&lang=de';
sleep(10);
$enhavo = get $ttt_ejo;
$enhavo =~ s/<.+?>//gs;
$enhavo =~ s/\&nbsp\;//gs;
$enhavo =~ s/\&gt\;//gs;
$enhavo =~ /\"id\"\:(.+?)\"\,\"main/s;
$enhav0 = $1;
$eh0 = 1.*$enhav0;
$enhav0 = "klara chielo" if ($eh0 == 800);
$enhav0 = "nuboj" if ($eh0 > 800 && $eh0 < 900);
$enhav0 = "negho" if ($eh0 >= 600 && $eh0 < 700);
$enhav0 = "pluvo" if ($eh0 >= 500 && $eh0 < 600);
$enhav0 = "pluveto" if ($eh0 >= 300 && $eh0 < 400);
$enhav0 = "fulmotondro" if ($eh0 >= 200 && $eh0 < 300);
$enhav0 = "malserene" if ($eh0 == 701);
$enhav0 = "fumo" if ($eh0 == 711);
$enhav0 = "malklarigho" if ($eh0 == 721);
$enhav0 = "sablo\-\, polvo\-kirlighoj" if ($eh0 == 731);
$enhav0 = "nebulo" if ($eh0 == 741);
$enhav0 = "sablo" if ($eh0 == 751);
$enhav0 = "polvo" if ($eh0 == 761);
$enhav0 = "vulkancindro" if ($eh0 == 762);
$enhav0 = "ventpushoj" if ($eh0 == 771);
$enhav0 = "tornado" if ($eh0 == 781);
$enhav0 = "tornado" if ($eh0 == 900);
$enhav0 = "tropika shtormo" if ($eh0 == 901);
$enhav0 = "uragano" if ($eh0 == 902);
$enhav0 = "malvarme" if ($eh0 == 903);
$enhav0 = "varmege" if ($eh0 == 904);
$enhav0 = "vente" if ($eh0 == 905);
$enhav0 = "hajlo" if ($eh0 == 906);
$enhavo =~ /\"temp\"\:(.+?)\,\"press/s;
$enhav2 = $1;
$enhav2 = $enhav2."*C";
$enhavo =~ /\"pressure\"\:(.+?)\,\"humi/s;
$enhav3 = $1;
$enhav3 = $enhav3."hPa";
$enhavo =~ /\"humidity\"\:(.+?)\,\"temp_min/s;
$enhav4 = $1;
$enhav4 = "Humido\: ".$enhav4."\%";
$enhavo =~ /\"visibility\"\:(.+?)\,\"wind/s;
$enhav5 = $1;
$enhav5 = $enhav5."m";
if ($enhavo =~ /\"speed\"\:(.+?)[\,\}]/s)
{
$enhav6 = $1;
$enhav6 = "ventrapido\: ".$enhav6." m/s";
}
else
{
$enhav6 = "\-\-";
}
if ($enhavo =~ /\"deg\"\:(.+?)[\,\}]/s)
{
$enhav7 = $1;
$enhav7 = "ventdirekto\: ".$enhav7." gradoj";
}
else
{
$enhav7 = "\-\-";
}
if ($enhavo =~ /\"gust\"\:(.+?)[\,\}]/s)
{
$enhav8 = $1;
$enhav8 = "Ventpushoj ".$enhav8."m/s";
}
else
{
$enhav8 = "--";
}
$enhavo =~ /clouds\"\:\{\"all\"\:(.+?)[\,\}]/s;
$enhav9 = $1;
$enhav9 = $enhav9."\%";
$enhavo =~ /sunrise\"\:(.+?)[\,\}]/s;
$enhava = $1;
$sunlv1 = ($enhava/86400-int($enhava/86400))*86400;
$sunlvh = $sunlv1/3600;
$sunlvm = ($sunlvh-int($sunlvh))*300/5;
$sunlvm = int($sunlvm+0.5);
$sunlvh = int($sunlvh);
$enhavo =~ /sunset\"\:(.+?)[\,\}]/s;
$enhavb = $1;
$sunsi1 = ($enhavb/86400-int($enhavb/86400))*86400;
$sunsih = $sunsi1/3600;
$sunsim = ($sunsih-int($sunsih))*300/5;
$sunsim = int($sunsim+0.5);
$sunsih = int($sunsih);
$enhavo =~ /\"lon\"\:(.+?)[\,\}]/s;
$longi = $1;
$enhavo =~ /\"lat\"\:(.+?)[\,\}]/s;
$lati = $1;
$enhav99 = $enhav0." ".$enhav1." ".$enhav2." ".$enhav3." ".$enhav4." ".$enhav5." ".$enhav6." ".$enhav7." ".$enhav8." ".$enhav9."Suno ".$sunlvh."\:".$sunlvm." ".$sunsih."\:".$sunsim."UT"." ".$lati." ".$longi;
$enhav99 =~ s/\"//gs;
$teksto = $enhav99;
&retsendu($ricevonto, $sendintnomo, $sendintadreso, $konc, $teksto);
sub retsendu
{
$ricevonto = shift;
$sendintadreso = shift;
$sendintnomo = shift;
$koncerno = shift;
$teksto = shift;
my $retposhtilo = “/usr/lib/sendmail”;open(RETPOSHTO, “|$retposhtilo -t”) || “Retposhtilo ne lasas sin malfermi.”;
print RETPOSHTO “To: $ricevonto\n”;
print RETPOSHTO “From: $sendintadreso $sendintnomo\n”;
print RETPOSHTO “Subject: $koncerno\n\n”;
print RETPOSHTO $teksto, “\n”;
close(RETPOSHTO) || print “Eraro dum sendado!”;
}

Kostoj

Vidu mian blogeron “Pepi per SMS — sen Twilio kaj sen propre farenda skriptodosiero”.

— — — — —

Se tio chi ne montrighas bone, klaku chi tie

Westphoenizier

La Medium-ejo — Stell dir vor, es gibt Sprachbarrieren und…

Westphoenizier

Written by

Stell dir vor,es gibt Sprachbarrieren und jeder lernt Esperanto.Lingvo internacia Radio-auskultado:analoga&DAB+ Haiku.Hajko Sciencfikci- & fantaziajhoj.Indirok'

Westphoenizier

La Medium-ejo — Stell dir vor, es gibt Sprachbarrieren und jeder lernt Esperanto

Westphoenizier

Written by

Stell dir vor,es gibt Sprachbarrieren und jeder lernt Esperanto.Lingvo internacia Radio-auskultado:analoga&DAB+ Haiku.Hajko Sciencfikci- & fantaziajhoj.Indirok'

Westphoenizier

La Medium-ejo — Stell dir vor, es gibt Sprachbarrieren und jeder lernt Esperanto

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store