Wie können mit einem Raspberry Pi aktuelle Flugdaten (aus HAJ) in OpenHAB angezeigt werden?

Meine Hausautomatisation die auf einen Raspberry Pi mit Debian Linux läuft, arbeitet mit Openhab.

openhab-fluginfo

Wie können da nun die Transpondersignale von den Flugzeugen in Hannover (EDDV) angezeigt werden?

Das geht mit der REST Schnitstelle von ThinkSpeak.

So sieht die Seite von Openhab aus.

openhab Fluginfos

Oben wird die aktuelle Anzahl von Flugzeugen und der Zeitpunkt der Daten die gerade empfangen werden angezeigt. Eine automatisch Aktualisierung ist bei mir auf 15 Minuten eingestellt. Der Feed wird alle 5 Minuten aktualisiert und wenn man die letzten Daten angezeigt bekommen will, braucht man nur auf den „aktualisieren“ Schalter klicken.

Die Daten kann jeder abfragen, da die API von ThinkSpeak öffentlich ist!

Was ist nötig?

Ein Eintrag in der Sitemap Datei:

Frame {
	Group item=gFlug label="Fluginfos" icon="flugzeug"{ 	
		
    	Frame label="Hannover HAJ (EDDV)" {
		       	Text 	item=flugzeugeAnzahl  		  icon="flugzeug"	  		       
		       	Text    item=flugzeugeUpdate          icon="flugzeug"	
		       	Switch  item=flugzeugeAktualisieren   icon="flugzeug"  	
		       	Text 	item=flugzeugeZeitpunkt		  icon="flugzeug"	       		
		}      		
	} 
}

Eine neue Datei im Items Verzeichnis Flug.items mit diesm Inhalt:

//
// Steuerung des Fluginformationen via OpenHAB
//
// (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info 
//

// Liefert aus den Feed die Anzahl Flugzeuge als Json Feed

// https://api.thingspeak.com/channels/44177/feeds/last.json
//
// z.B.
// {"created_at":"2016-05-16T14:05:02Z","entry_id":80051,"field1":"15"}

Group gFlug

// alle 15 Minuten abfragen
String flugzeugeAnzahl "Anzahl Flugzeuge [%s]" { http="<[https://api.thingspeak.com/channels/44177/feeds/last.json:900000:JS(getAnzahlFlugzeuge.js)]" }

// Zeitpunkt der letzten aktualisierung des Feeds
String flugzeugeUpdate "Letztes Feed update [%s]"

// Zeitpunkt der letzen aktualisierung
String flugzeugeZeitpunkt "Letzte aktualisierung [%s]"

// Schalter zum aktualisieren der Anzahl der Flugzeuge
Switch flugzeugeAktualisieren 	"aktualisieren"

Eine neue Datei im Transform Verzeichnis mit Namen getAnzahlFlugzeuge.js mit diesem Inhalt

JSON.parse(input).field1;

Und noch eine Flug.rules im Rules Verzeichnis, die bei klick auf den Schalter aktiv wird:

import org.openhab.core.library.types.*
import org.openhab.model.script.actions.*
import java.util.Date
import java.text.SimpleDateFormat

//
//  Fluginfos für OpenHAB
//
// (c) 2016 Thomas Wenzlaff http://www.wenzlaff.info 
//

//------------------------------------------------------------------------
//   Aktualisiert die Fluginfos, d.h die Anzahl der Flugzeuge aus ThingSpeak
//------------------------------------------------------------------------

rule "Aktualisiert die Fluginfos von ThingSpeak"
 when
    	 Item flugzeugeAktualisieren received command ON
 then    	 
		 logInfo("Flug","aktualisiere Fluginfos ...")    
     
         var String result = sendHttpGetRequest("https://api.thingspeak.com/channels/44177/feeds/last.json")        
         // {"created_at":"2016-05-16T16:10:02Z","entry_id":80076,"field1":"11"}' by the function '$.field1'
         logInfo("Flug", "nur das Ergebnis der Abfrage: " + result)
                                 			
		 var String anzahl = transform("JSONPATH", "$.field1", result)		
		 logInfo("Flug", "Anzahl der Flugzeuge, update auf: " + anzahl)
		 
		 var String createdAt = transform("JSONPATH", "$.created_at", result)		
		 logInfo("Flug", "Letztes update um: " + createdAt)
		 
		 // aktualisierungs Datum setzen
		 flugzeugeUpdate.postUpdate(createdAt)
		 // aktualisiere Anzahl der Flugzeuge
		 flugzeugeAnzahl.postUpdate(anzahl)
		 
		 // Schalter wieder zurücksetzen
		 flugzeugeAktualisieren.postUpdate("OFF")
		 
		  var SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss dd.MM.YYYY" )
          var String timestamp = df.format( new Date() )
		 flugzeugeZeitpunkt.postUpdate(timestamp);
		  
end

Und noch das von mir erstellte Icon des Flugzeuges:

flugzeug

Dies super Icon kann kostenlos von hier geladen und frei verwendet werden. Wer kann ein besseres zur freien Verwendung zeichnen?

Ähnliche Artikel:

  1. Raspberry Pi: Wie können Wetterdaten in openHAB von OpenWeatherMap angezeigt werden?
  2. Wie wird der Karotz von einem Raspberry Pi über OpenHAB angesteuert?
  3. Anzahl der Flugzeuge mit 3 Zeilen Java Code ausgeben via REST API mit Jersey und JDom 2.0

wallpaper-1019588
Yuri!!! on Ice: Ice Adolescence – Produktion des Films abgebrochen
wallpaper-1019588
5 Dinge, die du als Trailrunning-Anfänger wissen solltest
wallpaper-1019588
Kalorienarme Lebensmittel: Top-Auswahl für Ihre Diät
wallpaper-1019588
Kalorienarme Lebensmittel: Top-Auswahl für Ihre Diät