Gäste-WLAN PIN via Telegram - Erweiterung von ct's Raspberry Pi als offener WLAN

Begonnen von pandabear_de, 23 Januar 2018, 21:17:04

Vorheriges Thema - Nächstes Thema

pandabear_de

Hi,
ich habe die Tage eine Bauanleitung für ein Gäste-WLAN via Raspi aus der 'ct' in die Hand bekommen und nachgebaut. Zusätzlich wollte ich, dass die Zugangs-PINs auch via Telegram an mich übertragen werden.

Link zum Artikel:"Raspberry Pi als offener WLAN-Router mit Captive Portal"
https://www.heise.de/ct/ausgabe/2017-26-Raspberry-Pi-als-offener-WLAN-Router-mit-Captive-Portal-3906528.html

Vielleicht kann ja jemand diese Lösung auch für sich nutzen.
(Ich bin ein ziemlicher Anfänger, daher kann dieses Problem sicherlich auch noch eleganter gelöst werden.)

Als erstes lese ich alle 10 Sekunden die vom Script erzeigte PIN-Textdatei aus und speichere sie als Reading in den Dummy WLAN_GastPIN ab.

define WLAN_GastPIN_at at +*00:00:10
{
  my @content = FileRead({FileName => "/var/www/wlanguests/wlanpin", ForceType => "file"});;
  {if ( $content[1]) 
    {fhem ("setreading WLAN_GastPIN PIN  $content[1]")}
 
  else
    {fhem ("setreading WLAN_GastPIN PIN 0")}
  }
}


define WLAN_GastPIN dummy

Danach habe ich ein Notify definiert, um auf Veränderungen der PIN zu regieren und sie z.B. an meinen Telegram-Bot zu schicken. Alternativ/zusätzlich könnt ihr den Wert aber auch z.B. an ein Haussteuerungs-Tablet schicken...

Damit nicht alle 10 Sekunden eine PIN via Telegram versendet wird, vergleiche ich die PIN mit der letzten PIN. Nur wenn diese sich unterscheiden, wird eine Nachricht versendet.

define WLAN_GastPIN_Botnotify notify WLAN_GastPIN
{
my $pin = ReadingsVal("WLAN_GastPIN", "PIN", 0) ;;
my $lastPin = ReadingsVal("WLAN_GastPIN", "LastPIN", 0) ;;
if ($pin ne 0 && $lastPin ne $pin)  {
   fhem ("set teleBot message \@[i]UserName[/i] PIN: $pin ");;
   fhem ("setreading WLAN_GastPIN LastPIN $pin");;
}

}


Viel Spaß beim bauen. Verbesserungsvorschläge jederzeit gerne.