Projekte

>Projekte

Festival Holledau App – 1.3

Und wieder ein Update das die Musikherzen höher schlagen lässt:

  • Prost: Krüge Archiv hinzugefügt
  • Zelt wiederfinden: Standorte speichern & teilen*
  • Musik auf die Ohren: Spotify Player Integration
  • Fit For Festival: App ist schlanker und schneller

*Deine Daten sind sicher: Es werden / wurden zu keiner Zeit personenbezogene Daten irgendwo gespeichert

 

By |2019-05-09T20:00:57+02:002019-05-09|Coding, Festival Holledau App, Xamarin|

MuteToHue

Ich hatte ja einen CallMonitor für meine Fritzbox, welcher eine Lampe anschaltet wenn ich telefoniere.
Da wir unsere Telefonanlage nun auf Starface umgestellt haben, musste eine andere Lösung her.

Lange habe ich mir Gedanken gemacht, was hier wohl die beste Lösung ist.
Das Projekt wollte ich unbedingt in .NET Core machen, da ich hier noch nichts gemacht habe.

Da ich nun ausschließlich mit dem Headset telefonieren (dazu noch Skype, WebEx, usw.), läuft das komplette Audio über den Mac.
Wenn ich den Audio-Out mute, weil z.B. Radio läuft, geht das Audio trotzdem am Headset. Das ist sehr angenehm… denn nun musste ich nur noch den Mute-State überprüfen.

Am Mac ist das leider nicht mehr so einfach, aber habe eine Lösung hier gefunden:

public bool GetMuteState()
{
    var readMuteCommand = "osascript -e 'output muted of (get volume settings)'";
    string isMutedString = ReadFromBash(readMuteCommand);
    isMutedString = isMutedString.TrimEnd(Environment.NewLine.ToCharArray()).ToUpper();
    bool newState = isMutedString == "TRUE";
    return newState;
}

public string ReadFromBash(string readMuteCommand)
{
    var escapedArgs = readMuteCommand.Replace("\"", "\\\"");
    var process = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "/bin/bash",
            Arguments = $"-c {QUOTE}{escapedArgs}{QUOTE}",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true,
        }
    };
    process.Start();
    string result = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
    return result;
}

Das überprüfe ich nun alle 5s und wenn sich der Wert ändert, dann wird die Lampe geschalten:

Console.WriteLine("Monitoring mute state...");
bool isMuted = GetMuteState(); // Starting state
while (true)
{
    try
    {
        // Read state
        bool newState = GetMuteState();
        if (isMuted != newState)
        {
            Console.WriteLine("Muted: " + isMuted + " --> " + newState);
            SetHueState(newState);
            isMuted = newState; // All OK, set new state
        }

        Thread.Sleep(SLEEPTIME);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Error: " + Environment.NewLine + ex);
    }
}

Aber das Lampen schalten war nicht so einfach…

  • Erster Versuch über Q42.HueApi: Leider stürzt das Programm beim Zugriff auf die Klassen ab
  • Zweiter Versuch über IronPython ein kleine Script zu laden und ausführen: Das Compilieren gestaltet sich bisschen schwierig
  • Lösung: Ich habe ein kleines Python Script mit Platzhalter (True/False) ob die Lampe an ist. Zur Laufzeit ersetzt ich den Wert und führe es über die Bash aus
public void SetHueState(bool newState)
{
    // Read python script and replace placeholder
    var filename = @"/Users/moz/Documents/GitHub/Suplanus.MuteToHue/src/ControlViaPhue.py"; // todo: relative path
    var tempFile = Path.Combine(Path.GetTempPath(), "MuteToHue.py");
    string content = File.ReadAllText(filename, Encoding.UTF8);
    string stateString = FirstCharToUpper(newState.ToString());
    content = content.Replace("$STATE$", stateString);
    File.WriteAllText(tempFile, content, Encoding.UTF8);

    // Execute python script
    var command = $"python {QUOTE}{tempFile}{QUOTE}";
    var result = ReadFromBash(command);
}

public static string FirstCharToUpper(string input)
{
    return input.First().ToString().ToUpper() + input.Substring(1);
}
#!/usr/bin/python

from phue import Bridge
import os
import logging

HUEBRIDGEIP = "192.168.178.79"
LIGHTNAME = "OnAir" # OnAir # Buro

# Init hue
logging.basicConfig()

Bridge = Bridge(HUEBRIDGEIP)
Bridge.connect() # If the app is not registered and the button is not pressed, press the button and call connect() (this only needs to be run a single time)
Bridge.get_api() # Get the bridge state (This returns the full dictionary that you can explore)
light_names = Bridge.get_light_objects('name') # Get a dictionary with the light name as the key
LAMP = light_names[LIGHTNAME] # Get light object
LAMP.on = $STATE$ # True # $STATE$
LAMP.brightness = 254

Das Ganze findet ihr wie gewohnt auf GitHub.

By |2019-03-13T07:22:19+02:002019-02-16|C#, Projekte|

Doorbell – Gong

Wir haben ja als Gong eine Funkbox eingesetzt welche über den AUX des Raspberries bespielt wird.
Leider bekommen wir Störgeräusche der Nachbarn rein, welche Funkkopfhörer benutzen. Diese funken wohl auf der gleichen Frequenz.

Nach Tests mit verschiedenen Kanälen (A & B) haben wir aber immer noch Hörspiele der Nachbarn gehört.

Generell war ich nie Fan von der Lösung da die Box und der Sender ständig am Strom hängen.
Ich hatte im Kopf schon die Lösung, aber mir fehlte die Zeit.

Da die Störungen aber immer mehr wurden hab ich mich mal hingesetzt und folgendes umgesetzt:

  • Box weg
  • Audio abspielen über Pi weg
  • Eine Funktürklingel gekauft
  • Den Sender an den Pi über Relais angebunden (12V)
  • Die Gong-Musik von den Kindern einstellen lassen

Technisch ist es nun meiner Meinung nach die bessere Lösung. Einziger Nachteil ist, dass ich die Gong-Musik nicht mehr selbst wählen kann. Somit musste meine geliebtes Super-Mario-Theme weichen.

Der Sender der Türklingel hatte einen SMD Taster den ich entlötet habe. Danach getestet ob es auch ein Schließer ist (ja).
Dort hab ich dann den Relaiskontakt integriert.

Die 12V Batterie vom Sender muss ich noch durch ein Netzteil tauschen wenn Sie oft leer ist.
Hier noch ein Bild der wilden Verdrahtung:

Als Ausgang hab ich die rote LED genommen. Diese ist während der Aufnahme des Fotos aktiv gewesen. Den Code musste ich dem entsprechend anpassen.

 

By |2019-02-02T11:24:35+02:002019-02-02|Doorbell, Projekte|

Wippe selber bauen

Ich hab ja hier schon über viel geschrieben… aber dass ich mal zeige wie ich eine Wippe selber baue, hätte ich nicht gedacht.
Bei uns gibt es den Brauch, einen sogenannten Kindsbaum zur Hochzeit aufzustellen. Hier mal ein Auszug aus Wikipedia:

Vor allem in südbayerischen Raum ist es üblich, zur Hochzeit einen sogenannten Kindsbaum aufzustellen. Es handelt sich hierbei um einen 5 bis 10 m langen, weiß-blau bemalten Stamm, an dessen „Ästen“ diverse Baby-Sachen aufgehängt werden (Strampler, Schnuller, Flasche, etc.). In der Regel ist an der Spitze des Kindsbaums ein Storch montiert. Zudem befindet sich am unteren Ende des Baumes in Augenhöhe eine Tafel mit einem Gedicht, in dem das frisch vermählte Ehepaar an seine Pflicht erinnert wird, innerhalb eines Jahres Nachwuchs auf die Welt zu bringen. Gleich, ob sich Nachwuchs einstellt oder nicht, nach einem Jahr ist auf jeden Fall eine Brotzeit fällig, die nicht von den Kindsbaumaufstellern, sondern von dem Paar auszurichten ist.

Unserer war nicht ganz klassisch:

  • Anstatt 5-10m hoch, mit 18m riesig
  • Anstatt weiß blau, pink und grün, angemalt
  • Anstatt eines Storches einen Yoshi
  • LED-Solar-Lampen welche Sommer wie Winter schön geleuchtet haben

Der Kindsbaum wurde ein Jahr nach der Hochzeit umgelegt. Er hat auch gut funktioniert…
Viele wissen wohl dass ich Vater von Zwillingen geworden bin und da bietet sich eine Wippe als Spielgerät an :)
Hatte den Baum schon dafür eingelagert…

Hab mir dann bei Ebay das Gelenk und die Sitze mit Haltebügel gekauft. Sind im Internet zum Teil sehr teuer, darum vergleicht die Preise.
Das Gelenk habe ich seitlich gekürzt, da es sonst zu breit gewesen wäre. Wir mussten das Gelenk dann noch mit Eisen verstärken (seitlich angeschweißt und verschraubt). Habe dann noch Schaumstoff angebracht als Fingerschutz. Finde es auch albern dass das Gelenk für öffentlich Spielplätze gedacht ist und man sich so leicht einklemmen kann. Als Puffer, habe ich zwei alte Autoreifen eingegraben.

Meinen Mädels gefällt es sehr gut!

By |2018-09-17T17:05:30+02:002018-09-17|Garten, Projekte|

iMac Lampe

Fand das Design des iMacs G3 immer sehr schön und sogar zeitlos. Durch Zufall hab ich einen alten günstig bekommen (Ebay-Preis derzeit ca. 50€).
Aber eigentlich war mir nicht klar was ich damit mache… So hab ich Ihn auf mein Sideboard im Büro gestellt.

Naja, aber da sind zwei Schränke, somit musste ein zweiter her.

Sah schon gut aus, aber irgendwie erinnerten Sie mich an eine Lampe… also machen wir eine Lampe draus.
Alle Bauteile ausgebaut, was nicht so einfach war. Fertige Plexiglasscheibe in Milch-Optik im Internet bestellt (günstiger als im Baumarkt).
Mit Sekundenkleber angeklebt. Innen drin eine E27 Fassung mit Sockel montiert. Kabel dran.

Als Lampe verwende ich eine Phillips Hue bzw. heißt jetzt Signify. Dadurch kann ich verschiedene Farben machen und sogar zur Musik animieren.
Somit können die Fische bisl Party machen.

Finde es sieht super aus (auch am Tag). Einfach und günstig selber zu bauen.

By |2018-08-23T12:19:17+02:002018-08-24|Projekte|