Veterraporto per SMS

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”.

— — — — —

— — — — — 
Jen pepoj de mi aktualighantaj automate per Integromat (sed ne tre ofte):

— — — — —

Miaj pepoj | La pepoj de Reagoj al AdE-faroj

Like what you read? Give Westphoenizier a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.