Veterraporto per SMS

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. SMS-numero che ecall.ch, t. e. mia_ecall_sms_numero, inkluzive la agordon che ecall.ch, 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 por mia_ecall_sms_numero
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_numeromi sendas al mia_ecall_sms_numero SMS kun la nomo de la loko, pri kiu mi volas ricevi veterraporton; tiu nomo devas esti skribita inter kodajho 1 kaj kodajho 2 de mi difinitaj (ekz. abdcBerlin,dedbca [ne estu spaceto antau nek post Berlin,de]).
  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 estu plusendebla kiel SMS.
Figurajho 4: SMS kun veterraporto pri Berlin,de; klarigoj: 7*C: temperaturo; 1014hPa: atmosfera premo; 10000km: videblo; 3.6m/s: ventrapido; 340gradoj: ventdirekto; — : neniu indiko pri rapido de ventopushoj; 75%: nubkovrado; 4:5: = 04:05 UT: horo de sunlevigho; 18:8 = 18:08 UT: horo de sunsubiro; 52.52: latitudo; 13.41: longitudo

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 =~ /Mitteilung\:(.+?)Beste/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 =~ /\"main\"\:(.+?)[\,\}]/s;
$enhav0 = $1;
$enhavo =~ /\"description\"\:(.+?)[\,\}]/s;
$enhav1 = $1;
$enhavo =~ /\"temp\"\:(.+?)[\,\}]/s;
$enhav2 = $1;
$enhav2 = $enhav2."*C";
$enhavo =~ /\"pressure\"\:(.+?)[\,\}]/s;
$enhav3 = $1;
$enhav3 = $enhav3."hPa";
$enhavo =~ /\"humidity\"\:(.+?)[\,\}]/s;
$enhav4 = $1;
$enhav4 = "Humido ".$enhav4."\%";
$enhavo =~ /\"visibility\"\:(.+?)[\,\}]/s;
$enhav5 = $1;
$enhav5 = $enhav5."km";
$enhavo =~ /\"speed\"\:(.+?)[\,\}]/s;
$enhav6 = $1;
$enhav6 = $enhav6."m/s";
$enhavo =~ /\"deg\"\:(.+?)[\,\}]/s;
$enhav7 = $1;
$enhav7 = $enhav7."gradoj";
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

Show your support

Clapping shows how much you appreciated Westphoenizier’s story.