Das PI USV+ Dilemma

Wie ich schon berichtet habe, spendiere ich dem Server (Raspberry B+) eine USV um diverse Filesystem crashs zu vermeiden. Ist ja wohl ein bekanntes Problem.

Hier habe ich mich für die PI USV+ entschieden, die von der Firma CW2. GmbH & Co. KG aus Stuttgart angeboten wird.

Am 08.06.2015 habe ich gleich 2 davon bestellt. Die Auslieferung war (gemäß Homepage) für den 30.06.2015 geplant. Das Geld habe ich dann online am 09.06.2015 angewiesen und warte seitdem auf Lieferung oder Feedback.

Am 23.06.2015 habe ich dann eine der beiden PI USVs wieder storniert, da ich nur noch eine davon einsetzen kann und hatte gefragt ob sie mir bitte das Geld entsprechend zurück überweisen könnten. Leider habe ich hier weder den Betrag zurück überwiesen bekommen noch kam bei mir eine Antwort an. Selbst nicht als ich bei CW2 am 26.6. nochmals angefragt hatte diesbezüglich.

Im firmeneigenen Kundenforum gibt es auch nur Anfragen von anderen Bestellern ohne eine Antwort von CW2. Habe ich nach dem Auftritt auf Facebook gesucht und gefunden.
Und hier auch gleich mal einen Kommentar auf deren Pinnwand hinterlassen.
Hier ist die Reichweite vermutlich größer als in irgend einem Forum (bei dem man sich vorher anmelden und freigeschaltet werden muss).

Hier gab es dann tatsächlich auch folgende Antwort:

Guten Morgen Zusammen, Ich kann gut verstehen dass hier große Frustration herrscht – ihr seit nicht alleine, wir haben mit unzähligen Verschiebungen zu Kämpfen gehabt. Bis zuletzt wurde uns von unserem Lieferanten kein endgültiger Lieferzeitpunkt genannt. Aus diesem Grund haben wir noch nicht an alle Kunden kommuniziert. Ein weiteres nicht eingehaltenes Liferversprechen konnten wir uns nicht leisten. Gestern haben wir nun endlich die Lieferfreigabe erhalten und können deswegen heute die versprochenen Bestätigungen verschicken. Viele Grüße, PiUSV+ Team

Zwisschenzeitlich steht auf der Homepage statt dem 30.06.2015 als voraussichtliches Lieferdatum nur noch: „Auslieferung nach Lagerverfügbarkeit„.

Da ich mit der Entwicklung des Zugangs-Kontroll-Systems noch (leider) ein Weilchen vom goLive weg bin, warte ich eben auf Antwort und werde evtl. nochmals eine Mail verfassen damit nicht in lauter Hektik (HeadlessChickenMode) doch 2 USVs zu mir geschickt werden.

Ich will mit meinem eintrag hier im Blog die Firma CW2 nicht schlecht machen, die Produkte kenn ich ja noch nicht 🙂
Aber die Kommunikation zu den Kunden ist nicht gut geregelt. Hier könnte der Vertrieb sich evtl. besser aufstellen. Vor allem einem Endkunden entgegen.

So, ich mach jetzt Mittagessen für meinen Kleinen, der kommt demnächst aus dem Kindi.

Der Listener, das unbekannte Wesen und andere Fortschritte

Zum Stand der Dinge.

Hier seht Ihr den aktuellen Fortschritt des Projekts.

2015-07-17-Architektur-SchaubildFür das Logging von Informationen habe ich mich für den defacto Standard Log4J entschieden.  Bislang gebe ich nur auf STD OUT statt in eine Datei, aber das ist (soweit ich gesehen habe) nur noch eine Konfigurationssache.

Den Bereich der extern ausgelagerten Konfiguration (Kasten: „Config“) habe ich ebenfalls gelöst. Ursprünglich hatte ich mir zunächst die Crunchify Lösung aus dem Internet angesehen mich dann aber doch nach einigem hin und her für eine eigene Lösung entschieden. Diese habe ich in dem Artikel Konfigurationsdateien beschrieben.

Mit der OBID Listener Komponente habe ich nun angefangen mit der Entwicklung. Leider stieß ich relativ schnell auf komische Efffekte. Hier habe ich auch schon eine Supportanfrage gestellt bin aber guter Dinge das mir da die FEIG ELECTRONIC GmbH auf die Sprünge helfen kann.

Die Türe mit dem PiFace Digital 2 öffnen

Meine Recherche war erfolgreich und ich konnte eine kleine Java Klasse erstellen mit der ich den OpenCollector Ausgang (OUT PIN 0) für 500 Millisekunden öffnen (also auf GND ziehen) kann.

Ursprünglich wollte ich mit der Klasse com.pi4j.device.piface.PiFace arbeiten, leider kommt aber Java nach Ausführung nicht wieder zurück.

Ein strace hat ergeben, dass Java auf die Beendigung eines Prozesses wartet. Die angegebene PID im strace war aber nicht mehr im system vorhanden, damit würde die Classe sich wohl nicht wieder beenden. Daher bin ich umgestiegen auf die etwas weiter unten liegende com.pi4j.io.gpio Klassen.

Und hier das Ergebnis:

// Importing Libraries
import com.pi4j.gpio.extension.piface.PiFaceGpioProvider;
import com.pi4j.gpio.extension.piface.PiFacePin;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.spi.SpiChannel;
import java.io.IOException;

/**
 * 
 * @author Michael Oberdorf
 * @version 0.100
 * Description:
 *   PiFaceOut is the class to control the PiFace Digital 2 Output Ports
 *   The Class uses the Pi4J GPIO interface instead of the device.piface class because
 *   the finalizing is defect there.
 *   The GpioController can be shutdown 
 *
 */
public class PiFaceOut {
    public static void main(String args[]) throws InterruptedException, IOException {
        // create gpio controller
        final GpioController gpio = GpioFactory.getInstance();

        // Trigger the Out PIN 00 for 500 milliseconds to open the entrance door
        openDoor(gpio, 500);

        // shut down the interface to clean up native heap from WiringPi
        gpio.shutdown();
    }
    
    /**
     * 
     * private method to trigger the digital output pin 0 to open the entrance door
     * @param gpio (GpioController)
     * @param time (int)
     * @throws IOException
     * @throws InterruptedException
     *
     */
    private static void openDoor(GpioController gpio, int time) throws IOException, InterruptedException {
        // create custom PiFace GPIO provider
        final PiFaceGpioProvider gpioProvider = new PiFaceGpioProvider(PiFaceGpioProvider.DEFAULT_ADDRESS, SpiChannel.CS0);

        // provision gpio output pins and make sure they are all LOW at startup
        GpioPinDigitalOutput myOutputs[] = {
                gpio.provisionDigitalOutputPin(gpioProvider, PiFacePin.OUTPUT_00)
        };

        // pull digital out pin to GND (OpenCollector)
        gpio.setState(true, myOutputs);
        // sleep for a while
        Thread.sleep(time);
        // close the digital out pin
        gpio.setState(false, myOutputs); 
    }
}

Raspberry PI B+

Der neue (alte) Raspberry PI B+ ist nun da und für den Anderen habe ich auch schon einen Abnehmer gefunden.
Das PIFace Digital 2 habe ich dieses mal gleich aufgesteckt, von der PI USV habe ich leider noch nichts gehört.
Das Raspbian Image ist ja das selbe, daher konnte ich ohne Downloads gleich wieder starten den Server zu konfigurieren.
Die Libraries der Feig GmbH waren auch schnell in /usr/lib  untergebracht inklusive der Symlinks. Der erste Test war auch erfolgreich. Die Libraries liesen sich mit Java initialisieren.
Apropos Java, hier muss ich gleich noch schauen ob es da auch was für das PiFace gibt.
URLs die ich zu dem Thema gefunden habe:
Das klingt schon mal interessant und muss ich mir demnächst mal noch näher ansehen.

Neue Serverplatform

Nachdem ich den Raspberry PI 2 B nicht mit den Libs der Firma FEIG verheiraten konnte, hab ich meinen Raspberry PI B ausprobiert, und es hat alles auf anhieb funktioniert. Was mich nun zu dem Entschluß gebracht hat den PI 2 aufzugeben.

Um die restlicher Peripherie behalten zu können, habe ich nun einen Raspberry PI B+ bestellt. Damit wird auch die bestellte USV (auf die warte ich noch immer) und das PiFace Digital 2 arbeiten (so hoffe ich zumindest).

Vieleicht habe ich sogar Glück und das Hutschienengehäuße passt zum B+. Jedenfalls gibt es im Netz genügend Gehäuse die bei beiden funktionieren.

Der Firma FEIG habe ich jedoch positives Feedback gegeben und warte nun auf die Rechnung damit der Leser endlich mein Eigen wird 🙂

Server Platform und generelle Infrastruktur

Also, nachdem der Kartentyp klar war, sind 3 Dinge zu klären

  1. ein passender RFID Leser der im Außenbereich einzusetzen ist
  2. das Protokoll bzw. der Anschluß mit dem ich mit dem Leser kommunizieren kann. Zur Auswahl stehen Serial, USB, Bluetooth und Ethernet.
  3. Die Server Platform

Alle 3 Dinge müssen passen und gut zusammenspielen.

Was das Protokoll angeht, Bluetooth fand ich zu unsicher, USB hat Probleme bei langen Kabellängen. Also bleibt Serial und Ethernet.
Da die Türe leider früher kam als erwartet, hatte ich weder Serverplatform noch RFID Leser gewählt, daher habe ich mich mich Ethernet entschieden.

Zum einen erschien es mir am flexibelsten, denn im Ernstfall kann ich auch ein Adernpaar für eine Serielle Verbindung zweckentfremden, zum anderen hatte ich noch genug Ethernet Kabel zu Hause.

Um mal einen Anfang zu finden habe ich mich nun für einen Raspberry entschieden. Der is ja auch so hip derzeit.

Nur wo betreibe ich den? Also am besten ist es den doch gleich im Sicherungskasten unterzubringen.

Und ich habe tatsächlich ein Hutschienen Gehäuse gefunden.

Die Serverplatform ist nun ein Hutschienengehäuse, ein Raspbery PI2 und ein Hutschienen Traffo. Das kam alles schnell an und ich konnte den auch gleich in Betrieb nehmen (mal mit Handy Ladenetzteil auf meinem Schreibtisch),

2 Dinge waren noch zusätzlich zu klären:

  1. Was machen bei einem Stromausfall
  2. Wie steuere ich die Türe an

Für den ersten Punkt habe ich mich für die PI USV+ von CW2.com entschienden, auf die Auslieferung warte ich derzeit.

Für den zweiten Punkt gäbe es entweder eine Billige Lösung in der ich mich in Elektronik einlernen muss oder eine vorgefertigte Lösung. Ich habe mich für letzteres entschieden, etwas gegoogelt und dann das PiFace Digital 2 Borad gekauft das ich schon zu Hause liegen habe. Das Board bietet sowohl 2 Relais (für die man zusätzlich 5V spannung benötigt) als auch diverse digitale Ausgänge.

Nach einigen Mails mit meinem Schwager und der Messung der Kontakte an der Haustüre (4V, 3mA) versuche ich wohl zunächst die digitalen Open Collector Ausgänge zu nutzen. Sollte theoretisch funktionieren wenn ich den positiven Draht auf den digitalen Ausgang hänge und den negativen auf GND. Nun, mal abwarten ob ich mir damit das Board zerschieße oder ich richtig überlegt habe.