Skript

EPLAN-API: Showcase 2016 Oktober

Man merkt es hier bisl weniger, aber hab derzeit sehr viel mit der EPLAN API zu tun, was mir auch riesig Spaß macht.
Darum hier mal ein kleiner Auszug…

 

ToggleLayerTable

Viele von euch kennen bestimmt die API Erweiterung ToggleLayer. Mit der ist es möglich einzelne Ebenen umzuschalten. Aufgrund einer Kundenanforderung habe ich das ganze nun auch für die gesamte Ebenenverwaltung geschrieben. Der Action übergibt man einfach eine *.elc Datei, welche alle Ebenen beinhaltet und diese wird dann importiert.

Von |2016-10-20T07:36:57+02:002016-10-20|EPLAN, EPLAN-API|

Stellenangebot

Wir suchen Unterstützung für unser Team bei ibKastl… eigentlich schon länger, aber jetzt versuche ich mal über Suplanus darauf aufmerksam zu machen.

ibkastl-stellen

Arbeite nun seit 2014 mit Michael Kastl zusammen und wir betreuen die Kunden gemeinsam.
Jeder hat seine Spezialgebiete und somit können wir die beste Beratung im EPLAN Umfeld anbieten.

Aufgrund der steigenden Anfragen, würden wir gerne unser lustiges Zweiergespann erweitern.

Wichtig ist uns, dass die Kompetenzen und das menschliche passt. Schulabschlüsse oder Ähnliches ist eher zweitrangig. Es muss nicht unbedingt jeder Punkt der Stellenbeschreibung erfüllt sein.
Jeder Mitarbeiter hat die Freiheit sich und die Termine selbst zu organisieren.
Homeoffice, super Kunden und die Freiheit Neues auszuprobieren, sind für mich die größten Privilegien die man als Mitarbeiter bei ibKastl genießen darf. Abgesehen davon hat man natürlich ein anständiges Gehalt mit Firmenauto, Macbook, iPhone usw…

logo_ibkastl_web

Ich kann als Mitarbeiter sagen, es ist eine Traum-Arbeitsstätte für jeden der sich gerne mit EPLAN beschäftigt und das Wissen gerne an andere Leute vermittelt.
Der Umgang im Unternehmen ist freundschaftlich und es wird auf alle Rücksicht genommen (wenn man z.B. wie ich doppelten Nachwachs bekommt).
Somit kann ich jedem nahe legen sich bei uns zu melden. Gerne treffen wir uns auf ein Bier einen Kaffee und lernen uns näher kennen.

Von |2016-10-19T11:55:54+02:002016-10-19|Allgemein|

OfficeSpace

Jetzt bin ich glaub ich mit der Büro Automatisierung durch :^)

Ich habe alle Verbraucher am Schreibtisch an einer FRITZ!DECT200, welche 10A ab kann. Diese habe ich dann per Zeitschaltuhr immer wochentags ab 6:30 eingeschalten.

Problem: Natürlich ging das an auch wenn ich nicht im Büro war, oder war aus wenn ich früher da war.

Darum habe ich mir ein weiteres Python Script geschrieben, damit beim Hochfahren des Rechners auch gleich diese Steckdose angeht. Die Steckdose hat eine Funktion welche automatisch abschaltet bei einer angegebenen Leistung & Zeit. Somit wenn der Rechner aus ist schaltet auch die Steckdose aus. Das merkt man sehr, da Geräte wie Monitor usw. in Standby gehen. Denn der Laptop lädt natürlich weiter und hängt nicht an der Dose.

Verwendet habe ich die Library PyDect200, schön einfach…

Zusätzlich zum Schreibtisch wird auch mein Aquarium im Büro eingeschaltet, ausschalten dann weiterhin über Zeitschaltuhr. Denn mal ehrlich, die Fische sollen auch arbeiten wenn ich im Büro bin :^)

#############################################################################
# OfficeSpace
#############################################################################

#!/usr/bin/env python
# -- coding: utf-8 --
from __future__ import (absolute_import, division,
                        print_function, unicode_literals)
import time


print("Init...")
try:
        from PyDect200 import PyDect200
except:
        print(u'PyDect200 is not installed!')
        print(u'run: pip install PyDect200')
        exit()
import getpass

try:
    PyDect200.__version__
except:
    PyDect200 = PyDect200.PyDect200

fritzbox_pw = "passwordOfFritzbox"
aquarium_id = "123"
buro_id = "456"

print("Devices:")
f = PyDect200(fritzbox_pw)
device_names = f.get_device_names()
print(device_names)

print("Switching on...")
f.switch_onoff(aquarium_id,1)
f.switch_onoff(buro_id,1)

print("Finished")
Von |2016-10-14T07:24:02+02:002016-10-17|Home Automation, Python|

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