Archiv für den Monat: Oktober 2016

VSColorOutput

Mich hat der monotone Output in Visual Studio immer schon gestört. Viele Informationen die (meist) nicht interessieren und einige sehr wichtige die man vor lauter Bäumen nicht sieht.

Durch Zufall, ohne danach zu suchen, bin ich auf VSColorOutput gestoßen und bin begeistert. Echte Empfehlung!

screenshot

Von |2018-04-24T16:13:04+02:002016-10-14|C#, Coding|

400. Beitrag

… und ich hab es verpasst, denn es sind schon 401.

Vielen Dank an alle Leser, ich hoffe ich komme wieder mehr zum Schreiben!

400 celebration monument

Von |2016-10-14T14:19:35+02:002016-10-14|Allgemein|

Logging-Framework: Serilog

Ich werde ab und zu gefragt wie ich denn Daten zur Laufzeit (nicht Debugging) mit logge.

Log4Net war hier lange Platzhirsch, aber für mich und viele andere ist es nun Serilog. Denkbar einfach zu implementieren. Es gibt viele Sinks (Ziele für das Logging, z.B. Datenbanken, Dateien, Console).

Das ganze in kostenlos und OpenSource…

Hier ein kleines Beispiel für einen Logger der in eine Datei schreibt und zusätzlich in die Console, auch schön in Bunt von hier:

Log.Logger = new LoggerConfiguration()
    .WriteTo.LiterateConsole()
    .WriteTo.RollingFile("log-{Date}.txt")
    .CreateLogger();

Log.Information("Ah, there you are!");

coloredconsolesinkdemo

Von |2016-10-13T13:46:45+02:002016-10-13|C#|

HueRainbowClock

Man hat ja schon gemerkt dass ich gerade mein Büro automatisiere…

Nun hatte ich bereits schon eine Hue Lampe, welche ich über IFTTT gesteuert habe. Diese hat jede Stunde die Farbe gewechselt.
Problem: Auch dann wenn ich nicht im Büro bin.

Somit hab ich mir eine RainbowClock für die Hue in Python geschrieben :^)

Läuft bei mir an wenn der Rechner startet und somit geht mir dann automatisch ein Licht auf.
Und ist es nicht cool zu sagen: “Oh es ist schon Rot, ich sollte mal Pause machen.”

HueRainbowClock on GitHub

Das Script läuft zwar auf meinem Mac, aber die Lampe hängt hinter meinem “Test-Monitor” an dem grad ein Raspberry Pi hängt :^)
Es würde auch auf dem Pi laufen…

#############################################################################
# HueRainbowClock
#############################################################################

import os
import datetime
import time

from phue import Bridge

import colorama
from colorama import Fore, Back, Style

from rgb_cie import Converter

HUEBRIDGEIP = "192.168.178.79"
LIGHTNAME = "Buro"

LAMP = ""

# Executes hour changed
def DingDong():
	global hourBefore

	# Turn lamp on
	LAMP.brightness = 254

	# Change color
	converter = Converter()

	if hour == 1 or hour == 13:
		xy = converter.rgbToCIE1931(255,0,0)

	if hour == 2 or hour == 14:
		xy = converter.rgbToCIE1931(255,128,0)

	if hour == 3 or hour == 15:
		xy = converter.rgbToCIE1931(255,255,0)

	if hour == 4 or hour == 16:
		xy = converter.rgbToCIE1931(128,255,0)

	if hour == 5 or hour == 17:
		xy = converter.rgbToCIE1931(0,255,0)

	if hour == 6 or hour == 18:
		xy = converter.rgbToCIE1931(0,255,128)

	if hour == 7 or hour == 19:
		xy = converter.rgbToCIE1931(0,255,255)

	if hour == 8 or hour == 20:
		xy = converter.rgbToCIE1931(0,128,255)

	if hour == 9 or hour == 21:
		xy = converter.rgbToCIE1931(0,0,255)

	if hour == 10 or hour == 22:
		xy = converter.rgbToCIE1931(128,0,255)

	if hour == 11 or hour == 23:
		xy = converter.rgbToCIE1931(255,0,255)

	if hour == 12 or hour == 24:
		xy = converter.rgbToCIE1931(255,0,128)

	LAMP.xy = xy

	# Log
	text = "==> " + str(hour) + " ==> " + str(xy)
	print(Fore.LIGHTBLUE_EX + text + Style.RESET_ALL)

	# Save for check later
	hourBefore = hour

# Init hue
print(Fore.LIGHTBLUE_EX + 'Init hue' + Style.RESET_ALL)
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)

# Get a dictionary with the light name as the key
light_names = Bridge.get_light_objects('name')

# Get light object
LAMP = light_names[LIGHTNAME]

# Do it to the end of time
print(Fore.LIGHTBLUE_EX + 'Read time' + Style.RESET_ALL)
hourBefore = ""

while(True):
	# Check time
	now = datetime.datetime.now()
	hour = int(now.strftime("%H"))

	# Test
	#for i in range(1,12):
	#	hour = i
	#	DingDong()
	#	time.sleep(2)

	# Check if already set
	if hour == hourBefore:
		continue # do nothing

	# Doit
	DingDong()

 

Von |2016-10-12T12:54:29+02:002016-10-12|HueRainbowClock, Projekte, Python|

EPLAN API: EPLAN Prozess in anderem Thread starten

Bei einer Offline Applikation hat man immer das Problem, man muss eine Oberfläche bereitstellen, welche immer reagiert und im besten Fall nicht einfriert.

Der EPLAN Prozess, braucht ziemlich lang zum hochfahren, darum will man den auch auslagern. Damit dieser aber in einem anderen Thread laufen kann ist folgender Code notwendig:

Thread newThread = new Thread(ThreadMethod);
newThread.SetApartmentState(ApartmentState.STA);
newThread.Start();

In der ThreadMethod()  kann dann EPLAN gestartet werden. Ich hatte es erst mit dem BackgroundWorker probiert, leider ist dieser MTA und somit nicht nutzbar.

Von |2016-10-11T13:39:53+02:002016-10-11|EPLAN, EPLAN-API|
Nach oben