Archiv des Autors: hermann

openhab2 und homematic

Als Gateway für Homematic wurde das Modul https://www.elv.de/homematic-funkmodul-fuer-raspberry-pi-bausatz.html zusammengelötet und Raspberrymatic auf einem Raspberry 2 installiert.

Nachdem das System mit aufgesetzem Modul hochgefahren wurde konnte über die URL http://homematic-raspi auf die Webgui zugegriffen werden. Über die Oberfläche können diverse Einstellungen vorgenommen und neue Aktoren angelernt werden.

Damit die Geräte im Openhab genutzt werden können, muss in der Paperui unter das Homematic Binding hinzugefügt werden. Im Anschuss unter Configuration => Thing das Homematic Lan Gateway hinzufügen. Wenn openhab eine Verbindung zum Lan-gateway herstellen konnte, wird das Gateway mit dem Status grün(online) dargestellt und bereits eingebundene Homematic Sensoren werden in der Inbox aufgeführt.

Der Sensor kann nun über Add Thing eingebunden werden und über das angelegte Thing können einzelne Items angelegt werden.

Ich ziehe jedoch das bearbeiten und Verwalten der Items in einer Datei vor.

Die Items Datei sieht bei mir wie folgt aus:
Group kontakte
Contact Wintergarten_Tuer "Wintergarten Tür[MAP(kontakte.map):%s]" <contact> (kontakte){channel="homematic:HM-Sec-SCo:63f2dc68:NEQ0941168:1#STATE"}

Damit der Zustand des Kontakts in der Sitemap auf deutsch dargestellt wird, wurde die Datei kontakte.map angelegt.
CLOSED=geschlossen
OPEN=offen
TILTED=gekippt
undefined=unbekannt
NULL=keine Daten
-=keine Daten

Mit einer einfachen Regel kann man per Mail darüber informiert werden, wenn sich der Status ändert.

rule kontaktestatus
when
Item Wintergarten_Tuer changed
then

sendMail("emailadresse", "betreff", "Wintergarten Tür " + Wintergarten_Tuer.state)
end

[dashing] Willkommen Firma xyz über den gesamten Bildschirm

Das dashing.io Dashboard kann unter anderem in Empfangsbereichen von Firmen eingesetzt werden. Steht nun zum Beispiel ein Besuch eines Kunden an, so könnte man Ihn auf dem Dashboard willkommen heißen. Damit die Willkommensnachricht nicht nur unscheinbar in einer Kachel erscheint, habe ich dieses Widget erstellt. Die job Datei(rb) prüft ob es einen zeitlich passenden Eintrag in der csv Datei gibt und setzt das Widget per css auf Display Block. Das Widget legt sich über den gesamten Bildschirm, ist die Zeit des hinterlegten Kundenbesuchs abgelaufen so wird das Widget wieder ausgeblendet.

Folgende Dateien müssen in einem Verzeichnis Namens overlay abgelegt werden

overlay.coffee
class Dashing.Overlay extends Dashing.Widget
constructor: ->
super
onData: (data) ->
schalter = @schalter
node = $(@node)
if schalter == false then node.css(‚display‘,’none‘) else node.css(‚display‘,’block‘)
ready: ->
@onData(null)

overlay.html
<span data-bind=“titel“></span>
<div class=“bild“ ><img data-bind-src=“kunde“ ></div>
<div class=“text“ data-bind=“text | raw“></div>

overlay.scss
// —————————————————————————-
// Sass declarations
// —————————————————————————-
$background-color: #ec663c;
$title-color: rgba(255, 255, 255, 0.7);
$moreinfo-color:rgba(255, 255, 255, 0.7);
// —————————————————————————-
// Widget-text styles
// —————————————————————————-
.widget-overlay {
position: fixed;
bottom: 1px;
z-index:1000;
width:100%;
height:95%;
background-color: $background-color;
.title {
color: $title-color;
}
.more-info {
color: $moreinfo-color;
}
.updated-at {
color: rgba(255, 255, 255, 0.7);
}
.text{
color:#ffffff;
font-weight:bold;
margin-top:20%;
}
.bild{
height:100px;
width:95%;
text-align:right;
}
&.large h3 {
font-size: 65px;
}
}

Die rb Datei muss unter dem Verzeichnis jobs abgelegt werden, natürlich muss der Pfad zur CSV Datei angepasst werden.
overlay.rb
require ‚csv‘
require ‚json‘
require ‚date‘
require ‚time‘
ENV[‚TZ‘] = ‚Europe/Berlin‘
schalter = false
kunde = „x“
text = „x“
SCHEDULER.every ’30s‘ do
zeit = Time.now.to_i
schalter_zaehler = 0
ausgabe = {}
idx = 0
CSV.foreach(‚/home/dashing/sweet_dashboard_project/jobs/overlay.csv‘, col_sep: ‚;‘) do |row|
start = Time.parse(„#{row[0]} #{row[1]}:00 „).to_i
stop = Time.parse(„#{row[0]} #{row[2]}:00 „).to_i
if zeit.between?(start, stop)
schalter_zaehler += 1
kunde = row[3]
text = row[4]
ausgabe[0] = {:kunde => row[3],:text => row[4]}
end
end
if schalter_zaehler == 1
schalter = true
else
schalter = false
end
send_event(„overlay“,{ kunde: kunde , text: text, schalter: schalter })
#puts JSON.pretty_generate(ausgabe)
end

Aufbau der overlay.csv
2017-01-02;10:00;12:00;/assets/logo.png;Moin zusammen;
2017-05-08;20:00;21:51;/assets/logo.png;Willkommen Firma Kassupke<br/>bei der Tagung;

Die Logos der Firmen müssen unter dem Verzeichnis assets/images abgelegt werden.

Die Einbindung des Widgets erfolgt in der erb Datei in der letzten Zeile wie folgt:
<div data-id=“overlay“ data-view=“Overlay“ ></div>

Hier kann alles heruntergeladen werden.

[dashing] Icinga Widget ohne Soft-Zustände

In dem Artikel hatte ich ein Widget für dashing.io erstellt, welches die Icinga Alarme per json abholt und entsprechend ausgibt. In dem erstellten Job wurden jedoch auch die Soft-Zustände ausgegeben, was je nach System für Hektik sorgen kann.

Der Job wurde nun angepasst und mit Hilfe des Wertes service_attempt werden nun keine Soft-Zustände mehr ausgegeben.

attempt = werte[idx]["service_attempt"].split('/')
if attempt[0] == attempt[1]
if werte[idx]["service_state"].to_i == 0
dalert = "OK"
end
if werte[idx]["service_state"].to_i == 1
dalert = "WARNING"
z_warning += 1
end
if werte[idx]["service_state"].to_i == 2
dalert = "CRITICAL"
z_critical += 1
end
if werte[idx]["service_state"].to_i == 3
dalert = "UNKNOWN"
z_unknown += 1
end
laenge += 1
if laenge.to_i <= 20
review_content[laenge] = {:host => werte[idx][„host_name“],:what => werte[idx][„service_description“],:alert => dalert}
end
end

[puppet] installation Apache web Server

Möchte man eine Anwendung oder ein Programm wie zum Beispiel den Apache auf mehreren Server installieren, empfiehlt es sich hierfür ein Modul zu erstellen. In dem Modul können dann diverse Standardangaben hinterlegt werden.

Für Puppet gibt es bereits mehrere Module die installiert werden können.
Ein Modul für Apache kann über puppet module install puppetlabs-apache installiert werden.

Das Modul wird dann in der nodes Konfiguration hinterlegt
node 'pmagent2' {
include apache
}

Durch das Modul wurde der Apache installiert und ein default vhost angelegt.
Um zu erfahren was alles automatisiert erstellt wird muss man sich die entsprechenden Dateien unter dem Modulpfad /etc/puppetlabs/code/environments/production/modules/apache/ näher anschauen.

Anlegen eines neuen Vhosts
apache::vhost { 'sub1.itbasic.de':
port => '80',
docroot => '/var/www/vhost/sub1.itbasic.de',
docroot_owner => 'apache',
docroot_group => 'apache',
}

Über das Modul werden die Access und die Error Log Dateien des Apache unter /var/log/httpd/vhostname abgelegt.

Always make a backup

Heutzutage ist alles digital, Rechnungen werden per E-Mail statt auf dem Postweg versendet, Anträge werden online ausgefüllt, die Lieblingsserie liegt in der Cloud und Fotos werden vom Handy ebenfalls direkt hochgeladen. In jedem Haushalt gibt es zumindest eine Digitale Kamera und die Fotos nehmen mehrere Gigabyte auf der heimischen Festplatte ein. Die Festplatte kann sich in den Rechner / Notebook oder in dem NAS befinden. Was jedoch oft vergessen wird ist, das diese Daten nicht gesichert werden. Fällt diese eine Festplatte aus, so ist alles weg. Im Bekanntenkreis sind dadurch die Kinderfotos aller Kinder verloren gegangen, nur mühsam konnten einzelne Bilder über Verwandte wieder beschafft werden.
Eine Sicherung von Daten kann auch zu Clouddiensten wie Dropbox erfolgen. Jedoch aus meiner Sicht sollte wenn möglich zumindest eine Sicherung so aufbewahrt werden, dass diese außerhalb eines Netzwerkzugriffs liegen.
Denn wird der heimische Rechner von einem Virus befallen sind somit auch die Dateien, die sich in den Synchronisierten Verzeichnissen befinden, von dem Virus inifiziert. Diese Dateien werden dann automatisch mit der Cloud Synchronisiert.
Mit Hilfe der Kommandozeile können Backup Szenarien erstellt werden, jedoch ist dies eher für Nerds oder anderer entsprechender Erfahrung. Für die Linux Shell hatte ich vor längerer Zeit den Artikel erstellt. Für nicht so Technikaffine Anwender gibt es auf dem Markt viele Produkte. Grundlegend bieten alle die Funktion die Daten nach einem Backup Plan zu sichern, jedoch bieten nicht alle neben dem Vollbackup ein differenzielles oder inkrementelles Backup an.
Um herauszufinden welches das richtige Produkt ist kann man sich zunächst im Bekanntenkreis umhören, sofern hier überhaupt jemand ein Backup durchführt. Eine weitere Möglichkeit wäre seine Anforderungen zu definieren und dann prüfen ob der Anbieter der Software diese Funktion unterstützt. Ein Kandidat für die Auswahlliste wäre Novabackup, auf der Seite von Netzsieger zu Novabackup findet man weitere Informationen.

Dieser Artikel ist mit freundlicher Unterstützung von Netzsieger entstanden