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…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

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