Digitalisierung

openHAB V: Müllkalender per ical einbinden

Veröffentlicht am
This entry is part 5 of 5 in the series openHAB
Geschätzte Lesezeit: < 1 Minute.

Mein Haus soll mich erinnern, wann ich Mülltonnen herausrollen soll. Dazu möchte ich den Abfallkalender, den die Stadt Langenfeld freundlicherweise zur Verfügung stellt, in openHAB einbinden.

Tag 1: Einbindung der ical-Datei

Glücklicherweise gibt es für dieses Projekt eine Anleitung, die ich Schritt-für-Schritt befolgen werde. Als erstes organisiere ich den Link für den Kalender: https://www.langenfeld.de/city_info/display/ical/m_calendar_ical.cfm?region_id=138&year=2020&city_id=298&street_id=8415. Sofort fällt das Fragment year=2020 auf. Das muss ich wohl jährlich ändern, fürchte ich. Nun installiere ich das HTTP-Binding /(binding-http1 – 1.14.0). So weit, so einfach.

Als nächstes werden Items erstellt. Diese lege ich in einer neuen Datei abfall.items an:

String ABFALL_ICAL { http="<[https://www.langenfeld.de/city_info/display/ical/m_calendar_ical.cfm?region_id=138&year=2020&city_id=298&street_id=8415:360000:JS(abfall_heute.js)] }"
Switch ABFALL_AKTIV
String ABFALL_NAME

Nun wird es komplizierter. Also: Komplizierter für das Verständnis, nicht für die tatsächliche Einbindung. Ich kopiere das 138-Zeilen-JavaScript von obiger Anleitung in eine neue Datei /ect/openhab2/transform/abfall_heute.js. Weil ich neugierig bin, schaue ich in die Logs. Aber, oh weh, so einfach funktioniert das wohl doch nicht. Ich bekomme einen Fehler:

2020-05-06 16:19:48.054 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'abfall.items'
2020-05-06 16:19:49.113 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'abfall.items' has errors, therefore ignoring it: [2,1]: missing '}' at 'Switch'

Okay, das kann ich korrigieren - ich habe das entsprechende Snippet (oben) bereits korrigiert. Bei reinem copy-und-paste von meiner Seite sollte dieser Fehler also nicht auftreten - in der Anleitung ist der Fehler (Stand heute) vorhanden. Trotzdem erhalte ich den nächsten Fehler:

[INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'abfall.items'
[WARN ] [.core.transform.TransformationHelper] - Cannot get service reference for transformation service of type JS
[WARN ] [ab.binding.http.internal.HttpBinding] - Couldn't transform response because transformationService of type 'JS' is unavailable

Okay, kurzes Suchen verrät mir, dass ich den JavaScript Transformation Service (transformation-javascript - 2.5.3) installieren muss. Also Add-ons > Transformations, installiert.

Es folgen die Rules, wie immer in einer neuen Datei abfall.rules:

rule "Abfallkalender"
when
   Item ABFALL_ICAL changed
then
   //Prüfen ob Abfall abgeholt wird
	if (ABFALL_ICAL.state != "false" && ABFALL_ICAL.state != "Uninitialized"){
      postUpdate(ABFALL_AKTIV,ON)
      postUpdate(ABFALL_NAME,ABFALL_ICAL.state)
   } else {
      postUpdate(ABFALL_AKTIV,OFF)
      postUpdate(ABFALL_NAME,"false")
   }
end

Und dann folgt noch das Snippet für die Sitemap:

    Text item=ABFALL_NAME label="Abholung heute: [%s]" icon="abfall" visibility=[ABFALL_AKTIV==ON]

Als Icon "abfall" nutze ich dieses Icon, welches ich unter speichere.

Nun sollte der Kalender also funktionieren. Mal sehen, wie es aussieht und was die Logs sagen.

[WARN ] [ab.binding.http.internal.HttpBinding] - Transformation 'JS(abfall_heute.js)' threw an exception. [response=]
org.openhab.core.transform.TransformationException: An error occurred while executing script. TypeError: Cannot read property "events" from undefined in <eval> at line number 120
	at org.openhab.core.transform.TransformationHelper$TransformationServiceDelegate.transform(TransformationHelper.java:71) ~[bundleFile:?]
	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:218) [bundleFile:?]
	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:146) [bundleFile:?]
	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:169) [bundleFile:?]

Oh-oh. Das klingt nicht gut. Tja. Vielleicht liegt dieser Fehler daran, dass heute kein Müll-Termin vorhanden ist. Ich schaue mir das Ganze morgen nochmal an, denn dann müsste ein Termin angezeigt werden.

Tag 2: Neuer Tag, neuer Fehler

Es gibt gute und schlechte Neuigkeiten. Die gute Neuigkeit ist, dass ich heute den Hinweis auf "Abholung heute:" in der Sitemap sehe. Der zugehörige Sichtbarkeits-Switch ABFALL_AKTIV muss also auf ON gesprungen sein, was wiederum bedeutet, dass ein Kalendereintrag für heute gefunden wurde. Das ist schon mal sehr gut.

Leider ist der Fehler trotzdem noch vorhanden. Als Ergebnis bekomme ich nicht angezeigt, welcher Abfall denn heute abgeholt wird. Anscheinend kann das Event nicht ordentlich ausgelesen werden.

In der Anleitung wird als Quelle für das Javascript dieses Skript genannt. Also kopiere ich dieses ijp-0.6.js, und ändere in den abfall.items die erste Zeile:

String ABFALL_ICAL { http="<[https://www.langenfeld.de/city_info/display/ical/m_calendar_ical.cfm?region_id=138&year=2020&city_id=298&street_id=8415:360000:JS(ijp-0.6.js)]" }

Ein Blick in die Logs zeigt diese Zeilen:

[vent.ItemStateChangedEvent] - ABFALL_ICAL changed from  to null
[vent.ItemStateChangedEvent] - ABFALL_NAME changed from  to null

Naja, immerhin keine Exception mehr.

Tag 3: Andere Strategie - CalDAV

So richtig funktioniert das nicht. Ich befürchte, dass meine Stadt die ics-Datei irgendwie nicht so ganz sauber zum Download anbietet, und dass die obigen Skripte deshalb die ics-Datei nicht ordentlich parsen können. Dummerweise habe ich zu wenig Ahnung von Parsen und JavaScript, sodass ich es auch nicht reparieren kann. Also mache ich es anders.

Ich synchronisiere meine Kalender ja sowieso per CalDAV. Und es gibt ein CalDAV-Binding für obenHAB. Und eine Anleitung gibt es auch. Dies probiere ich jetzt. Ich installiere also binding-caldav-personal1 (1.14.0).

Analog zur Anleitung bearbeite ich die Datei services/caldavio.cfg und ergänze folgende Zeilen am Ende:

caldavio:Muellkalender:url=<url>
caldavio:Muellkalender:username=<Username>
caldavio:Muellkalender:password=<Passwort>
caldavio:Muellkalender:reloadInterval=1440
caldavio:Muellkalender:preloadTime=20000
caldavio:Muellkalender:disableCertificateVerification=true

Nun lösche ich den ganzen nicht funktionierenden Kram (d.h. alles) aus abfall.items und ergänze:

String CalDav_Muelltonne   "[%s]"  <calendar> { caldavPersonal="calendar:Muellkalender type:UPCOMING eventNr:1 value:NAME" }
DateTime CalDav_Date "Datum der Abholung [%1$td.%1$tm.%1$tY]"    <calendar&g t;   { caldavPersonal="calendar:Muellkalender type:UPCOMING eventNr:1 value:START" }

Und ein Snippet in die default.sitemap, welches den vorigen Kram ersetzt:

    Frame {
        Text item=CalDav_Muelltonne
        Text item=CalDav_Date
    }

Tja, nur leider funktioniert auch das nicht. Hier ist der Log:

[vent.ItemStateChangedEvent] - CalDav_Muelltonne changed from NULL to UNDEF
[vent.ItemStateChangedEvent] - CalDav_Date changed from NULL to UNDEF

Also nutze ich Google. Dabei finde ich einige Dinge heraus: Zuerst einmal bin ich nicht der Einzige mit diesem Fehler. Leider wird hier keine echte Lösung vorgeschlagen, aber zumindest stelle ich fest, dass ich unter /var/lib/openhab2/etc/caldav einen Ordner Muellkalender habe, indem sich viele .ics-Dateien befinden. Das Binding funktioniert also, das Problem muss in der Item-Definition sein.

Tag 4: Möglicherweise funktioniert es

Der Titel ist bewusst vorsichtig gewählt, aber ich glaube, es funktioniert jetzt. Kommen wir zuerst zu den vermeidbaren Fehlern meinerseits.

In der Datei caldavPersonal.cfg ergänze ich folgende Zeile:

caldavPersonal:usedCalendars=caldavio:Muellkalender

In der Datei caldavCommand.cfg ergänze ich folgende Zeile:

caldavCommand:readCalendars=caldavio:Muellkalender

Das hätte ich beides schon längst machen sollen. Anschließend spiele ich etwas mit der caldavio.cfg herum. Ich weiß nicht genau, was ich alles ausprobiert habe, aber hiermit funktioniert es (derzeit):

caldavio:Muellkalender:url=<Url>
caldavio:Muellkalender:username=<Username>
caldavio:Muellkalender:password=<Passwort>
caldavio:Muellkalender:reloadInterval=1440
caldavio:Muellkalender:preloadTime=7000
caldavio:Muellkalender:disableCertificateVerification=true
#caldavio:Muellkalender:lastModifiedFileTimeStampValid=false

Als nächstes werden Traces für org.openhab.binding.caldav_personal, org.openhab.binding.caldav_command, und org.openhab.io.caldav aktiviert (Anleitung hier). Dies führte mich zu folgendem Problem:

[TRACE] [caldav.internal.job.EventReloaderJob] - loadFrom = 2020-05-11T11:17:11.677+01:00
[TRACE] [caldav.internal.job.EventReloaderJob] - loadTo = 2020-05-25T08:37:11.678+01:00
[TRACE] [caldav.internal.job.EventReloaderJob] - loading event: e7f8b797-ac65-403f-806f-e99efcc870f0:Restmüll graue Tonne
[DEBUG] [caldav.internal.job.EventReloaderJob] - Processing event 'Restmüll graue Tonne'
[DEBUG] [caldav.internal.job.EventReloaderJob] - No periods exist for event 'Restmüll graue Tonne'
[DEBUG] [caldav.internal.job.EventReloaderJob] - changing eventcontainer last modified to 2020-05-06T16:02:33.000+01:00
[TRACE] [.io.caldav.internal.CalDavLoaderImpl] - listeners for events: 2
[TRACE] [caldav.internal.job.EventReloaderJob] - eventContainer found: true
[TRACE] [caldav.internal.job.EventReloaderJob] - last resource modification: 2020-05-06T16:02:13.000+01:00
[TRACE] [caldav.internal.job.EventReloaderJob] - last change of already loaded event: 2020-05-06T16:02:13.000+01:00
[DEBUG] [caldav.internal.job.EventReloaderJob] - loading resource: <Url> (FSchangedTS not valid)
[TRACE] [caldav.internal.job.EventReloaderJob] - Raw URL: <url>
[TRACE] [caldav.internal.job.EventReloaderJob] - URL after encoding: <url>

Da steht No periods exist for event , und das hat mich stutzig gemacht. Und dann habe ich viel Hexerei betrieben. Die genaue Reihenfolge weiß ich nicht mehr, aber ich habe unter anderem die Bindings deinstalliert, den Cache geleert, und die Bindings neu installiert (Anleitung hier). Und ich habe in meinem CalDAV-Server (ownCloud) einen neuen Kalender angelegt, einen Kalendereintrag dorthin verschoben, und das Binding auf den neuen Kalender verwiesen. Und ich habe für einige Kalendereinträge die Dauer von 0 Minuten auf 1 Stunde verändert. Und irgendwie hat es dann geklappt. Ich vermute, dass vor allem die letzte Änderung, den Events einen Zeitraum zu geben, sehr wichtig war. Jedenfalls sehen die Traces jetzt so aus:

[DEBUG] [.io.caldav.internal.CalDavLoaderImpl] - return event list for CalDavQuery [calendarIds=[Muellkalender], from=2020-05-11T11:52:45.848+01:00, to=null, sort=ASCENDING, filterName=null] with 1 entries
[DEBUG] [ldav_personal.internal.CalDavBinding] - found 1 events for config: CalDavPresenceConfig [calendar=[Muellkalender], type=UPCOMING, eventNr=1, value=START, filterName=null, categoriesFiltersAny=false]
[TRACE] [ldav_personal.internal.CalDavBinding] - found event 19874479-6f54-45db-8d44-ddeddf80d04c(Restmüll graue Tonne@14.05.2020/02:00-14.05.2020/03:00) for config CalDavPresenceConfig [calendar=[Muellkalender], type=UPCOMING, eventNr=1, value=START, filterName=null, categoriesFiltersAny=false]
[DEBUG] [ldav_personal.internal.CalDavBinding] - sending command 2020-05-14T02:00:00 for item CalDav_Date
[TRACE] [ldav_personal.internal.CalDavBinding] - command 2020-05-14T02:00:00 successfully sent
[DEBUG] [ldav_personal.internal.CalDavBinding] - found 1 events for config: CalDavPresenceConfig [calendar=[Muellkalender], type=EVENT, eventNr=1, value=NAME, filterName=null, categoriesFiltersAny=false]
[TRACE] [ldav_personal.internal.CalDavBinding] - found event 19874479-6f54-45db-8d44-ddeddf80d04c(Restmüll graue Tonne@14.05.2020/02:00-14.05.2020/03:00) for config CalDavPresenceConfig [calendar=[Muellkalender], type=EVENT, eventNr=1, value=NAME, filterName=null, categoriesFiltersAny=false]
[DEBUG] [ldav_personal.internal.CalDavBinding] - sending command Restmüll graue Tonne for item CalDav_Muelltonne
[TRACE] [ldav_personal.internal.CalDavBinding] - command Restmüll graue Tonne successfully sent
[DEBUG] [ldav_personal.internal.CalDavBinding] - found 1 events for config: CalDavPresenceConfig [calendar=[Muellkalender], type=UPCOMING, eventNr=1, value=NAME, filterName=null, categoriesFiltersAny=false]
[TRACE] [ldav_personal.internal.CalDavBinding] - found event 19874479-6f54-45db-8d44-ddeddf80d04c(Restmüll graue Tonne@14.05.2020/02:00-14.05.2020/03:00) for config CalDavPresenceConfig [calendar=[Muellkalender], type=UPCOMING, eventNr=1, value=NAME, filterName=null, categoriesFiltersAny=false]
[DEBUG] [ldav_personal.internal.CalDavBinding] - sending command Restmüll graue Tonne for item CalDav_NaechsteMuelltonne
[TRACE] [ldav_personal.internal.CalDavBinding] - command Restmüll graue Tonne successfully sent

Abschließend verschiebe ich alle Einträge in meinen neuen Kalender, und stelle sicher, dass alle auch eine echte Dauer haben.

Dann kann ich mich ja jetzt darum kümmern, dass das Ganze in meiner Sitemap auch so aussieht, wie ich es gerne hätte. Dazu installiere ich als erstes das NTP-Binding (binding-ntp - 2.5.3), da mir dieses die aktuelle Zeit ausgibt. Anschließend ergänze ich in der abfall.items:

Switch Abfall_Aktiv
String Abfall_Name
DateTime date_today "Heute [%1$td.%1$tm.%1$tY]"   <calendar>  { channel="ntp:ntp:local:dateTime" }

Es folgt abfall.rules, eine leicht modifizierte Variante von oben:

rule "Abfallkalender"
when
   Item CalDav_Date changed
then
   //Prüfen ob Abfall abgeholt wird
	if (CalDav_Date == date_today){
      postUpdate(Abfall_Aktiv,ON)
      postUpdate(Abfall_Name,CalDav_NaechsteMuelltonne)
   } else {
      postUpdate(Abfall_Aktiv,OFF)
      postUpdate(Abfall_Name,"false")
   }
end

Eigentlich habe ich nur den Vergleich angepasst. Hoffentlich führt dieser Vergleich dazu, dass mir immer dann Mülltonnen angezeigt werden, wenn im Kalender ein Eintrag für den aktuellen Tag vorhanden ist. Und nun noch die Sitemap:

    Frame {
	Text item=Abfall_Name label="Abholung heute: [%s]" icon="abfall" visibility=[Abfall_Aktiv==ON]
    }

Ob das alles wirklich so klappt, werde ich erst in ein paar Tagen sehen. Aber bisher sieht es gut aus.

Tag 4: Kontrolle - Bisher funktioniert es

Grundsätzlich funktioniert es. Ich bekomme regelmäßig die Abholtemine angezeigt - und zwar, wie gewünscht, immer den nächsten Termin.

Leider klappt es aber nicht, dass ich immer nur den aktuellsten Abholtermin an dem Abholtag angezeigt bekomme. Daran ist vermutlich mein Kalendereintrag Schuld. Alle Abholtermine sind früh morgens, von 03:00 bis 04:00 Uhr hinterlegt. Das bedeutet, dass der Vergleich eines UPCOMING-Events mit dem aktuellen Tag nur nachts von 00:00 bis 03:00 positiv ist, und nur um diese Zeit sichtbar ist. Das ist natürlich doof, aber ich wüsste nicht, wie es anders gehen soll. Vielleicht muss ich hier auf Warnhinweise oder Alerts umsteigen, aber das ist ein Problem für einen anderen Tag.

h4>Tag 5: Notification

Wie bereits angesprochen, möchte ich Benachrichtigungen auf mein Handy erhalten, wenn eine Mülltonne abgeholt wird. Die einfachste Variante wäre, den Kalender auf dem Handy zu abonnieren und einfach dort Termin-Erinnerungen zu aktivieren, aber ich möchte es gerne via openHAB ausprobieren.

Es gibt, wie so oft, eine Anleitung für Benachrichtigungen. Dort wird als erster Schritt erwähnt, dass an sein openHAB mit myopenhab.com verbinden solle, mit einer genauen Anleitung hier. Also installiere ich das Binding openHAB Cloud Connector (misc-openhabcloud - 2.5.3). Anschließend navigiere ich zu Configuration > Services > openHAB Cloud > Configure und ändere den Zugriff auf Notifications. Remote-Zugriff möchte ich (noch) nicht.

Es folgt die Registrierung auf myopenhab.org. Dazu benötige ich UUID und ein Passwort, die ich aus /var/lib/openhab2/uuid und /var/lib/openhab2/openhabcloud/secret extrahiere - und natürlich einen Benutzernamen und ein Passwort. Nun wird mir meine openHAB-Instanz als offline angezeigt - wenig verwunderlich, da ich ja keinen Remote-Zugriff erlaube.

Weiter geht es. Ich möchte testen, ob die Benachrichtigungen funktionieren. Dazu lege ich mir testweise benachrichtigung.items an:

Switch  Send_via_App_Switch         "Benachrichtigung per App"      

Außerdem ergänze ich in der Sitemap:

    Frame {
        Switch item=Send_via_App_Switch
    }

Und nun lege ich benachrichtigung.rules mit einer Testnachricht an:

rule "Sende Benachrichtigung"
when
    Item Send_via_App_Switch changed
then
    if(Send_via_App_Switch.state == ON)
    {
        sendNotification("<E-Mail-Adresse>", "Dies ist eine Benachrichtigung.")

        Send_via_App_Switch.postUpdate(OFF)
    }
end

Natürlich funktioniert dies nicht direkt. Naja, ich habe vergessen, die openHAB-App auf meinem SMartphone mit dem Account auf myopencloud.org zu verbinden. Das hole ich nach, und schon funktioniert es.

Sehr gut. Aber eigentlich möchte ich ja etwas anderes. Eigentlich möchte ich ja, dass mir die nächste Mülltonne zur Abholung angezeigt wird. Also ändere ich Zeile 7 der benachrichtigung.rules:

        sendNotification("<E-Mail-Adresse>", "Abholung heute: " + CalDav_NaechsteMuelltonne.state)

Das funktioniert tatsächlich. Ich bin begeistert. Nun überarbeite ich meine abfall.rules:

rule "Abfallkalender"
when
   Item CalDav_Date changed
then
   //Prüfen ob Abfall abgeholt wird
    if (CalDav_Date == date_today){
        sendNotification("<E-Mail-Adresse>", "Abholung heute: " + CalDav_NaechsteMuelltonne.state)
   } 
end

Ob dies tatsächlich funktioniert, werde ich erst in ein paar Tagen wissen, wenn tatsächlich etwas abgeholt wird.

Digitalisierung

openHAB IV: Temperatur, Heizung und Raumklima mit Homematic IP

Veröffentlicht am
This entry is part 4 of 5 in the series openHAB
Geschätzte Lesezeit: 9 Minuten.

Das zweite echte Projekt ist die Kontrolle von Temperatur und Raumklima, verbunden mit einer Heizungssteuerung. Dieses Projekt ist vermutlich der Klassiker der Heimautomatisierung.

Ich habe mich für das System Homematic IP entschieden. In diesem System gibt es vier Komponenten, die für mich relevant sind:

  • HmIP-WTH-2: Thermostat, bestehend aus Temperatur- und Luftfeuchtemessung sowie einem Temperaturregler
  • HmIP-STHD: Temperatur- und Luftfeuchtesensor
  • HmIP-eTRV-2: Heizkörperthermostat, das die Leistung des Heizkörpers steuert
  • HmIP-CCU3: Die Steuerzentrale.

Ich beginne mit der Messung der Temperatur und der Luftfeuchtigkeit. Dazu bestellte ich mir vier HmIP-WTH-2,1Alle bei elektroprofi.com für 39,99€ pro Stück. um zu lernen, wie diese eingebunden werden. Diese werde ich im Haus an relevanten Stellen positionieren: Im Schlafzimmer, im Kellerraum mit dem Feuchtigkeitsproblem, und an zwei weiteren noch zu identifizierenden Stellen.

Die Zentrale CCU3 habe ich ebenfalls zu Beginn bestellt.2Einzeln bei Böttcher AG für 139,99€. Hier werde ich raspberryMATIC installieren. Vielleicht. Oder ich nutze die normale Software. Da muss ich mich nochmal informieren.

Im nächsten Schritt folgen weitere Temperatursensoren, und die Heizkörperthermostate, die damit gesteuert werden sollen. Ich werde in einigen Räumen ohne Heizkörper (z.B. unter dem Dach) nur Sensoren ohne Steuerungsmöglichkeit anbringen. Und ich möchte auch gerne die Außentemperatur und -luftfeuchtigkeit messen. Wie das geht, muss ich mich noch informieren.

Ach, und dann gibt es ja noch Sensoren, die erkennen, ob die Fenster geöffnet oder geschlossen sind. Das wäre praktisch, um die Heizung zu steuern. Und wenn das System erkennt, ob ich an- oder abwesend bin, könnte man sicher Heizkosten sparen. Das Projekt scheint recht groß zu werden.

Tag 1: Einbindung der CCU3

Okay, beginnen wir ganz langsam. Ich habe das Binding für Homematic IP (binding-homematic – 2.5.3) installiert. Als nächstes schließe ich die CCU3 an, und setze eine feste IP (x.x.x.12). Diese hat eine Web-Oberfläche, also navigiere ich direkt dort hin. Als erstes aktualisiere ich die CCU3-Firmware von 3.0.16 auf 3.51.6 mit dem integrierten Updater. Das dauert insgesamt etwa fünf Minuten.

Anschließend beginnt die Ersteinrichtung. Ich vergebe ein Admin-Passwort, wähle Express-Setup und wähle die Sicherheitsstufe Relaxed (weil dies so benötigt wird). Außerdem trage ich unter Einstellungen > Systemsteuerung > Firewall konfigurieren unter IP-Adressen für den eingeschränkten Zugriff: die IP-Adresse meines RasPi ein. Die vorhandenen Einträge lösche ich.

Nun ist es konfiguriert, es wird Zeit, den ersten Thermostaten (HmIP-WTH-2) einzubinden. Ich bin immer noch in der grafischen Oberfläche der CCU3, und drücke Geräte anlernen > Homematic Geräte direkt anlernen. Ich drücke den Pairing-Knopf am Thermostaten, der beginnt, fröhlich orange zu blinken. Das Gerät wird nicht gefunden, das hat also direkt nicht geklappt. Also probiere ich etwas herum. Einen Fehler bemerke ich, ich muss Geräte anlernen > Homematic IP Gerät mit Internetzugang anlernen auswählen. Ansonsten entferne ich die Batterie (um einen Reset herzustellen), drücke die Taste mal kurz, mal vier Sekunden, und irgendwann erscheint der Thermostat im Posteingang. Den Trick kann ich noch nicht erkennen. Jedenfalls ändere ich nichts an den Einstellungen, und drücke einfach Speichern.

Tag 2: Der erste Temperatursensor

Zurück in der PaperUI von openHAB. Über Inbox > + > Homematic Binding finde ich die CCU3 und füge diese hinzu. Direkt im Anschluss werden automatisch vier weitere Things in der Inbox angezeigt:

  • GATEWAY-EXTRAS
  • HM-RCV-50 BidCoS-RF (Virtual remote control (wireless))
  • HmIP-RCV-50 (Homematic IP virtual remote control)
  • HmIP-WTH-2 (Homematic IP Wall thermostat with humidity sensor)

Ich füge alle vier hinzu, obwohl mich nur der letzte Eintrag interessiert. Keine Ahnung, wozu die anderen gut sind, irgendwann werde ich diese vielleicht brauchen. Diesen nenne ich „HmIP-WTH-2_Schlafzimmer“. Jetzt möchte ich mir natürlich auch Temperatur und Luftfeuchtigkeit in meiner Sitemap anzeigen lassen.

Dazu muss ich als erstes die Channels aktivieren. Also wähle ich Things > HmIP-WTH-2_Schlafzimmer aus, und sehe direkt, dass der Channel für die tatsächliche Temperatur bereits existiert (Actual Temperature). Den Channel für die Luftfeuchte (Humidity) finde ich unter Show More. Ich kopiere jeweils die Channel, und lege mir eine neue Datei homematicip.items an:

// Schlafzimmer
// HmIP-WTH-2

Switch  ThermostatSchlafzimmer_BatteryStatus       "Thermostat Schlafzimmer Batterie [%s]"              {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6EF49:0#LOW_BAT" }
Number  ThermostatSchlafzimmer_TempSet             "Thermostat Schlafzimmer Temperatur Set [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6EF49:1#SET_POINT_TEMPERATURE" }
Number  ThermostatSchlafzimmer_TempAct             "Thermostat Schlafzimmer Temperatur Act [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6EF49:1#ACTUAL_TEMPERATURE" }
Number  ThermostatSchlafzimmer_Luftfeuchte         "Thermostat Schlafzimmer Luftfeuchte [%.0f %%]"      {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6EF49:1#HUMIDITY" }

Und nun ergänze ich folgendes Snippet in default.sitemap:

    Frame label="Schlafzimmer" {
        Text item=ThermostatSchlafzimmer_TempAct icon="temperature" label="Temperatur aktuell" 
        Text item=ThermostatSchlafzimmer_Luftfeuchte icon="humidity" label="Luftfeuchte"
    }

Und schon ist das fertig. So sieht es aus:
2020-04-30_sitemap-schafzimmer

Tag 3: Temperatursensor Nummer Zwei, und Firmware-Update

Heute binde ich den nächsten Temperatursensor ein. Das Anlernen über das WebUI von Homematic IP funktioniert diesmal auf Anhieb, warum auch immer. Die Einbindung als Thing in openHAB ebenfalls („HmIP-WTH-2_Wohnzimmer“), allerdings bekomme ich die Channels in anderer Reihenfolge als beim vorigen Sensor angezeigt. Seltsam.

In der WebUI der CCU3 bekomme ich angezeigt, dass ein Firmware-Update für meine Temperatursensoren vorliegt. Vielleicht löst dies ja das Problemchen. Ich klicke also auf die Anzeige, dass ein Firmware-Update vorliegt, und lade es herunter. Anschließend folge ich dieser Anleitung (Achtung, pdf). Ich klicke also auf Einstellungen > Geräte-Firmware > Neu und lade die Datei hoch. So kann ich von Version 2.0.2 auf 2.6.0 updaten. Dies prüfe ich unter Einstellungen > Geräte-Firmware – Übersicht. Hier steht unter „Aktion“, dass die Datei automatisch auf das Gerät übertragen wird, und dass ich, wenn dies fertig ist, auf Update klicken kann. Mal sehen.

In der Zwischenzeit ergänze ich homematicip.items um folgendes Snippet:

// Wohnzimmer
// HmIP-WTH-2

Switch  ThermostatWohnzimmer_BatteryStatus       "Thermostat Wohnzimmer Batterie [%s]"              {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F185:0#LOW_BAT" }
Number  ThermostatWohnzimmer_TempSet             "Thermostat Wohnzimmer Temperatur Set [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F185:1#SET_POINT_TEMPERATURE" }
Number  ThermostatWohnzimmer_TempAct             "Thermostat Wohnzimmer Temperatur Act [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F185:1#ACTUAL_TEMPERATURE" }
Number  ThermostatWohnzimmer_Luftfeuchte         "Thermostat Wohnzimmer Luftfeuchte [%.0f %%]"      {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F185:1#HUMIDITY" }

Und nun ergänze ich folgendes Snippet in default.sitemap:

	Frame label="Wohnzimmer" {
        Text item=ThermostatWohnzimmer_TempAct icon="temperature" label="Temperatur aktuell" 
        Text item=ThermostatWohnzimmer_Luftfeuchte icon="humidity" label="Luftfeuchte"
    }

Tag 4: Firmware-Update und Sensor Nummer Drei und Vier

Es hat etwas gedauert, aber nun ist die Update-Datei auf alle Geräte übertragen. Ich klicke auf Einstellungen > Geräte-Firmware – Übersicht > Update, und siehe da, die neueste Version der Firmware wird installiert. Das ist sehr einfach und nutzerfreundlich, sehr gut!

So, es folgen die nächsten zwei Temperatursensoren. Das Vorgehen ist ja mittlerweile bekannt. Mittlerweile habe ich auch den Trick identifiziert: Das Gerät sucht automatisch nach der CCU3, wenn ich die Batterie einlege. Daher muss ich nur schnell genug Geräte anlernen > Homematic IP Gerät mit Internetzugang anlernen auswählen. Das funktioniert wunderbar. Ich nenne die Geräte „HmIP-WTH-2_Arbeitszimmer“ und „HmIP-WTH-2_Technikkeller“. Zweiteres ist ein provisorischer Name, denn eigentlich möchte ich hier einen Sensor ohne Steuermöglichkeit installieren. Das ist günstiger. Außerdem habe ich in diesem Raum keine Heizung, und selbst wenn, muss im Keller nicht per Thermostat an der Temperatur gespielt werden.

Nun noch die openHAB-Snippets; hier ist homematicip.items:

// Arbeitszimmer
// HmIP-WTH-2

Switch  ThermostatArbeitszimmer_BatteryStatus       "Thermostat Arbeitszimmer Batterie [%s]"              {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F962:1:0#LOW_BAT" }
Number  ThermostatArbeitszimmer_TempSet             "Thermostat Arbeitszimmer Temperatur Set [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F962:1#SET_POINT_TEMPERATURE" }
Number  ThermostatArbeitszimmer_TempAct             "Thermostat Arbeitszimmer Temperatur Act [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F962:1#ACTUAL_TEMPERATURE" }
Number  ThermostatArbeitszimmer_Luftfeuchte         "Thermostat Arbeitszimmer Luftfeuchte [%.0f %%]"      {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F962:1#HUMIDITY" }


// Technikkeller
// HmIP-WTH-2

Switch  ThermostatTechnikkeller_BatteryStatus       "Thermostat Technikkeller Batterie [%s]"              {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F9BA:0#LOW_BAT" }
Number  ThermostatTechnikkeller_TempSet             "Thermostat Technikkeller Temperatur Set [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F9BA:1#SET_POINT_TEMPERATURE" }
Number  ThermostatTechnikkeller_TempAct             "Thermostat Technikkeller Temperatur Act [%.1f°C]"    {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F9BA:1#ACTUAL_TEMPERATURE" }
Number  ThermostatTechnikkeller_Luftfeuchte         "Thermostat Technikkeller Luftfeuchte [%.0f %%]"      {channel="homematic:HmIP-WTH-2:3014F711A0001F9A499D1959:000A9A49A6F9BA:1#HUMIDITY" }

Und default.sitemap:

	Frame label="Arbeitszimmer" {
        Text item=ThermostatArbeitszimmer_TempAct icon="temperature" label="Temperatur aktuell" 
        Text item=ThermostatArbeitszimmer_Luftfeuchte icon="humidity" label="Luftfeuchte"
    }
	Frame label="Technikkeller" {
        Text item=ThermostatTechnikkeller_TempAct icon="temperature" label="Temperatur aktuell" 
        Text item=ThermostatTechnikkeller_Luftfeuchte icon="humidity" label="Luftfeuchte"
    }
Digitalisierung

openHAB III: Fritz!Box-Einbindung

Veröffentlicht am
This entry is part 3 of 5 in the series openHAB
Geschätzte Lesezeit: 11 Minuten.

Ich habe eine Fritz!Box 7590.1Im Mesh-Set mit dem Repeater 1750 für 231,98€ bei Expert gekauft. Diese kann man auch einbinden. So kann z.B. im Falle eines Anrufes automatisch das Fernsehprogramm pausiert oder stummgeschaltet werden. Das hätte ich gerne.

Tag 1: Installation des Bindings

Es gibt eine wunderbare Anleitung für die Fritz!Box-Integration: Hier zu finden. Die arbeite ich jetzt ab. Als Vorarbeit erhält mein RasPi im Fritz!Box-Menü eine feste IP (x.x.x.10). Außerdem lege ich einen Benutzer für openhab auf der Fritz!Box an, und aktiviere „Zugriff für Anwendungen zulassen“. Anschließend installiere ich das Fritz!Box-Binding. Aber, oh weh, es gibt tatsächlich drei verschiedene Bindings für die Fritz!Box:

  • AVM FRITZ!Box Binding (binding-avmfritz – 2.5.3): Das ist wohl aktuell, für die Smart-Home-Features der Fritz!Box. Diese nutze ich (noch) nicht, daher ist es (derzeit) nicht relevant für mich.
  • Fritzbox Binding (binding-fritzbox1 – 1.14.0): Das ist wohl veraltet, und nutzt veraltete Schnittstellen. Also wird es nicht installiert.
  • Fritzbox TR064 Binding (binding-fritzboxtr0641 – 1.14.0): Das ist das aktuelle Binding. Das wird genutzt.

In Configuration > Bindings hinterlege ich noch Benutzername und Passwort für den openhab-Zugang, damit das Binding auch wirklich etwas schalten kann.

Gut. Nachdem das Binding installiert wurde, lege ich ein Item an. Also navigiere ich per SSH in das Items-Verzeichnis, und lege die Datei fritzbox.items an. Im Prinzip mache ich einmal copy&paste der Item-Konfiguration. Diese Datei enhält also folgende Zeilen:

String  fboxName            "FBox Model [%s]"           {fritzboxtr064="modelName"}
String  fboxManufacturer    "FBox Manufacturer [%s]"    {fritzboxtr064="manufacturerName"}
String  fboxSerial          "FBox Serial [%s]"          {fritzboxtr064="serialNumber"}
String  fboxVersion         "FBox Version [%s]"         {fritzboxtr064="softwareVersion"}
Number  fboxUptime          "FBox Uptime [%d s]"        {fritzboxtr064="upTime"}                 
// get wan ip if FritzBox establishes the internet connection (e. g. via DSL)
String  fboxWanIP           "FBox WAN IP [%s]"          {fritzboxtr064="wanip"}
// get wan ip if FritzBox uses internet connection of external router
String  fboxWanIPExternal   "FBox external WAN IP [%s]" {fritzboxtr064="externalWanip"}
Switch  fboxWifi24          "2,4GHz Wi-Fi"               {fritzboxtr064="wifi24Switch"}
Switch  fboxWifi50          "5,0GHz Wi-Fi"               {fritzboxtr064="wifi50Switch"}
Switch  fboxGuestWifi       "Guest Wi-Fi"                {fritzboxtr064="wifiGuestSwitch"}    
Contact cFboxMacOnline      "Presence (Wi-Fi) [%s]"      {fritzboxtr064="maconline:11-11-11-11-11-11" }
Switch  fboxReboot          "Reboot"                    {fritzboxtr064="reboot"}

// WAN statistics

String  fboxWanAccessType "FBox WAN access type [%s]" {fritzboxtr064="wanWANAccessType"}
Number  fboxWanLayer1UpstreamMaxBitRate "FBox WAN us max bit rate [%s]" {fritzboxtr064="wanLayer1UpstreamMaxBitRate"}
Number  fboxWanLayer1DownstreamMaxBitRate "FBox WAN ds max bit rate [%s]" {fritzboxtr064="wanLayer1DownstreamMaxBitRate"}
String  fboxWanPhysicalLinkStatus "FBox WAN physical link status [%s]" {fritzboxtr064="wanPhysicalLinkStatus"}
Number  fboxWanTotalBytesSent "WAN total bytes sent [%s]" {fritzboxtr064="wanTotalBytesSent"}
Number  fboxWanTotalBytesReceived "WAN total bytes received [%s]" {fritzboxtr064="wanTotalBytesReceived"}

// DSL statistics

Contact fboxDslEnable       "FBox DSL Enable [%s]"      {fritzboxtr064="dslEnable"}
String  fboxDslStatus       "FBox DSL Status [%s]"      {fritzboxtr064="dslStatus"}
Number  fboxDslUpstreamCurrRate "DSL Upstream Current [%s kbit/s]" {fritzboxtr064="dslUpstreamCurrRate"}    
Number  fboxDslDownstreamCurrRate "DSL Downstream Current [%s kbit/s]" {fritzboxtr064="dslDownstreamCurrRate"} 
Number  fboxDslUpstreamMaxRate "DSL Upstream Max [%s kbit/s]" {fritzboxtr064="dslUpstreamMaxRate"}               
Number  fboxDslDownstreamMaxRate "DSL Downstream Max [%s kbit/s]" {fritzboxtr064="dslDownstreamMaxRate"}        
Number  fboxDslUpstreamNoiseMargin "DSL Upstream Noise Margin [%s dB*10]" {fritzboxtr064="dslUpstreamNoiseMargin"}
Number  fboxDslDownstreamNoiseMargin "DSL Downstream Noise Margin [%s dB*10]" {fritzboxtr064="dslDownstreamNoiseMargin"}
Number  fboxDslUpstreamAttenuation "DSL Upstream Attenuation [%s dB*10]" {fritzboxtr064="dslUpstreamAttenuation"}
Number  fboxDslDownstreamAttenuation "DSL Downstream Attenuation [%s dB*10]" {fritzboxtr064="dslDownstreamAttenuation"}
Number  fboxDslFECErrors "DSL FEC Errors [%s]" {fritzboxtr064="dslFECErrors"}
Number  fboxDslHECErrors "DSL HEC Errors [%s]" {fritzboxtr064="dslHECErrors"}
Number  fboxDslCRCErrors "DSL CRC Errors [%s]" {fritzboxtr064="dslCRCErrors"}

// only when using call monitor
Switch  fboxRinging         "Phone ringing [%s]"                {fritzboxtr064="callmonitor_ringing" }
Switch  fboxRinging_Out     "Phone ringing [%s]"                {fritzboxtr064="callmonitor_outgoing" }
Switch  fboxCallConnecting  "Call established [%s]"             {fritzboxtr064="callmonitor_active" }
Call    fboxIncomingCall    "Incoming call: [%1$s to %2$s]"     {fritzboxtr064="callmonitor_ringing" } 
Call    fboxOutgoingCall    "Outgoing call: [%1$s to %2$s]"     {fritzboxtr064="callmonitor_outgoing" }
Call    fboxConnectedCall   "Call established [%1$s to %2$s]"   {fritzboxtr064="callmonitor_active" }

// resolve numbers to names based on phonebook
Call    fboxIncomingCallResolved    "Incoming call: [%1$s to %2$s]"     {fritzboxtr064="callmonitor_ringing:resolveName" } 

// Telephone answering machine (TAM) items
// Number after tamSwitch is ID of configured TAM, start with 0
Switch  fboxTAM0Switch   "Answering machine ID 0"       {fritzboxtr064="tamSwitch:0"}
Number  fboxTAM0NewMsg   "New Messages TAM 0 [%s]"      {fritzboxtr064="tamNewMessages:0"}

// Missed calls: specify the number of last days which should be searched for missed calls
Number  fboxMissedCalls  "Missed Calls [%s]"            {fritzboxtr064="missedCallsInDays:5"}

// Call deflection items
// Number after callDeflectionSwitch is ID of configured call deflection
// The ID count includes the entries from the "Call Blocks" page.
// If you have no "Call Blocks", the first entry on the "Call Diversions" page has ID 0.
// If you have 3 "Call Blocks", the first entry on the "Call Diversions" page has ID 3.
Switch  fboxCD0Switch    "Call Deflection ID 0"         {fritzboxtr064="callDeflectionSwitch:0"}

Als nächstes geht es an die Sitemap. Ich ergänze in der default.sitemap folgendes Snippet:

    Frame label="Fritz!Box" {
        Text item=fboxDslDownstreamCurrRate label="Downloadspeed aktuell"
        Text item=fboxDslUpstreamCurrRate label="Uploadspeed aktuell"
        Text item=fboxUptime label="Fritz!Box-Uptime"
        Switch item=fboxGuestWifi label="Gäste-WLAN"
    }

Nun besitze ich einen Schalter, mit dem ich das Gäste-WLAN an- und ausschalten kann. Außerdem bekomme ich die aktuellen Upload- und Downloadgeschwindigkeiten sowie die Uptime der Fritz!Box angezeigt. Das ist natürlich noch nicht optimal, denn ich bekomme die Geschwindigkeiten in kbit/s angezeigt. Dies ist in obiger Item-Konfiguration, Zeile 29-32, bereits korrigiert. Im Tutorial ist es falsch hinterlegt, dort steht mbit/s. Was ich eigentlich gerne hätte. Außerdem hätte ich gerne Icons auf der Sitemap. Das ist ein Projekt für einen anderen Tag.

Tag 2: Schönere Icons und bessere Textformatierung

Wie erwähnt möchte ich schönere Icons auf meiner Sitemap. Also bearbeite ich die Sitemap. Ich ändere daher obiges Snippet in der default.sitemap zu:

    Frame label="Fritz!Box" {
        Text item=fboxDslDownstreamCurrRate icon="returnpipe" label="Downloadspeed aktuell"
        Text item=fboxDslUpstreamCurrRate icon="flowpipe" label="Uploadspeed aktuell"
        Text item=fboxUptime icon="line" label="Fritz!Box-Uptime"
        Switch item=fboxGuestWifi icon="network" label="Gäste-WLAN"
    }

Nun wollte ich einen Screenshot einbinden, wie dies derzeit aussieht. Aber, oh weh, es funktioniert nicht. In den Logs standen folgende verräterische Zeilen:

2020-04-27 11:56:49.235 [ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Failed to receive valid response from httpGet: Read timed out
[ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Releasing connection to FritzBox because of error!
[ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Could not read xml response services
[ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Failed to receive valid response from httpGet: Connect to fritz.box:49443 [fritz.box/192.168.178.1, fritz.box/2a01:c22:b40b:500:de39:6fff:fede:37f4, fritz.box/fd00:0:0:0:de39:6fff:fede:37f4] failed: connect timed out
[ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Releasing connection to FritzBox because of error!
[ERROR] [ing.fritzboxtr064.internal.Tr064Comm] - Could not read xml response services
[WARN ] [ing.fritzboxtr064.internal.Tr064Comm] - No tr064 service found for service id urn:WLANConfiguration-com:serviceId:WLANConfiguration2
[WARN ] [ing.fritzboxtr064.internal.Tr064Comm] - No tr064 service found for service id urn:WLANConfiguration-com:serviceId:WLANConfiguration3

Nach kurzer Analyse zeigte sich, dass in der Konfigurations-Datei services/fritzboxtr064.cfg ein falscher Username und Passwort eingetragen war. Anscheinend speichert die PaperUI den Benutzernamen und das Passwort nicht (oder inkorrekt), denn eigentlich hatte ich das geändert. Also trage ich die richtigen Zugangsdaten ein, starte openHAB neu (sudo systemctl restart openhab2.service), und es funktioniert. Yeah!

Hier ist der versprochene Screenshot:
2020-04-27_sitemap-fritz

So weit, so gut. Mir gefällt die Textformatierung noch nicht. Erstens steht da kbit/s, ich hätte aber gerne Mbit/s. Und die Uptime in Sekunden ist auch seltsam. Leider kann man die Formatierung von Items nicht direkt ändern, sondern muss den veränderten Wert über eine Rule in ein neues Item schreiben. Naja, ich wollte sowieso lernen, wie das mit den Rules geht.

Als erstes lege ich mir various.items an, in der ich die neuen Items definiere:

Number fboxDslUpstreamCurrRate_mbit "DSL Upstream Current [%.1f Mbit/s]"
Number fboxDslDownstreamCurrRate_mbit "DSL Downstream Current [%.1f Mbit/s]"
String fboxUptime_hms "FBox Uptime [%s]"

Ich bin nicht sicher, ob dies in einer separaten Items-Datei sein muss, oder ob ich dies auch in fritzbox.items hätte ergänzen können. Zuerst habe ich es natürlich in fritzbox.items ergänzt, aber dort erhielt ich einen Fehler, dass diese Items nicht mit echten Werten verknüpft werden können. Vermutlich benötigt jedes Item eines Bindings ein echtes Gegenstück im Thing. Ich glaube, ich habe gerade gelernt, was ein Channel ist…

Und ich ändere das Sitemap-Snippet in default.sitemap zu:

    Frame label="Fritz!Box" {
        Text item=fboxDslDownstreamCurrRate_mbit icon="returnpipe" label="Downloadspeed aktuell"
        Text item=fboxDslUpstreamCurrRate_mbit icon="flowpipe" label="Uploadspeed aktuell"
        Text item=fboxUptime_hms icon="line" label="Fritz!Box-Uptime"
        Switch item=fboxGuestWifi icon="network" label="Gäste-WLAN"
    }

Jetzt fehlen noch die Rules. Ich erstelle eine neue Datei fritzbox.rules. Als erstes möchte ich, dass Up- und Downstream in Mbit/s anstatt kbit/s angezeigt werden. Das ist einfach, ich muss nur durch 1000 teilen:

rule "Adjust fboxUpstream"
when
    Item fboxDslUpstreamCurrRate received update
then
    fboxDslUpstreamCurrRate_mbit.sendCommand((fboxDslUpstreamCurrRate.state as DecimalType) / 1000)
end

rule "Adjust fboxDownstream"
when
    Item fboxDslDownstreamCurrRate received update
then
    fboxDslDownstreamCurrRate_mbit.sendCommand((fboxDslDownstreamCurrRate.state as DecimalType) / 1000)
end

Das ist im Prinzip zweimal die gleiche Regel. Für die Uptime habe ich diese Anleitung genutzt, und noch etwas mit if-else rumgespielt:

rule "Adjust fboxUptime"
when
    Item fboxUptime changed
then
    val totalSecs = (fboxUptime.state as Number).intValue
    val sec = totalSecs % 60
    val min = (totalSecs / 60) % 60
    val hrs = (totalSecs / (60*60)) % 24
    val day = totalSecs / (60*60*24)
    val tage = "Tage"
    val stunden = "Stunden"
    val minuten = "Minuten"
    val sekunden = "Sekunden"
    
    if (day==1){
        tage = "Tag"
    }
    if (hrs==1){
        stunden = "Stunde"
    }
    if  (min==1){
        minuten = "Minute"
    }
    if  (sec==1){
        sekunden = "Sekunde"
    }
       
    if (day==0){
        if (hrs==0){
            fboxUptime_hms.postUpdate(String::format("%d %s, %d %s", min, minuten, sec, sekunden))
        }
        fboxUptime_hms.postUpdate(String::format("%d %s, %d %s", hrs, stunden, min, minuten))
    } else {
        fboxUptime_hms.postUpdate(String::format("%d %s, %d %s", day, tage, hrs, stunden))
    } 
end

Nun werden immer zwei Zahlen angezeigt: In der ersten Stunde werden nur Minuten und Sekunden angezeigt. Am restlichen ersten Tag werden Stunden und Minuten angezeigt, und danach Tage und Stunden. Das hat erstens Platzgründe, und zweitens interessiert es mich wenig, wie viele Sekunden das System schon läuft, wenn es seit 243 Tagen und 16 Stunden läuft. Und außerdem ist eine kleine Umformatierung der Worte vorhanden, da beim Zahlenwert von 1 die Einzahl, ansonsten die Mehrzahl verwendet wird.

Das Ganze sieht jetzt so aus:
2020-04-28_sitemap-fritz

Digitalisierung

openHAB II: Grundkonfiguration

Veröffentlicht am
This entry is part 2 of 5 in the series openHAB
Geschätzte Lesezeit: 4 Minuten.

Ich habe seit einiger Zeit einen Raspberry Pi 4B in der 4GB-Variante1Ich habe ein Kit von LABISTS auf amazon.de für 87,99€ gekauft. herumliegen. Da ist ja klar, dass ich diesen auch als Smart-Home-Zentrale einsetze. Auf diesen installierte ich openHABian, in der aktuellsten Version. Dies ist derzeit openHAB 2.5.3.

Tag 1: Installation von openHAB

openHABian installierte ich gemäß der Dokumentation mit aktiviertem WLAN. Ich wollte natürlich den Status regelmäßig prüfen, indem ich auf http://openhab/ ging, allerdings funktionierte dies nicht so schnell wie erhofft. Stattdessen suchte ich über meinen Router die IP-Adresse heraus und surfte diese an. Hier erhielt ich immerhin einen „openHABian Installation Status“, aber die Logs funktionierten nicht. Möglicherweise gab es hier ein Problem damit, dass ich schonmal RaspBian auf dem RasPi installiert hatte und dem RasPi eine feste IP und einen festen Netzwerknamen zugeteilt hatte. Die Installation funktionierte trotzdem.

Als nächstes folgt das Setup. Glücklicherweise gibt es auch hier ein Tutorial. Ich wähle das Standard-Setup. Das war bisher alles ziemlich einfach.

Viel mehr ändere ich an der Konfiguration nicht. Allerdings weiß ich ja bereits, dass ich als nächstes die Projekte Temperatur und Licht angehen möchte, also installiere ich die Bindungs für Homematic IP (binding-homematic – 2.5.3) und Philips Hue (binding-hue – 2.5.3). Und das Network-Binding (binding-network – 2.5.3), das eigentlich als nächstes im Tutorial beschrieben wird. Da war ich wohl zu voreilig.

Tag 2: Mein erstes Binding

Also binde ich ein paar Tage später mein Smartphone per Network-Binding ein. In der Zwischenzeit habe ich den Router gewechselt, und damit auch die SSID. Das war keine besonders gute Idee, denn jetzt muss ich die voreingestellte SSID ändern. Dazu verbinde ich den RasPi per Kabel mit meinem neuen Router, einer Fritz!Box 7590.2Im Mesh-Set mit dem Repeater 1750 für 231,98€ bei Expert gekauft. Dann wähle ich mich per SSH ein, und folge dieser Anleitung und bearbeite folgende Datei: /rootfs/etc/wpa_supplicant/wpa_supplicant.conf. Als Editor benutze ich VIM, das glücklicherweise vorinstalliert ist. Also: sudo vim wpa_supplicant.conf; „i“ drücken, um in den Bearbeitungsmodus zu kommen, entsprechende Zeile bearbeiten, „ESC“ drücken, :wq tippen, „Enter“ drücken.

Das war allerdings nur die Vorarbeit, die ich mir auch hätte sparen können. Eigentlich wollte ich ja mein Smartphone einbinden. Für dieses habe ich in meiner Fritz!Box die feste IP x.x.x.42 vergeben. Also zurück zum Tutorial. Ich installiere das Network-Binding (binding-network – 2.5.3) im Add-on-Menü. Anschließend suche ich in der Inbox für das Network-Binding neue Things, und dort wird die IP-Adresse meines Smartphones gefunden. Anklicken, Name „Telefon-Andi“ vergeben, fertig. Wie in der Anleitung empfohlen, aktivierte ich danach in der Konfiguration den Simple Mode für das Item Linking.

Es folgt die Navigation zu Configuration > Things. Yeah, mein Smartphone ist online. Durch Anklicken erfahre ich, dass drei Channels verfügbar sind: Online, Latency und Last Seen. Ich aktiviere alle drei durch jeweiliges Klicken auf den Radio-Button, und nun folgt ein Dialog, das in der Anleitung nicht beschrieben wird. Ich werde nach einer Konfiguration gefragt. Ich stelle oben Standard ein, und unten wähle ich Create new item. Es öffnet sich ein weiterer Dialog, der einige Standard-Parameter vorschlägt, die ich so übernehme, indem ich rechts unten auf Link klicke. Die abschließende Navigation zu Control zeigt mir nun genau diese drei Channels, gruppiert unter „Telefon-Andi“. Das sieht sehr gut aus. Mit diesem Erfolg beende ich die Sitzung.

Digitalisierung

openHAB I: Heimautomatisierung mit openHAB

Veröffentlicht am
This entry is part 1 of 5 in the series openHAB
Geschätzte Lesezeit: 8 Minuten.

Heimautomatisierung, bzw. Smart Home, ist ein Projekt, das ich im Rahmen meines Umzuges in ein Haus angehen möchte. Dazu nutze ich diesen Blog, um Ideen zu sammeln, und Umsetzungen zu dokumentieren. Dieser Eintrag stellt eine Übersicht der einzelnen Projekte dar, und eine generelle Einführung in das Thema.

Warum Heimautomatisierung?

Smart Home, da kann man sein Haus mit dem Handy steuern. Das ist doch toll, oder?

Ja, aber es ist nicht der Grund, warum ich Heimautomatisierung als Projekt angehe. Vielmehr möchte ich, dass ich das Haus nicht steuern muss, sondern dass sich das Haus selbst steuert. Dass das Haus weiß, was ich möchte.

Natürlich möchte ich mein Heim auch automatisieren, weil es geht. Weil ich es kann (bzw. können möchte).

Warum openHAB?

Ich möchte ein flexibles System, das mich nicht an einen Hersteller und dessen Ökosystem kettet, sondern das es ermöglicht, die besten Teile der verschiedenen Hersteller miteinander in Interaktion zu bewegen. Außerdem möchte ich nicht, dass meine Daten in irgendeine Cloud geschickt werden, weil mein Smart Home der Meinung ist, es müsse ständig nach Hause telefonieren. Und ein Fan freier Software bin ich sowieso.

Damit bleiben nicht wahnsinnig viele Systeme übrig. openHAB ist eines der bekanntesten Open-Source-Systeme. FHEM hat viele Fans, und ich habe auch eine Weile überlegt, ob ich nicht FHEM nutzen möchte. Ich kann keine belastbaren Argumente nennen, warum das eine oder das andere System besser sei. Den Ausschlag pro openHAB haben zwei Dinge geliefert: Erstens unterstützt openHAB Homematic IP,1Mit Homematic IP will ich einige Projekte realisieren, vor allem die Heizungssteuerung. FHEM (noch) nicht. Zweitens wurde mir openHAB von zwei Personen empfohlen. Von jemand anderem wurde mir Home Assistant empfohlen, aber zu diesem Zeitpunkt wollte ich kein drittes System mehr in meine Entscheidungsfindung aufnehmen.

Grundsystem

Ich habe seit einiger Zeit einen Raspberry Pi 4B in der 4GB-Variante2Ich habe ein Kit von LABISTS auf amazon.de für 87,99€ gekauft. herumliegen. Da ist ja klar, dass ich diesen auch als Smart-Home-Zentrale einsetze. Auf diesen installierte ich openHABian, in der aktuellsten Version. Dies ist derzeit openHAB 2.5.3.

Über meine erste Schritte mit openHAB (Installation, Grundkonfiguration, erstes Binding) berichtet der folgende Artikel.

openHAB II: Grundkonfiguration

Projekt: Fritz!Box einbinden

Ich habe eine Fritz!Box 7590.3Im Mesh-Set mit dem Repeater 1750 für 231,98€ bei Expert gekauft. Diese kann man auch einbinden. So kann z.B. im Falle eines Anrufes automatisch das Fernsehprogramm pausiert oder stummgeschaltet werden. Das hätte ich gerne.

Tatsächlich ist die Einbindung der Fritz!Box das erste Projekt, das ich realisiere. Dies liegt unter anderem daran, dass für die anderen Projekte noch nicht alle Teile geliefert wurden. Demzufolge sind die Anfänge relativ holprig, da ich zum Beispiel erstmalig eine Sitemap anlege. Nichtsdestotrotz habe ich die Konfiguration und die Schritte in einem separaten Artikel hinterlegt.

openHAB III: Fritz!Box-Einbindung

Projekt: Temperatur, Heizung und Raumklima

Das zweite echte Projekt, das ich angehen werde, ist die Kontrolle von Temperatur und Raumklima, verbunden mit einer Heizungssteuerung. Dieses Projekt ist vermutlich der Klassiker der Heimautomatisierung.

Ich habe mich für das System Homematic IP entschieden. Ich beginne mit der Messung der Temperatur und der Luftfeuchtigkeit. Dazu bestellte ich mir vier HmIP-WTH-2,4Alle bei elektroprofi.com für 39,99€ pro Stück. um zu lernen, wie diese eingebunden werden. Diese werde ich im Haus an relevanten Stellen positionieren: Im Schlafzimmer, im Kellerraum mit dem Feuchtigkeitsproblem, und an zwei weiteren noch zu identifizierenden Stellen. Im nächsten Schritt folgen weitere Temperatursensoren, und die Heizkörperthermostate, die damit gesteuert werden sollen. Ich werde in einigen Räumen ohne Heizkörper (z.B. unter dem Dach) nur Sensoren ohne Steuerungsmöglichkeit anbringen. Und ich möchte auch gerne die Außentemperatur und -luftfeuchtigkeit messen. Wie das geht, muss ich mich noch informieren.

Ach, und dann gibt es ja noch Sensoren, die erkennen, ob die Fenster geöffnet oder geschlossen sind. Das wäre praktisch, um die Heizung zu steuern. Und wenn das System erkennt, ob ich an- oder abwesend bin, könnte man sicher Heizkosten sparen. Das Projekt scheint recht groß zu werden, daher lagere ich alle Details in einen separaten Artikel aus:

openHAB IV: Temperatur, Heizung und Raumklima mit Homematic IP

Abfallkalender

Mein Haus kann mich erinnern, wann ich Mülltonnen herausrollen soll. Das klingt doch super, das will ich haben. Leider stellt sich dies als ganz schön kompliziert an, doch ich scheine es per CalDAV-Einbindung hinbekommen zu haben. Jeder, der sich schon einmal an einer CalDAV-Einbindung versucht hat, hat vermutlich gerade nervöse Zuckungen bekommen. Warum das eine ziemliche Frickelei ist, erkläre ich ausführlich hier:

openHAB V: Müllkalender per ical einbinden

Projekt: Licht

Wenig überraschend: Ich möchte das Licht im Haus steuern. Dabei geht es mir weniger um eine Simulation von Anwesenheit. Viel lieber möchte ich, dass die Helligkeit des Tageslichtes erkannt wird und die Lampen automatisch so hell gedreht werden, dass die Helligkeit im Raum konstant ist.

Das Ganze wird mit Philips Hue laufen. Dazu habe ich mir schonmal die zentrale Hue Bridge5Im Set mit zwei E27-LEDs bei amazon.de für 95,76€. und vier E27-LEDs6Zweimal amazon.de für je 39,99€, die anderen beiden wurden im Set mit der Bridge gekauft. bestellt. Die LEDs können kalt- und warmweiß sowie 16 Millionen Farben darstellen. Ich bin gespannt, was man damit für lustige Beleuchtungsszenarien erstellen kann. Und einen Pillar-Spot habe ich auch bestellt.7amazon.de; 48,99€. Tja, und dann gab es da noch die GU10-LEDs im Angebot, also habe ich auch davon noch zwölf bestellt.8proshop.de; 29,83€ pro Stück. Die möchte ich in den Pillar-Spot und in bereits vorhandene Lampen einbauen.

Weitere Projektideen

  • Rollladen: Rollladensteuerung ist ein Klassiker der Heimautomatisierung. Ich möchte gerne in Abhängigkeit von Sonnenauf- und Untergang sowie in Abhängigkeit von An- und Abwesenheit die Rollläden hoch- und herunterfahren lassen. Vermutlich werde ich dies mit Homematic IP umsetzen.
  • Rauchmelder: Es gibt Rauchmelder von Homematic IP. Also möchte ich die auch haben und in mein System einbauen.
  • Alarmanlage: Es gibt eine Alarmanlage von Homematic IP. Also möchte ich die auch haben und in mein System einbauen.
  • Grill: Temperatursteuerung ist für den ambitionierten Griller ein zentrales Thema. Ich möchte gerne die Temperatur des Garraumes und die Kerntemperatur des Grillguts kontrollieren können. Es gibt auf dem Markt einige Funkthermometer, da muss es doch möglich sein, dies zu koppeln. Vielleicht kann ich dies mit den farbigen LEDs kombinieren, um eine Blau-grün-rot-Temperaturanzeige zu basteln.
  • Gartenbewässerung: Eine automatische Gartenbewässerung, gekoppelt mit Wetterdaten, An- und Abwesenheit, Jahreszeit, Sonnenstand, und so weiter. Das wäre doch klasse. Das will ich haben.
  • Garagentor: Für das Garagentor hätte ich gerne einen Sensor, der mir anzeigt, ob das Tor offen oder geschlossen ist. Und vielleicht auch eine Steuerung des Tores, da es derzeit schon per Funk gesteuert werden kann. Vielleicht kann man das integrieren.
Allgemein

Warum du keine Gesundheitstipps von Donald Trump befolgen solltest

Veröffentlicht am
Geschätzte Lesezeit: 3 Minuten.

Ich gebe zu, dass der Titel ungewohnt reißerisch ist. Nichtsdestotrotz folgt hier eine Luste von Gründen, warum du keine Gesundheitstipps von Donald Trump, derzeitiger Präsident der USA, annehmen und befolgen solltest.

  1. Trump glaubt, Sport sei tödlich. Der menschliche Körper habe eine begrenzte Menge Energie, so wie eine Batterie. Wäre diese leer, sterbe man. Sport führe zu erhöhten Energieverbrauch, und daher sterbe man früher.1Donald Trump thinks exercise will kill you, Vox, 2017-05-09.
  2. Trump war überzeugter Impfgegner. Er glaubte, Ärzte würden Kinder mit Impfstoffen vollpumpen, die Autismus erzeugen würden.2Healthy young child goes to doctor, gets pumped with massive shot of many vaccines, doesn’t feel good and changes – AUTISM. Many such cases!, Twitter, Donald J. Trump, 2014-05-28.
  3. Trump glaubt, die Geräusche von Windturbinen würden Krebs erzeugen.3Trump claims wind turbine ’noise causes cancer‘, The Hill, 2019-03-04.
  4. Trump machte sich über Verletzungen von Profisportlern lustig. Bei einer Wahlkampfveranstaltung sagte er über den Umgang der NFL mit Gehirnerschütterungen: „Oh nein, ich habe eine kleine Beule am Kopf. Ich falle den Rest der Saison aus.“4Video: Donald Trump mocks NFL’s handling of brain injuries, Sports Illustrated, 2016-10-12.
  5. Trump glaubt nicht, dass Asbest gesundheitsschädlich sei. Stattdessen sei es eine Verschwörung der Mafia, die Geld mit Asbest-Entsorgung verdienen würde.5DONALD TRUMP CALLED ASBESTOS POISONING A MOB-LED CONSPIRACY, NOW HIS EPA WON’T EVALUATE ASBESTOS ALREADY IN HOMES, Newsweek, 2018-06-07.
  6. Bei einer Pressekonferenz behauptete Trump fälschlicherweise, dass die Arzneimittelbehörde der Vereinigten Staaten, FDA, das Malariamedikament Chloroquin für die Behandlung von COVID-19 zugelassen habe.6AP FACT CHECK: Trump falsely claims drug approval for virus, Associated Press, 2020-03-19. In der Folge starb ein Mann aus den USA, der das Fischtankreinigungsmittel Chloroquin-Phosphat einnahm.7Chloroquine Phosphate Intended for Fish: FDA Letter to Stakeholders – Do Not Use as Treatment for COVID-19 in Humans, FDA.
  7. Trump bezweifelt, dass irgendjemand wüsste, worum es sich bei SARS-CoV-2, dem Erreger von COVID-19, handele.8Trump on Coronavirus: „I’m Not Sure Anybody Even Knows What It Is“; „You Can Call It A Germ, You Can Call It A Flu“, RealClear Politics, 2020-03-27. Am Tag dieser Aussage gab es in den USA erstmals mehr Infizierte an COVID-19 als in China.9US coronavirus cases reach more than 101,000 as reported deaths hit new daily high, CNN, 2019-03-27.

Bitte sei vorsichtig, und höre auf die Empfehlungen der renommierten Experten und Wissenschaftler. Halte Abstand,10So verbreitet sich ein Virus, Der Spiegel, 2020-03-20., fass dein Gesicht nicht an,11How to avoid touching your face so much, BBC, 2020-03-18. und wasche deine Hände ordentlich.12Clean hands protect against infection, WHO.

Beratung

Führung und Einfluss IV: Beziehungen

Veröffentlicht am
This entry is part 4 of 4 in the series Führung und Einfluss
Geschätzte Lesezeit: 10 Minuten.

Um Einfluss zu besitzen, ist es nötig, Beziehungen und persönliche Netze aufzubauen. Beziehungen sind kompliziert, daher wird in diesem Teil ein Modell beschrieben, wie Beziehungen systematisch betrachtet werden können. Dabei geht es um Beziehungen zu einer anderen Person.

Dieser Artikel ist der vierte Teil einer Serie zu Führung und Einfluss, zum ersten Teil geht es hier.

Die Herausforderung von Microsoft

Erneut wird mit einem Beispiel begonnen. Diesmal stammt es von Microsoft, und anhand dieses Beispiels werden Konzepte Emotionale Intelligenz und das Aufbauen von Vertrauen diskutiert.

Microsoft bot einen neuen Chatbot auf Twitter an (und auf anderen Plattformen, aber Twitter war die entscheidene Plattform). Microsoft wollte lernen, wie Nutzer mit dem Internet interagieren. Der Chatbot sollte ein 14-jähriges Mädchen imitieren (warum auch immer…). Innerhalb von 24 Stunden war es Trollen gelungen, dass der Chatbot rassistische, antisemitische und sexuell anzügliche Kommentare postete. Natürlich war in den USA der Teil mit den sexuell anzüglichen Kommentaren besonders schlimm.

Die künstliche Intelligenz des Chatbots hatte funktioniert. Der Bot hatte erfolgreich gelernt, wie auf Twitter kommuniziert wird – oder zumindest hatte er gelernt, sich so zu verhalten, wie ihm vorgegaukelt wurde. Trotzdem wurde das Experiment als Fehler, als Desaster für Microsoft angesehen, da ein Chatbot nicht rassistisch, antisemitisch, sexistisch werden soll.

Die Entwickler, die technisch eigentlich alles richtig gemacht hatten, mussten jetzt mit dem Scheitern umgehen. Wie reagiert eine Führungskraft auf eine solche emotionale Reaktion?

Emotionale Intelligenz

Wie so oft gibt es nicht die eine Taktik, die man immer verwenden kann. Stattdessen müssen die vier Teile emotionaler Intelligenz diskutiert werden, mit denen Beziehungen zu anderen aufgebaut, erhalten und verbessert werden können.

Dass Emotionen grundsätzlich eine Rolle spielen, wird vermutlich niemand bestreiten. Auch deine Emotionen beeinflussen dich bei deiner Arbeit. Sich dessen bewusst zu werden ist wichtig, denn der erste Teil der emotionalen Intelligenz ist, zu erkennen, in welchem emotionalen Zustand du dich befindest. Es geht also um das Bewusstmachen von Emotionen bei dir. Damit verbunden ist auch deine Reaktion auf verschiedene Ereignisse, die abhängig vom emotionalen Zustand möglicherweise unterschiedlich ist.

Der zweite Teil ist im Prinzip das Gleiche, nur bei anderen Personen. Es geht also darum zu erkennen, in welchem emotionalen Zustand sich andere befinden, und wie diese Emotionen mit Reaktionen auf Ereignisse zusammenhängen.

Der dritte Teil ist die Regulierung deiner Emotionen. Das bedeutet, dass du die emotionale Reaktion stärker oder weniger stark nutzen kannst, um in einer Situation ein Ziel zu erreichen. Hierbei geht es nicht um Steuerung der Emotionen, du sollst die Emotion Wut also nicht einfach in die Emotion Freunde umwandeln können. Es geht nur darum, die Emotion Wut stärker oder weniger stark in deine Entscheidung einfließen zu lassen. Und natürlich analog alle anderen Emotionen.

Der vierte Teil ist wieder das Gleiche bei anderen Personen. Es geht darum, die Emotionen anderer Personen zu verstärken oder abzuschwächen, um ein Ziel zu erreichen.

Emotionale Intelligenz ist also die Fähigkeit, bei sich und anderen Emotionen zu erkennen und zu justieren, um sich in jeder Situation zielorientiert zu verhalten. Grundsätzlich hat dies viele Vorteile: Menschen mit hoher emotionaler Intelligenz gelten als bessere Teammitglieder, positive Emotionen erhöhen die Motivation, Lernbereitschaft und letztlich die Effektivität der Organisation.

Glücklicherweise kann man emotionale Intelligenz üben. Da dies höchst individuell ist, werde ich dafür keine Technik beschreiben, sondern empfehle, an entsprechenden Weiterbildungen und Trainings teilzunehmen.

Die Reaktion der Führungskräfte von Microsoft

Kommen wir zurück zu dem Chatbot, der übrigens tay.ai heißt. Wie reagierten die Führungskräfte von Microsoft? Satya Nardellu, CEO von Microsoft, schrieb eine E-Mail: “Keep pushing, and know that I am with you … (The) key is to keep learning and improving.”

Er stärkte ihnen den Rücken.

Andere Führungskräfte erinnerten an den Erfolg des Chatbots Xiaolce, der in China aktiv war. So wurde dieses Scheitern als Möglichkeit des Lernens umdefiniert. So zeigte Microsoft, dass verstanden wurde, wie emotional diese Erfahrung für das Team sein musste. Diese waren mit dem Ergebnis des Chatbots vermutlich nicht glücklich, sondern empfanden Angst, Wut, Scham, vielleicht waren sie sogar von den Fähigkeiten der Trolle fasziniert.

Die Führungskräfte kommunizierten aber nichts zu den technischen Details, sondern kommunizierten zuerst über Emotionen, indem sie ihre Unterstützung formulierten. Sie führten mit Wärme und Vertrauen.

Führung mit Wärme und Vertrauen führt zu Vertrauen. Vertrauen führt zu Offenheit, Informationsaustausch, und Zusammenarbeit. Das klingt viel zu gut, um wahr zu sein, aber es stimmt tatsächlich. Und es ist auf dem Papier ganz leicht zu erreichen. Man muss nur den richtigen Ton treffen, die Gefühle anderer Menschen ernst nehmen, sie unterstützen und verteidigen, und auch mal lächeln.

In der Theorie ist das alles ganz einfach. In der Praxis des Chatbots bedeutete dies, sich vor das Team zu stellen um ihnen Zeit zu geben, die Probleme zu beheben. Druck oder Angst im Team hätte dagegen die Kreativität blockiert.

Das persönliche Netzwerk

Wärme erzeugt also Vertrauen. Dies kann genutzt werden, um ein persönliches Netzwerk aufzubauen. Das wird auch Netzwerken genannt.

Ja, Netzwerken ist eines dieser Worte, die immer mal wieder durch das Dorf getrieben werden. Normalerweise wird hier an Events gedacht, an Hinterzimmer, an Konferenzen, an alles Mögliche. Gemeint ist jetzt aber die Auseinandersetzung mit dem persönlichen Netzwerk, und die Identifizierung von Stellen, an denen gearbeitet werden kann.

Vermutlich hast du bereits ein Netzwerk in deinem Unternehmen. Es schadet nicht, darüber kritisch zu reflektieren, und das Netzwerk als Schaubild aufzumalen. Dabei stellen Punkte die Personen dar, und Verbindungen sind die Beziehungen zu diesen Personen. Die meisten der Verbindungen an einem Arbeitsplatz entstehen normalerweise im ersten Arbeitsjahr.

Die Verbindungen, also die Beziehungen, bestehen aus drei Komponenten. Es gibt Erwartungen, Vertrauen, und Einfluss. Alle drei Aspekte können in beide Richtungen stattfinden, also sowohl von dir zu jemand anderem, als auch anders herum. Diese Aspekte beeinflussen jede der Beziehungen, die du aufgemalt hast, und können jeweils genutzt werden, um solche Beziehungen zu stärken.

Beginnen wir mit dem Vertrauen. Das geht über Wärme, das wurde schon diskutiert. Eine andere Möglichkeit ist, sich verletzlich zu zeigen, eine Schwachstelle zu zeigen, sich zu öffnen. Zeigen, dass man auch nur ein Mensch ist, kann das Vertrauen erhöhen.

Erwartungen sind ein interessantes Thema. Möglicherweise stellst du fest, dass du keine Erwartungen mit jemandem in deinem Netzwerk teilst. Vielleicht bemerkst du, dass die Erwartungen des anderen höher sind als du dachtest, und deshalb mehr Zeit und Energie beisteuern musst. Wenn deine Erwartungen zu hoch sind, ist der Andere möglicherweise viel zu beschäftigt, um deine Bedürfnisse zu erfüllen. Ein Missverhältnis der Erwartungen führt zu Enttäuschung. Der beste Weg, um diese Situation zu beheben oder zu vermeiden, ist ein Gespräch, um Bedürfnisse zu kalibrieren, und um zu klären, was ihr einander bieten könnt.

Was ist, wenn eine Beziehung keinen gegenseitigen Einfluss hat? Wie mit dieser Situation umzugehen ist, hängt davon ab, wer wen beeinflussen kann. Nehmen wir als Beispiel den Praktikanten in einem Unternehmen. Der Vorgesetzte der Abteilung trifft die endgültige Entscheidung, ob der Praktikant übernommen werden soll. Abgesehen vom Arbeitsprodukt oder dem unmittelbaren Vorgesetzten, der ein gutes Wort abgibt, hat der Praktikant keinen Einfluss auf den Abteilungsleiter. Die einzige Möglichkeit wäre also herauszufinden, auf welche Art von Taktik oder Machtbasis diese bestimmte Person zu reagieren scheint und sich entsprechend zu verhalten. Darüber hinaus könnte der Praktikant daran arbeiten, eine enge Beziehung zum direkten Vorgesetzten aufzubauen, damit seine Arbeit vom Abteilungsvorgesetzten positiv wahrgenommen wird.

Das Gegenbeispiel wäre ein Linienmanager, der überlegt, wie er mit seinen Mitarbeitern interagieren soll. Hier gibt es die klassische Einbahnstraßenkommunikation, bei der den Mitarbeitern nur der Zeitplan und die zu erledigenden Aufgaben mitgeteilt wird. Daraus folgt oft mangelndes Engagement der Teammitglieder und so weiter. Es schadet nicht, das Verhalten anpassen, um dem Team mehr Raum zu geben, um deren Meinungen auszudrücken. Außerdem sollte überlegt werden, persönliche Machtbasen anstelle der Positionskraft einzusetzen. Der Linienmanager sollte bewerten, wie er die sozialen und Beziehungsmanagement-Komponenten der emotionalen Intelligenz verbessern könnte.

Zusammenfassung

Emotionale Intelligenz ist wichtig. Besonders in der Kommunikation darf nicht vergessen werden, dass alle Menschen auch Emotionen besitzen, und nicht nur rein sachlich diskutieren können. Jede Kommunikation führt zum Aufbau oder der Bestätigung von Beziehungen, daher sollten diese Beziehungen regelmäßig reflektiert werden. Bei dieser Reflektion sollten die Kernkomponenten Vertrauen, Einfluss und Erwartungen berücksichtigt werden.

Abschließend folgt ein weiterführender Link: When stretch assignments backfire.

Agilität

Systemdenken V: Am System arbeiten, nicht im System arbeiten

Veröffentlicht am
This entry is part 5 of 5 in the series Systemdenken
Geschätzte Lesezeit: 12 Minuten.

Wenn ich fragen würde, wer den größten Einfluss auf die Sicherheit und den Komfort deines Fluges bei einer kommerziellen Fluggesellschaft hat, was würdest du sagen? Du könnten antworten, dass es die Piloten sind; schließlich sind sie diejenigen, die die Starts und Landungen übernehmen und direkt kontrollieren, wie das Flugzeug unter verschiedenen Umständen abläuft. Andererseits könntest du antworten, dass es die Flugbegleiter sind, da sie während des Fluges mehr Kontakt mit dir haben. Aber wenn du wirklich darüber nachdenkst, möchtest du vielleicht die Konstrukteure des Flugzeugs nennen, da sie die Systeme und Strukturen des Flugzeugs einsetzen. (Jetzt weißt du, bei wem du dich über die Handgepäckbeschränkungen beschweren musst!) Während Piloten und Flugbegleiter im System arbeiten, arbeiten die Flugzeugdesigner am System – und haben daher den größten Einfluss auf deine Flugerfahrung.

Diese Idee – an dem System im Gegensatz zu in dem System zu arbeiten – ist eine wichtige Lektion über Systeme, die du aus dieser Serie mitnehmen solltest. Wie können wir bessere Systemdesigner werden als bloße Betreiber? Die in dieser Serie vorgestellten Konzepte und Werkzeuge sind ein guter Anfang. Es wurde beschrieben, was Systeme sind, wie sie die Muster und Ereignisse erzeugen, die wir um uns herum sehen, und wie sie sich verhalten. Es wurde auch gezeigt, wie die Welt in Form von miteinander verbundenen Verstärkungs- und Ausgleichschleifen mit Verzögerungen beschrieben werden kann. Schließlich haben wir gesehen, wie kausale Schleifendiagramme ein leistungsfähiges Werkzeug sein können, um unser Verständnis von systemischem Verhalten darzustellen und Einblicke in die Wege der Veränderung zu erhalten.

All diese Dinge können uns dabei helfen, die ersten Schritte auf dem Weg zum wahren Denker zu machen. Ich hoffe, dass diese einführende Serie dir eine wertvolle Grundlage gegeben hat – eine, die dich dazu ermutigen wird, diese mächtigen Perspektiven und Werkzeuge zu nutzen, um deine Zukunft auf neue Weise zu gestalten.

Abschließend folgen drei weitere kleine Kapitel, die nicht in den logischen Fluss der Serie gepasst haben. Du kannst sie als Anmerkungen betrachten, oder als wichtige Ergänzungen, oder sie einfach ignorieren.

Handeln in verschiedenen Modi

Wie wir zuvor in dieser Serie gesehen haben, sind Ereignisse sehr interessant, da sie häufig eine sofortige Reaktion erfordern. Wenn beispielsweise ein Haus brennt, reagieren wir, indem wir sofort versuchen, das Feuer zu löschen. Das Löschen des Feuers ist eine angemessene Maßnahme, aber wenn wir nur das getan hätten, wäre dies aus systemischer Sicht unzureichend. Warum? Denn es hat das unmittelbare Problem (das brennende Haus) gelöst, aber es hat nichts an den grundlegenden Strukturen geändert, die dieses Ereignis verursacht haben (unzureichende Bauvorschriften, fehlende Brandmelder, mangelnde Brandschutzausbildung usw.). Es hat sich auch nicht mit den mentalen Modellen und Visionen befasst, die die problematischen systemischen Strukturen erzeugt haben.

Der Rahmen der Ebenen kann uns helfen, über die Reaktion auf Ereignisse hinaus zu gehen und nach Maßnahmen mit höherer Hebelwirkung zu suchen. Das heißt, wir können anfangen, von der Arbeit im System zur Arbeit am System zu wechseln.

Wie hilft uns der Ebenen-Rahmen, Maßnahmen mit höherer Hebelwirkung zu ergreifen? Jede Ebene fordert eine unverwechselbare Handlungsweise. Um das zu veranschaulichen, wollen wir unser Beispiel einer Fertigungsstätte, in der defekte Teile hergestellt werden, nochmals betrachten und einen genaueren Blick darauf werfen, wie wir das Problem von den verschiedenen Perspektiven aus angehen würden.

Ereignisse – reagieren

Immer wenn wir auf ein defektes Teil stoßen, sortieren wir es aus und überarbeiten es oder legen es in den Schrottplatz. Wir können versuchen, die Situation zu korrigieren, indem wir die Maschine einstellen oder genauer untersuchen, aber unsere Hauptwirkungsweise ist reaktiv. Obwohl wir dazu neigen, reaktive Handlungen in einem negativen Licht zu sehen, können sie für unser individuelles und organisatorisches Überleben immer noch von entscheidender Bedeutung sein (denke an das brennende Haus). Sie sind jedoch nicht ausreichend, um langfristig gesund zu bleiben.

Muster – anpassen

Betrachten wir das Problem über einen bestimmten Zeitraum (z. B. die Rate, mit der wir Teile aussortieren), stellen wir möglicherweise ein Muster fest, wie zum Beispiel höhere Ausschussraten zu bestimmten Tageszeiten. Insbesondere könnten wir bei Schichtwechseln höhere Ausschussraten feststellen. Wir können dann unsere Prozesse anpassen, um das derzeitige System bestmöglich zu nutzen. In diesem Fall akzeptieren wir einfach die Tatsache, dass es während des Schichtwechsels höhere Ausschussraten gibt. Wir versuchen nicht, das Muster zu ändern. Stattdessen passen wir uns einfach an. Wir können uns bewusst auf diese adaptiven Maßnahmen einlassen. Sie können jedoch auch unsichtbar und unbewusst auftreten, wenn wir mit dem anhaltenden Druck der Situation zu kämpfen haben. Mit anderen Worten: Niemand behauptet, dass die Qualität um 20 Prozent sinken wird, aber genau das kann passieren, wenn wir das Problem nicht aus einer Perspektive mit höherem Hebel ansprechen.

Systemische Strukturen – kreativ sein

Wie wir bereits gesehen haben, erzeugen systemische Strukturen die Muster und Ereignisse, die unsere tägliche Realität ausmachen. Sie sind auch die Mechanismen, durch die mentale Modelle und Visionen in die Tat umgesetzt werden. Durch das Erstellen neuer systemischer Strukturen (entweder durch Neugestaltung bestehender oder durch Erstellen neuer) können wir die Ereignisse und Muster ändern, die wir erhalten. Wir verändern das System, anstatt es einfach anzupassen oder darauf zu reagieren. Dies ist die Ebene, auf der viele Änderungsbemühungen ablaufen (Reorganisationen, Prozessneugestaltung, Reengineering, Vergütungspläne usw.). In unserem Beispiel für fehlerhafte Teile könnten wir das System ändern, indem wir eine Überlappung der ausgehenden und ankommenden Fließbandbesatzungen schaffen, und so das Problem der mangelhaften Übergabe während des Schichtwechsels beseitigen.

Mentale Modelle – reflektieren

Die Veränderung systemischer Strukturen erfordert oft eine Änderung unserer mentalen Vorstellungen davon, was diese Strukturen sein können oder sollen. Wenn wir in dem Beispiel wirklich glauben, dass jede Fließbandschicht nur für die Qualität ihrer Produkte verantwortlich ist, können wir uns niemals eine andere Struktur vorstellen, wie etwa sich überschneidende Crews, die jeweils für mehr verantwortlich sind als nur ihre eigenen Schichten. Maßnahmen auf der Ebene von Denkmodellen sind reflektierend, da wir die Fähigkeit entwickeln müssen, unsere eigenen Annahmen über die Funktionsweise der Welt und das Wichtigste an die Oberfläche zu bringen, auszusetzen und zu hinterfragen. Diese Fähigkeit beinhaltet auch die Einladung anderer, dieselbe Reflektion mit ihren Denkmodellen zu machen. (Beachte jedoch, dass reflektierende Handlungen nicht den Versuch beinhalten, die mentalen Modelle eines anderen zu ändern – das wäre einfach eine weitere reaktive Handlung. Änderungen in unseren und den mentalen Modellen von anderen stammen von echter Reflektion und Klarheit der Vision, nicht von Gewalt.)

Vision – erschaffen

Das Auftauchen, Nachdenken und Ändern unserer Denkmodelle ist oft ein schwieriger und schmerzlicher Prozess, da diese Denkmodelle durch jahrelange Erfahrung fest verankert sind. Warum würden wir uns entscheiden, uns durch das Unbehagen zu bringen, sie zu verändern? Weil wir eine überzeugende Vision von einer neuen und anderen Welt haben, zu deren Schaffung wir uns verpflichtet haben. Auf der Sichtebene können unsere Handlungen generativ sein und etwas ins Leben rufen, das vorher nicht existiert hat. Zum Beispiel kann eine Vision, zu jeder Zeit die hochwertigsten Produkte durch die Zusammenarbeit der Fließbandbesatzungen bereitzustellen, den Anstoß geben, unsere alten Denkmodelle erneut zu untersuchen, wonach jede Besatzung nur für ihre eigene Arbeit verantwortlich ist.

Hier ist eine weitere wichtige Sache zu beachten, die sich auf die Ebenen bezieht: Unsere Fähigkeit, die Zukunft zu beeinflussen, nimmt zu, wenn wir uns von der Ebene der Ereignisse zu der der Vision bewegen. Wenn wir diese Ebenen nach oben verschieben, verlagert sich unser Fokus von der Gegenwart in die Zukunft. Folglich haben die Maßnahmen, die wir auf den höheren Ebenen ergreifen, mehr Einfluss auf die zukünftigen Ergebnisse als auf die aktuellen Ereignisse.

Bedeutet dies, dass Aktionen mit hohem Hebeleffekt nur auf den höheren Ebenen zu finden sind? Nein – denn Hebelkraft ist ein relatives Konzept und kein absolutes. Wenn Sie sich beispielsweise vor einem außer Kontrolle geratenen Bus befinden, ist dies wahrscheinlich nicht die beste Zeit, um darüber nachzudenken, wie Sie in diese Situation geraten sind (weil Sie nicht lange nachdenken werden!). In diesem Fall besteht die hohe Hebelwirkung darin, schnell zu reagieren und aus dem Weg zu springen; Jede andere Handlung wäre unangemessen. Auf jeder Ebene gibt es einen Hebel, und die Herausforderung besteht darin, zu lernen, wann und wie für jede Ebene die geeigneten Maßnahmen zu ergreifen sind.

Lager- und Ratendiagramm

Neben kausalen Schleifendiagrammen gibt es einen anderen Weg, um unser Verständnis der systemischen Struktur darzustellen. Es wird Lager- und Ratendiagramm genannt (englisch: Stocks and flow diagram).

Um eines dieser Diagramme zu erstellen oder zu lesen, musst du zunächst wissen, was Lager und Raten sind. Lager (auch Behälter genannt) sind alles, was sich ansammelt und zu einem bestimmten Zeitpunkt gemessen werden kann, wie Einsparungen, Bevölkerungszahl, die Wassermenge in einer Badewanne und so weiter. Raten (oder Flüsse) stellen Dinge dar, die sich im Laufe der Zeit ändern, wie Einlagen auf ein Girokonto, die Inflationsrate usw.

Im Gegensatz zu Kausalschleifen liefern Lager- und Ratendiagramme Informationen über die Änderungsraten. Zusammen mit Kausalschleifen zeigen sie, wie sich die verschiedenen Bestände und Flüsse im System gegenseitig beeinflussen und wie das Feedback durch das System fließt.

Diese Diagramme werden auch zum Erstellen von Computersimulationsmodellen verwendet. Der Modellersteller weist den Lagern Anfangswerte zu (z. B. „Einsparungen entspricht 2.000 US-Dollar zum Zeitpunkt Null“) und Größen für die Raten (beispielsweise „Einsparungen von 20 US-Dollar pro Monat“).

Das folgende Diagramm zeigt die verschiedenen Teile eines Lager- und Ratendiagramms.

Alles klar? Nein? Okay, hier ist das gleiche Diagramm, ergänzt um Erklärungen:

Wann soll ich Diagramme zeichnen?

Systemdenker arbeiten von einer zentralen Prämisse aus: Wenn du nicht weißt, wie du bestimmte Ergebnisse erzielst, wirst du große Schwierigkeiten haben herauszufinden, wie du bessere Ergebnisse erzielst! Klingt offensichtlich? Nun, da soziale Systeme so komplex sind, ist dies nicht so leicht zu verstehen, wie es scheint. Trotzdem neigen wir dazu, unsere Organisationen so zu betreiben, als ob wir wirklich wüssten, welche Konsequenzen unsere Handlungen haben werden. Schlimmer noch, oft handeln wir ohne ein Diagramm, das uns die „Verkabelung“ unseres Systems und die richtigen Werkzeuge zeigt, mit denen es möglich wäre, eine erfolgreiche Veränderung durchzuführen.

Ein Diagramm der Verstärkungs- und Ausgleichsprozesse in dem System, an dem wir interessiert sind, kann ein hervorragender erster Schritt sein, um herauszufinden, wie das Feedback Verhalten erzeugt, das wir ändern möchten. Und es kann uns helfen, Probleme zu beheben, bevor tatsächlich Ausfälle auftreten. Kausale Schleifendiagramme zu zeichnen, ist in einer Gruppe besonders leistungsfähig. Durch das Teilen unseres Verständnisses, wie ein System funktionieren könnte, können wir ein umfassenderes Bild der Realität erhalten und so zu viel leistungsfähigeren Aktionsplänen gelangen.

Ganz gleich, ob es sich um unsere Körper, unsere Autos oder unsere Organisationen handelt, eine vorbeugende Wartung ist eine lohnende Investition. In den alten Sprichwörtern steckt viel systemische Wahrheit: Vorsicht ist besser als Nachsicht. Ebenso: Ein Bild sagt mehr als tausend Worte.

Agilität

Systemdenken IV: Zwei Beispiele, Systeme zu managen

Veröffentlicht am
This entry is part 4 of 5 in the series Systemdenken
Geschätzte Lesezeit: 14 Minuten.

Wie bereits erwähnt, sind menschliche Systeme komplex und schwierig zu verwalten. Außerdem neigen sie dazu, sich nicht auf intuitive Weise zu verhalten. (Zum Beispiel tun wir etwas, um ein Problem zu beheben, aber das Problem scheint sich nur zu verschlimmern – und es ist einfach nicht klar, warum.) Ein Verständnis der verschiedenen Ebenen kann helfen, um herauszufinden, wie Systeme konstruiert werden müssen, um die gewünschten Ereignisse zu produzieren. Die Verwendung von Werkzeugen wie Kausal-Schleifen-Diagrammen kann auch ein wirksames Mittel sein, um unser Verständnis der Systeme, an denen wir arbeiten möchten, zu verbessern und dieses Verständnis miteinander zu kommunizieren. Betrachten wir zwei fiktive Beispiele, wie man mit Systemdenken ein komplexes System erfassen und verwalten kann.

Produktqualität bei der Fitnessfirma

Beginnen wir mit einem Blick auf das Innenleben der Fitnessfirma, einem Unternehmen, das Trainingsgeräte herstellt. Die Fitnessfirma hat mit einem Problem zu kämpfen, mit dem viele Unternehmen konfrontiert sind: Produktqualität verwalten. Wir können uns dieses Problem als einfachen Abwägungsprozess vorstellen, der die Wechselbeziehungen zwischen drei gängigen Variablen umfasst: Produktqualität, Kundenbedarf und Produktionsdruck.

Du hast vielleicht bemerkt, dass diese Variablen im Gegensatz zu früheren Ausgleichschleifen, die in dieser Serie beschrieben wurden, keine explizite Lücke enthalten. In jeder Ausgleichschleife gibt es jedoch immer eine Lücke – ob die Lücke explizit erwähnt wird oder nicht. Die Lücke nicht zu erwähnen ist eine Kurzschreibweise. In diesem Beispiel-Diagramm findet sich die Lücke zwischen Produktqualität und gewünschter Produktqualität (nicht gezeigt), welche gemeinsam einen Einfluss auf die Nachfrage haben.

Die einfache Version

Bei Fitnessfirma (wie bei den meisten anderen Fertigungsunternehmen) gilt: Je höher die Produktqualität des Unternehmens, desto mehr Kunden möchten kaufen. Aber die Fitnessfirma ist der Meinung, dass der Nachfrageschub vorübergehend sein könnte, und steigert seine Produktionskapazität nicht, als die Nachfrage steigt. Infolgedessen verspüren die Leute in der Produktionsabteilung einen enormen Druck, um ausreichend Produkte zu produzieren, damit alle Kunden mit ausreichend Trainingsgeräten versorgt werden. Da die hektischen Produktionsmitarbeiter immer mehr Fehler machen und die überlasteten Fertigungsmaschinen des Unternehmens immer häufiger kaputt gehen, leidet die Qualität der Produkte von Fitnessfirma, und die Kunden wandern zur Konkurrenz ab. In dieser Geschichte (wie wir sie bis jetzt nachverfolgt haben) steigen und sinken die Kundennachfrage und die Produktqualität. Wenn wir die beiden Variablen graphisch darstellen würden, würde das Ergebnis so aussehen, als würde man ein stationäres Gleichgewicht beschreiben (die Art, die die meisten ökonomischen Texte als eine genaue Beschreibung der Realität voraussetzen!).

Jetzt Verzögerung hinzufügen

Möglicherweise hast du bemerkt, dass diese Version der Geschichte von Fitnessfirma einen Schlüsselfaktor aufweist: Verzögerung. Aufgrund von Verzögerungen ähnelt die Situation bei Fitnessfirma viel eher einem Zustand eines dynamischen Ungleichgewichts. Die Kundennachfrage sinkt schnell, wenn die Produktqualität der Fitnessfirma nachlässt, weil die Menschen dazu neigen, schnell auf sichtbare Qualitätsverluste zu reagieren – und weil es viele andere Trainingsgerätehersteller gibt, aus denen ein verärgerter Kunde wählen kann. Die Nachfrage steigt jedoch langsamer an, wenn sich die Qualität verbessert, da die Menschen skeptisch gegenüber Qualitätsverbesserungen werden und abwarten wollen, ob sie „echt“ sind.

Die Verzögerung wird üblicherweise durch den Doppelstrich || gekennzeichnet.

Die Investitionsentscheidung

Es gibt noch einen weiteren Aspekt in diesem Bild. Wir wissen, dass Fitnessfirma, wie viele Unternehmen, seine Produktionskapazität angesichts der veränderten Nachfrage nicht konstant hält. Stattdessen wird versucht, die Kapazität so anzupassen, dass die richtige Produktmenge in der gewünschten Qualität produziert wird. Daher müssen wir unserem Schleifendiagramm „Kapazitätsinvestitionen“ hinzufügen.

Dieses Kausale-Schleifen-Diagramm zeigt das Gesamtbild, wenn wir die Auswirkungen von Kapazitätsinvestitionen auf die Struktur des Qualitäts-Nachfrage-Druck-Ausgleichs betrachten. Mit steigender Produktqualität und Kundennachfrage entscheidet das Unternehmen, in Kapazitäten zu investieren. Nach einer gewissen Verzögerung wird die neue Kapazität in Betrieb genommen, wodurch der Produktionsdruck verringert wird, wodurch wiederum die Produktqualität steigt (beachte das „+“). Die Entscheidung zu investieren schafft einen Verstärkungsprozess. (Um zu sehen, wie das funktioniert, verfolge das Diagramm von Link zu Link; Du wirst zwei „+“ zählen).

Wenn Fitnessfirma alle Dynamiken gut beherrscht, sollte die Qualität und die Nachfrage weiter steigen. Dies liegt daran, dass das Unternehmen mit steigender Kundennachfrage die Kapazität erhöht, die Produktion entlastet und dadurch die Produktqualität verbessert, wodurch die Kundennachfrage weiter stimuliert wird (siehe R-Schleife in der Grafik).

Der Teufelskreis

Hier ist ein Schlüsselaspekt, den Sie bezüglich dieser Struktur mit Qualität, Nachfrage und Druck schaffen sollten: Abhängig von den Auswirkungen der Verzögerung kann genau dieselbe Struktur einen Teufelskreis erzeugen.

Das ist das Frustrierende an systemischen Strukturen: Sie unterscheiden nicht zwischen den beiden Arten von Spiralen! Es ist an uns, zu ahnen, welche Art von Spirale in unserer Zukunft lauern könnte – und das System so zu verwalten, dass das „Böse“ unter Kontrolle bleibt.

Um diesen Teufelskreis zu bewältigen, schauen wir uns an, unter welchen Bedingungen er in Bewegung gerät. Dieser Teufelskreis tritt eher auf, wenn die Verzögerung zwischen steigender Kundennachfrage und steigender Produktionskapazität (die R-Schleife) wesentlich länger ist als die Verzögerung bei Produktqualitätsänderungen und Nachfrageverschiebungen (die B-Schleife). Dies kann zu einer Dynamik wie folgt führen:

  1. Angesichts der steigenden Nachfrage hält Fitnessfirma Investitionen in zusätzliche Kapazitäten zurück – vielleicht, weil sie zuvor kurzfristige Nachfragerückgänge gesehen haben und nicht mit überschüssigen Kapazitäten belastet werden wollen.
  2. Der Druck auf die Produktionsmitarbeiter steigt und die Produktqualität beginnt zu rutschen. Trotzdem wirkt sich der Qualitätsabfall noch nicht auf die Nachfrage aus, so dass die Nachfrage weiter steigt.
  3. Wenn Fitnessfirma überzeugt ist, dass der Anstieg der Nachfrage „real“ ist, werden Erweiterungen der Kapazität genehmigt.
  4. Es dauert eine Weile, bis neue Kapazitäten online sind. Wenn die Verzögerung bei der Verfügbarkeit der Kapazität wesentlich länger ist als bei den anderen Verzögerungen, wird der Druck auf die Produktion weiter zunehmen, was zu einer noch niedrigeren Produktqualität und letztendlich zu einer geringeren Kundennachfrage führt.
  5. Wenn die Kundennachfrage nachlässt, versucht Fitnessfirma, die Kapazitätserweiterungen umzukehren. Dies verhindert, dass das Unternehmen die zusätzliche Kapazität erhält, die es eigentlich benötigt. Der Produktionsdruck bleibt hoch und die Produktqualität sinkt weiter. Die Nachfrage sinkt also weiter. Die Manager von Fitnessfirma begrüßen ihr vermeintliches gutes Urteil, wenn sie die Kapazität reduzieren, weil (aus ihrer Sicht) die Kunden wankelmütig waren.
  6. Überzeugt, dass sie mit dem zeitweiligen Charakter von Nachfrageschwankungen Recht hatten, beginnen die Manager von Fitnessfirma mit dem Abbau der Kapazitäten, bevor die Nachfrage abfällt. Jetzt denken sie, dass sie ziemlich brillant sind, weil sie dem Unternehmen so viel Geld gespart haben (auch wenn sie völlig blind sind, wie ihre „klugen“ Aktionen Fitnessfirma aus dem Geschäft treiben könnten).

Die Lektion hier ist, dass wir manchmal Entscheidungen aufgrund eines Glaubens über etwas treffen können, das dann tatsächlich die Dinge verursachen kann, die wir zu verhindern versuchen. Im Fall von Fitnessfirma können Überzeugungen über sinkende Nachfrage tatsächlich dazu führen, dass die Nachfrage sinkt, in einem tragischen Beispiel einer sich selbst erfüllenden Prophezeiung. Wenn wir uns gerade in einer solchen Situation befinden, kann es für uns so aussehen, als ob uns der Sturz passiert und unsere Handlungen wirklich eine Reaktion auf Kundenhandlungen sind. Dies ist die Natur komplexer Systeme und der Welt der kreisförmigen Rückkopplungsschleifen: Wenn eine Schleife erst einmal in Gang kommt, ist es schwer zu sagen, was was antreibt.

Als Struktur hat eine Verstärkungsschleife keine Richtungspräferenz. Wie kann Fitnessfirma also sicherstellen, dass die Schleife in die gewünschte Richtung geht (in diesem Fall nach oben)? Sie dir noch einmal das Schleifendiagramm an. Eine Möglichkeit, die beiden Schleifen zu verwalten, besteht darin, die Wichtigkeit der relativen Verzögerungen in den beiden Schleifen zu erkennen. Wenn die Verzögerung in der R-Schleife länger ist als die in der B-Schleife, könnte Fitnessfirma versuchen, herauszufinden, wie die Verzögerung der R-Schleife verkürzt werden kann. Beispielsweise könnte es Verträge mit anderen Lieferanten oder Partnern mit Überkapazitäten abschließen. Auf diese Weise könnte es schneller auf Nachfragesteigerungen reagieren. Wenn dies nicht möglich wäre, könnte das Unternehmen versuchen, Frühwarnindikatorsysteme zu entwickeln, die auf unerwartete Sprünge im Produktionsdruck oder Qualitätsverluste aufmerksam machen. Beide Ereignisse sind wichtige Signale, dass ein Unternehmen einen Ausbau seiner Produktionskapazität vornehmen sollte.

Verschlimmbesserungen bei Hardwarefirma

Viele Manager verbrauchen ihre Zeit und Energie damit, Dinge zu „reparieren“. Wenn der Umsatz zu niedrig ist, tun wir etwas, damit er wieder steigt. Wenn die Erträge zu niedrig sind, versuchen wir, das Team für die Erträge verantwortlich zu machen, um seine Leistung zu verbessern. Wenn die Gewinne sinken, senken wir die Kosten, um den Gewinn zu steigern. Wir können uns gratulieren, wenn sich die Zahlen kurzfristig verbessern. In vielen Fällen kehrt das Problem jedoch auf das gleiche Niveau wie zuvor zurück – oder wird noch schlimmer. Am Ende haben wir das seltsame Gefühl, dass unsere angeblichen „Korrekturen“ auf uns zurückschlagen.

Dieses Beispiel zeigt einen System-Archetyp, der häufig als Verschlimmbesserung bezeichnet wird. System-Archetypen sind eine Reihe von acht klassischen „Geschichten“ von Problemen oder Verhaltensweisen, die in vielen Situationen und in einer Vielzahl von Organisationen vorkommen. (Die acht System-Archetypen werde ich vielleicht in einer anderen Serie beschreiben.)
Zur Veranschaulichung betrachten wir die Hardwarefirma, ein Hardware-Entwicklungsunternehmen. Hardwarefirma steht vor einer alltäglichen Situation, in der die gut gemeinten Handlungen von Managern genau das Gegenteil von dem bewirken, was sie wollten. Eines Tages stellt ein Manager des Produktentwicklungsprogramms des Unternehmens fest, dass die Anzahl der Teile, die hinter dem Zeitplan liegen, alarmierend hoch ist. Wenn dies so weitergeht, kann das Team das Produkt nicht rechtzeitig auf den Markt bringen. Sein Fazit: Die Ingenieure brauchen eine strengere Überwachung und eine Überprüfung aller Teile, damit sie verstehen, dass die Anzahl der hinter dem Zeitplan liegenden Teile sinken muss.

Sicher, sobald der Manager seine Aufmerksamkeit auf das Teileproblem konzentriert, bewegen sich die späten Teile schnell durch die Pipeline. Aber nach einer Weile kehrt das Teileproblem zurück. Und wenn der Manager sich noch einmal darauf konzentriert, verbessern sich die Dinge wieder – aber nicht so schnell wie zuvor. Mit der Zeit wird das Problem umso schlimmer, je mehr Aufmerksamkeit der Manager auf das Problem legt. Was ist los?

Nun, des Managers Aufmerksamkeit für das Problem der späten Teile bestand in der Form, dass mehr Überprüfungsmeetings erforderlich waren, um den Status der Teile zu überprüfen – insbesondere Teile, die verspätet waren.

Bei all diesen Besprechungen ruhte die eigentliche technische Arbeit. Anstatt Probleme mit ihren Teilen zu melden, als sie auftraten, warteten die Ingenieure, bis sie bereits Lösungen für die Probleme hatten, um in den Meetings besser auszusehen. Dies bedeutete, dass andere Ingenieure viel später über Änderungen an den Teilen informiert wurden (siehe die R-Schleife). Da immer mehr Ingenieure Informationen vorenthalten wurden, blieben immer mehr Teile hinter dem Zeitplan zurück – eine Situation, die des Managers Glauben bestärkte, dass er den Ingenieuren weiterhin „helfen“ müsse. Das Endergebnis – ein sich ständig verschlechterndes Problem der späten Teile – wollte niemand im System. Doch sowohl der Manager als auch die Ingenieure haben ungewollt mitgeholfen, um genau diese Situation zu schaffen.

Eine bessere Lösung in dieser Situation wäre, dass der Manager eine ganz andere Maßnahme ergreift als die Überprüfungsmeetings, die er durchgeführt hatte. Hätte er beispielsweise die zeitnahe Meldung von Problemen befürwortet und versprochen, die Ingenieure nicht mit weiteren Überprüfungen oder bösen Blicken zu „bestrafen“, hätten die Ingenieure die Probleme früher gemeldet. Irgendwann wäre die Anzahl der späten Teile dramatisch gesunken. (Dies wäre jedoch erst geschehen, nachdem sich das Problem zuerst verschlechtert hatte. Dieses Ergebnis ist ein klassisches Beispiel dafür, wie sich komplexe Systeme verhalten. Wieder einmal sind Verzögerungen die Ursache dieser Dynamik.)

Die Beispiele der Fitnessfirma und Hardwarefirma sollen zeigen, dass wirklich alles mit allem verbunden ist. Egal wie eng wir uns entscheiden, ein System zu definieren, dieses System ignoriert unsere willkürliche Definition und reagiert auf alle relevanten Verbindungen. Infolgedessen gibt es neben den beabsichtigten Konsequenzen viele unbeabsichtigte Konsequenzen unseres Handelns in einem System. In der Tat geht es nie darum, ob unser Handeln unbeabsichtigte Folgen haben wird, sondern vielmehr, inwieweit und welche Konsequenzen sie haben werden. Die Abbildung der möglichen unbeabsichtigten und beabsichtigten Konsequenzen unseres Handelns in kausalen Schleifendiagrammen kann uns dabei helfen, Probleme vorherzusehen und anzugehen, bevor sie auftreten.

Agilität

Systemdenken III: Systemisches Verhalten

Veröffentlicht am
This entry is part 3 of 5 in the series Systemdenken
Geschätzte Lesezeit: 22 Minuten.

In den vorigen Teilen wurden Systeme definiert und beschrieben, wie Systeme die Muster und Ereignisse generieren, die wir um uns herum sehen. Aber wie fangen wir eigentlich an, die Realität von diesem faszinierenden Standpunkt aus zu betrachten? Wir müssen zwei Dinge tun: Wir müssen unser Verständnis für das Verhalten von Systemen vertiefen und uns mit einigen Begriffen und Werkzeugen des Systemdenkens vertraut machen, um unser Verständnis dieses Verhaltens zu vermitteln. Dieser Abschnitt führt durch einige grundlegende Systemverhaltensweisen und verwendet zwei leistungsstarke System-Denkwerkzeuge, kausale Schleifendiagramme (englisch: Causal loop diagram) und Verhaltensverlaufsdiagramme, um die Konzepte zu veranschaulichen.

Rückkopplungsschleifen

Um die Sichtweise unseres Systems zu verbessern, betrachten wir noch einmal die Rückkopplungen. Wie wir zuvor gesehen haben, sind Rückkopplungen die Übermittlung und Rückgabe von Informationen. Das Schlüsselwort hier ist Rückgabe – es ist genau dieses Merkmal, das die Rückkopplung-Perspektive von der allgemeineren Perspektive unterscheidet: die lineare Ursache und Wirkung der Weltsicht. Die lineare Ansicht sieht die Welt als eine Reihe von unidirektionalen Ursache-Wirkungs-Beziehungen: A verursacht B verursacht C verursacht D usw.

Die Rückkopplungsschleifenperspektive hingegen betrachtet die Welt als eine zusammenhängende Menge zirkulärer Beziehungen, bei denen etwas etwas anderes beeinflusst und wiederum davon betroffen ist: A verursacht B verursacht C verursacht A usw.

So trivial diese Unterscheidung zwischen diesen beiden Ansichten erscheinen mag, sie hat tiefgreifende Auswirkungen auf die Art und Weise, wie wir die Welt sehen und wie wir unser tägliches Leben handhaben. Wenn wir die lineare Ansicht betrachten, neigen wir dazu, die Welt als eine Reihe von Ereignissen zu sehen, die nacheinander fließen. Wenn zum Beispiel die Verkäufe zurückgehen (Ereignis A), ergreife ich eine Marketingkampagne (Ereignis B).

Ich sehe dann einen Anstieg der Aufträge (Ereignis C), einen Anstieg der Verkäufe (Ereignis D) und einen Anstieg der Auftragsbestände (Ereignis E). Dann stelle ich fest, dass die Verkäufe wieder zurückgehen (Ereignis F), worauf ich mit einer anderen Marketingkampagne (Ereignis G) antworte. . . und so weiter. Durch die „Linse“ dieser linearen Perspektive sehe ich die Welt als eine Reihe von Ereignissen, die andere Ereignisse auslösen. Obwohl die Ereignisse B und G Ereignisse wiederholen, sehe ich sie als getrennt und unabhängig.

Aus der Sicht der Rückkopplungsschleife würde ich mich ständig fragen: „Wie wirken sich die Konsequenzen meiner Handlungen auf das System aus?“ Wenn ich sehe, dass die Verkäufe sinken (Ereignis A), ich starte eine Marketingkampagne (Ereignis B).

Ich sehe einen Anstieg der Aufträge (Ereignis C) und einen Anstieg der Verkäufe (Änderung von Ereignis A). Ich stelle jedoch auch fest, dass die Auftragsbestände zunehmen (Ereignis D) (ein weiterer möglicher Effekt von Ereignis B), was sich auf Bestellungen und Verkäufe auswirkt (Änderung der Ereignisse C und A), was mich dazu veranlasst, meine ursprüngliche Aktion (Ereignis B) zu wiederholen.

Nachdem du dir sowohl die linearen Darstellungen als auch die Rückkopplung-Darstellungen angesehen haben, denkst du vielleicht: „Na und? Ich bin zu beschäftigt, um schöne Bilder über meine Handlungen zu zeichnen. Meine Aufgabe ist es, Ergebnisse zu erzielen – also muss ich jetzt Maßnahmen ergreifen. Die Beschreibung des Geschehens auf zwei verschiedene Weisen ändert nichts an dem, was tatsächlich passiert. Warum sind die beiden Perspektiven so wichtig?“ Aber hier ist eine wichtige Einsicht in das Systemdenken: Wie wir unsere Handlungen in der Welt beschreiben, wirkt sich auf unsere Handlungen aus in der Welt. Sehen wir uns also die lineare Perspektive und die Rückkopplungsperspektive noch einmal genauer an. Beachte, wie die Rückkopplung-Ansicht dich auf die Wechselbeziehungen zwischen allen Ereignissen aufmerksam macht, während du in der linearen Ansicht auf jedes Ursache-Wirkungs-Ereignispaar hingewiesen wirst. Wenn du dir der Zusammenhänge eines Problems bewusst wirst, kannst du das Problem viel besser angehen, als wenn du nur getrennte Ursache-Wirkungs-Paare sehen würdest.

Es geht hier nicht darum, über die inhärenten Vorzüge zweier Perspektiven zu „philosophieren“, sondern eine zu identifizieren, die uns hilft, das Verhalten komplexer Systeme zu verstehen, um diese Systeme besser verwalten zu können. Das Hauptproblem bei der linearen Ansicht besteht darin, dass sie zwar technisch genau beschreiben kann, was passiert ist, sie jedoch nur sehr wenig Einblick in die Abläufe und Gründe bietet. Der Hauptzweck der Rückkopplungsansicht besteht jedoch darin, ein besseres Verständnis aller Kräfte zu erlangen, die die Verhaltensweisen erzeugen, die wir erfahren.

Die Grundbausteine: Verstärkende und ausgleichende Schleifen

Rückkopplungen sind nur ein Teil des Bildes, wenn wir darüber nachdenken, wie sich Systeme verhalten. Um das Bild auszufüllen, betrachten wir einige Beispiele für systemisches Verhalten. Vielleicht hast du beispielsweise in einem Unternehmen gearbeitet, das anfänglich exponentiell im Umsatz gewachsen war, um dann einige Jahre später zusammenzubrechen. Oder vielleicht hast schon mehrfach eine Diät probiert, bei der du immer und immer wieder die gleichen fünf Kilogramm verloren hast. Oder du erinnerst dich vielleicht daran, dass du, als du das erste Mal Fahrradfahren lerntest, die Straße hinunter gewackelt bist, um dich zu stabilisieren, und schließlich hinuntergefallen bist (und dich gleichzeitig gefragt hast, was eigentlich an einem Dreirad nicht in Ordnung sein soll).

Alle diese Beispiele scheinen auf der Oberfläche völlig unzusammenhängend zu sein. Wenn wir sie jedoch genauer betrachten, können wir einige grundlegende Dinge herausfinden, die sie gemeinsam haben. Tatsächlich kann alles systemische Verhalten durch zwei grundlegende Prozesse beschrieben werden – Verstärkungs- und Ausgleichsprozesse. Beide „Bausteine“ des systemischen Verhaltens erfordern deutlich unterschiedliche Rückkopplungen. Und die Kombinationen dieser Prozesse führen zu einer Vielzahl dynamischer Verhaltensweisen in den Systemen, die wir um uns herum sehen.

Verstärkungsschleifen: Die Motoren des Wachstums und des Zusammenbruchs

Verstärkungsschleifen ergeben sich aus der sogenannten positiven Rückkopplung. In der Systemterminologie bedeutet dies Information, dass sich etwas in eine Richtung ändert, worauf sich etwas damit Verbundenes noch weiter in diese Richtung ändert. Mit anderen Worten fügen aufeinanderfolgende Änderungen die vorherigen Änderungen hinzu und halten die Änderungen in dieselbe Richtung.

Nehmen wir ein einfaches Beispiel für ein Sparkonto. Wenn du einen positiven Saldo hast, wird der Betrag bei jeder Zinsberechnung geringfügig über der vorhergehenden Zahlungsperiode liegen. Dies liegt daran, dass der Saldo seit der vorherigen Berechnung gestiegen ist. In der Zeit danach wird der Zinssatz noch größer sein, da der Saldo seit der Zeit etwas gestiegen ist. (Natürlich gehen wir davon aus, dass du in dieser Zeit keine Abhebungen machst, was für viele von uns eine große Annahme sein kann.)

Ein anderes Beispiel ist die wunderbare Wachstumsmaschine, die jeder Vermarkter kennt: der Mundpropaganda-Effekt. Wenn du die Anzahl der Kunden erhöhst, die deine Produkte verwenden, gibt es mehr „Münder“, um andere über deine Produkte zu informieren. Die daraus resultierende Bekanntheit führt zu mehr Verkäufen, was zu noch mehr zufriedenen Kunden führt. (Dieses Szenario basiert natürlich auf der Annahme, dass die Kunden nette Dinge zu deinem Produkt sagen können!)

In den Szenarien für Bankkonten und Mundpropaganda erzeugen sich verstärkende dynamische Antriebe noch mehr Veränderung in dieselbe Richtung. Du kannst diese Art von Schleife bei der Arbeit erkennen, indem du nach exponentiellem Wachstum oder Zusammenbruch suchst (z. B. die schnelle Verbreitung einer aufregenden neuen Idee oder eines Unternehmens, das plötzlich aus dem Geschäft geht).

Du kannst dir auch vorstellen, Prozesse als „Engelskreise“ zu verstärken, wenn sie erwünschtes Verhalten hervorrufen. Vielleicht hast du Engelskreise getroffen, als du hörtest, dass Leute von der steigenden Lernkurve berichten (die steigende Lernrate, wenn wir mehr lernen) oder von Skalierungseffekten bei der Wirtschaftlichkeit (je höher das Produktionsvolumen wird, desto niedriger werden unsere Stückkosten).

Wenn Verstärkungsschleifen ein Verhalten erzeugen, das wir nicht wollen, werden sie als Teufelskreis bezeichnet. Oft kann ein Engelskreis zu einem Teufelskreis werden, wenn etwas in die entgegengesetzte Richtung tritt. In unserem Beispiel für Mundpropaganda kann die Schleife teuflisch werden, wenn das, was die Leute über unser Produkt sagen, negativ ist. Der negative Mundpropaganda-Effekt führt zu geringeren Umsätzen, weniger Kunden, weniger Mundpropaganda-Effekten, noch niedrigeren Umsätzen usw.

Diese Verstärkungsprozesse sind bereits in unserer Alltagssprache verankert, die zu ihrer allgegenwärtigen Präsenz spricht. Du hast wahrscheinlich Ausdrücke wie „Wir waren in einer Todesspirale“ oder „Schneeballeffekt“ schon einmal gehört oder verwendet. Diese Prozesse explizit auf Rückkopplung-Schleifendiagramme (oder kausale Schleifendiagramme, wie sie im Systemdenken genannt werden) zu mappen, lässt uns gemeinsam sehen und darüber sprechen, damit wir effektiver auf sie reagieren können.

Ausgleichschleifen: Die großen Stabilisatoren

Wir wissen, dass Systeme mehr sein müssen, als nur Verstärkungsschleifen, denn unsere Erfahrung zeigt uns, dass nichts für immer wächst (gut, okay, außer Steuern). Wir brauchen etwas anderes, um andere Verhaltensweisen zu beschreiben, die nicht wie ein stetiges exponentielles Wachstum oder einen Rückgang aussehen. Wenn wir uns umschauen, sehen wir trotz aller Gespräche über die Zeit des raschen Wandels, in der wir uns befinden, sehr viel Stabilität. Zum Beispiel blüht die Welt des Handels trotz steigender oder fallender Vermögen einzelner Unternehmen oder Branchen weiter auf der ganzen Welt. Die Welt verändert sich, aber auf einer Plattform von großer Stabilität. Was macht diese Konstanz aus? Es sind Ausgleichschleifen, der andere „Baustein“ des systemischen Verhaltens.

Ausgleichschleifen versuchen ständig, ein System auf einem gewünschten Leistungsniveau zu halten, ähnlich wie ein Thermostat die Temperatur in Ihrem Haus reguliert. Während der Schneeballeffekt der Verstärkungsschleifen die Systeme destabilisiert (d.h. sie aus dem Gleichgewicht bringt), stabilisieren die Ausgleichschleifen im Allgemeinen. Sie widersetzen sich einer Änderung in einer Richtung, indem sie eine Änderung in die entgegengesetzte Richtung erzeugen, wodurch die vorherigen Effekte aufgehoben werden. (Deshalb werden sie auch als negative Rückkopplungsschleifen bezeichnet.) Wenn beispielsweise der Thermostat in einem Haus feststellt, dass die Raumtemperatur höher ist als die Thermostateinstellung, wird die Heizung heruntergefahren.

Es gibt immer ein inhärentes Ziel eines Ausgleichvorgangs, und was eine Ausgleichschleife „antreibt“, ist die Lücke zwischen dem Ziel (dem gewünschten Niveau) und dem tatsächlichen Niveau. Wenn sich die Diskrepanz zwischen den beiden Ebenen vergrößert, führt das System Korrekturmaßnahmen durch, um das tatsächliche Niveau anzupassen, bis die Diskrepanz abnimmt. Im Thermostat-Beispiel fordern Lücken zwischen der tatsächlichen Raumtemperatur und der Temperatureinstellung des Thermostats (Ziel) den Thermostat auf, die Heiz- oder Kühlmechanismen im Haus einzustellen, um die tatsächliche Temperatur auf die gewünschte Temperatur zu bringen. In diesem Sinne versuchen Ausgleichsprozesse immer, die Bedingungen in einen gewissen Gleichgewichtszustand zu bringen.

Es wäre keine grobe Übertreibung zu sagen, dass Ausgleichschleifen überall sind. Sie sind weitaus allgegenwärtiger als verstärkende Schleifen. Sie sind jedoch weitaus weniger sichtbar, da sie still daran arbeiten, um die Dinge so zu lassen, wie sie sind. Wir neigen dazu, Dinge viel stärker zu bemerken, wenn sie sich verändern als Dinge, die gleich bleiben. Denk beispielsweise an die Zeiten, zu denen du dir deiner Körpertemperatur bewusst bist. Höchstwahrscheinlich bemerkst du sie nur, wenn sie in Form eines Fiebers über ihr normales Maß „hinausgewachsen“ ist oder wenn es aufgrund einer Unterkühlung unter den Normalwert gefallen ist. In ähnlicher Weise, wann bemerkst du, wie dein Automotor läuft? Höchstwahrscheinlich nur, wenn er nicht oder seltsam läuft. In beiden Fällen gibt es eine riesige Anzahl von Ausgleichvorgängen, um das System reibungslos laufen zu lassen (schnell, welches System – du oder dein Auto – hat mehr Ausgleichschleifen?)

Ausgleichschleifen zeigen sich in Organisationen meistens in Form von Kontrollprozessen. Die ausbalancierte „Sprache“ ist überall, wo man hinschaut: „Schadenskontrolle“, „Bestandskontrolle“ usw. Wir könnten sagen, dass alle Verantwortlichkeiten des Managements auf die eine oder andere Weise als Ausgleichsprozesse betrachtet werden können. Stell dir vor: Alles, was du wirklich tun musst, um ein guter Manager zu sein, ist zu verstehen, wie du Ausgleichschleifen verwaltest. Klingt weit hergeholt? Das ist tatsächlich das große Geheimnis, um ein guter Manager zu werden – die Fähigkeit, die Ablenkung der täglich auf dich einprasselnden Details zu überwinden und die zugrunde liegenden systemischen Strukturen zu sehen, die die Ergebnisse erzeugen. Wenn du die Welt durch die Linsen von Verstärkungs- und Ausgleichschleifen siehst, kannst du diese Fähigkeiten entwickeln.

Nach Zeichen suchen: Schleifen und Etiketten

Bevor wir uns genauer ansehen, wie Ausgleichschleifen in Systemen eine Schlüsselrolle spielen, sollten wir uns zunächst zwei hilfreiche Funktionen kausaler Schleifendiagramme im Allgemeinen anschauen: Pfeilbezeichnungen und Schleifenbezeichnungen. Ab jetzt wirst du feststellen, dass die Pfeile in Schleifendiagrammen mit einem „+“ oder „-“ gekennzeichnet sind. Diese Bezeichnungen zeigen, wie eine Variable eine andere beeinflusst: Ein „+“ zeigt an, dass sich eine Variable ändert, die nächste Variable ändert sich in dieselbe Richtung. (Oder die erste Variable addiert sich zur zweiten Variablen.) Ein „-“ zeigt an, dass sich eine Variable ändert, die andere in entgegengesetzter Richtung. (Oder die erste Variable zieht sich von der zweiten Variablen ab.)

Zum Beispiel würde jeder Pfeil in unserer Sparkonto- / Zinszahlungsschleife mit einem „+“ gekennzeichnet, da mit dem Sparen die Zinszahlungen steigen (oder sinken). Und da die Zinszahlungen steigen (oder sinken), steigen auch die Einsparungen. Beachte, dass das Sparkonto-Diagramm auch ein „R“ in der Mitte hat. Dies bedeutet, dass die Schleife einen Verstärkungsprozess (englisch: Reinforcing process) darstellt.

Nächstes Beispiel, diesmal eines Ausgleichsprozesses. Nehmen wir an, dass du bei jeder Belastung einige Entspannungsübungen machst, die deinen Stress senken. In einem Diagramm dieses Systems wird der Pfeil, der vom Belastungsniveau zur Lücke geht, mit einem „+“ gekennzeichnet. (Mit zunehmendem Stress steigt auch die Lücke zwischen dem tatsächlichen und dem akzeptablen Niveau.) Der Pfeil von der Lücke zur Verwendung von Entspannungsübungen wird auch mit einem „+“ gekennzeichnet. (Je größer die Lücke ist, desto mehr versuchen Sie sich zu entspannen.) Aber der Pfeil, der von den Entspannungsübungen zurück zum Stresslevel geht, wird mit einem „-“ gekennzeichnet (Entspannungsübungen nehmen zu, Ihr Stress nimmt ab.) Dieses Diagramm hätte ein „B“ in der Mitte, um anzuzeigen, dass es einen Ausgleichsprozess (englisch: Balancing process) darstellt.

Eine einfache Methode, um festzustellen, ob eine Verstärkungs- oder Ausgleichschleife vorliegt, besteht darin, die Anzahl der „-“ zu zählen. Wenn es keine „-“ oder eine gerade Anzahl von „-“ gibt, verstärkt sich die Schleife. Wenn es eine ungerade Anzahl von „-“ gibt, balanciert die Schleife. Auch wenn diese Methode praktisch ist, solltest du die Argumente trotzdem noch einmal überprüfen, indem du durch die Schleife läufst und die Geschichte darüber erzählen, was sie darstellt.

Im Hinblick auf diese praktischen Etiketten wollen wir uns die Ausgleichschleifen genauer ansehen.

Die gute, die schlechte, und die hässliche Ausgleichschleife

Bisher klingt das Konzept einer Ausgleichschleife einfach: Diese Prozesse dienen im Allgemeinen dazu, die Dinge stabil zu halten. Aber Achtung: Ausgleichsprozesse sind im wirklichen Leben ziemlich komplex. In vielen Fällen können wir sie als eine komplizierte Mischung aus dem „guten“ (dem gewünschten Ziel), dem „schlechten“ (der tatsächlichen Situation, die wir nicht wollen) und dem „hässlichen“ (unserer Wahrnehmung des Situation, die wir ungern untersuchen wollen) beschreiben. Dies macht das Verwalten dieser Schleifen etwas schwierig, da die Menschen oft eine sehr unterschiedliche Wahrnehmung einer Situation haben – und diese Wahrnehmungen die Situation selbst stark beeinflussen können.

Nehmen wir als Beispiel die Qualität eines Produkts oder einer Dienstleistung. In unserer Standard-Ausgleichsstruktur haben wir unser gewünschtes Qualitätsniveau und das tatsächliche Qualitätsniveau. Wenn unser gewünschtes Qualitätsniveau steigt, nimmt auch unsere interne Qualitätslücke zu (beachte das „+“ auf dem Pfeil).

Immer wenn sich die Qualitätslücke vergrößert, erhöhen wir unsere Verbesserungsbemühungen (beachte erneut das „+“). Wenn die Verbesserungsbemühungen zunehmen, erwarten wir eine Steigerung der tatsächlichen Qualität (ein weiteres „+“). Wenn sich die tatsächliche Qualität erhöht, verringert sich schließlich unsere Qualitätslücke (beachte das „-“). Sobald sich die Lücke verringert, drehen wir uns wieder um die Schleife: Auch die Verbesserungsbemühungen nehmen ab, was wiederum die tatsächliche Qualität verringert. Wieder vergrößert sich die Lücke.

Noch bei der Sache? Gut! Denn jetzt wird es schwierig: Selbst bei dieser relativ grundlegenden Qualitätsprüfung gibt es viele andere wichtige Variablen. Zum Beispiel arbeiten wir oft nicht auf der Grundlage der tatsächlichen Qualität, sondern nach unserer Wahrnehmung der Qualität. Darüber hinaus stimmt die gewünschte Qualität unserer Kunden nicht unbedingt mit der von uns gewünschten Qualität überein. Im Gegenzug reagieren Kunden nicht immer auf unsere tatsächliche Qualität, sondern auf ihre Wahrnehmung der Qualität. Jede dieser Variablen führt zu einer neuen Lücke, über die man sich Sorgen machen muss.

Als zum Beispiel Hewlett-Packard zum ersten Mal in das Geschäft mit tragbaren Computern eintrat, haben sie ihre Geräte entsprechend den üblichen hohen Qualitätsstandards entworfen und gebaut. Intern waren sie stolz darauf, dass ihre Computer praktisch unzerstörbar waren und ihr Design so robust war. Diese Robustheit war jedoch mit einem hohen Preis verbunden. Als Unternehmen hatte HP dann Verbesserungsbemühungen angestoßen, die vor allem auf die interne Qualitätslücke zurückzuführen waren. Die Kunden hingegen wollten, dass ihre Computer robust genug sind, aber sie wollten auch, dass sie erschwinglich sind. Daher verkauften sich die Computer von HP nicht sehr gut. Es dauerte einige Zeit, bis HP seine Aufmerksamkeit von der internen Lücke auf die Qualitätslücke seiner Kunden verlagerte.

Was ist der beste Weg, um diese „guten“, „schlechten“ und „hässlichen“ Ausgleichschleifen zu handhaben? Wenn du die Annahme akzeptierst, dass du Dinge, die sichtbar (und nicht unsichtbar) sind, und Beziehungen, die explizit (und nicht implizit) sind, besser verwalten kannst, solltest du zunächst versuchen, deine Probleme in kausalen Schleifendiagrammen abzubilden. Durch diese Art des systemdenkenden Ansatzes beginnst du, die kausalen Strukturen, die das organisatorische Verhalten bestimmen, sichtbarer zu machen und zu erklären. Das Erstellen eines solchen Diagramms als Team kann besonders leistungsfähig sein, da alle dazu aufgefordert werden, Fragen zu stellen, die du möglicherweise zuvor nicht gestellt hast, z.B.

  • Welche Lücken treiben unser System wann und um wie viel?
  • Wie genau wissen wir, was jede Lücke ist?
  • Wie überwachen wir die Lücken?
  • Auf welche Weise können wir die Lücken schließen?
  • Wie lange dauert es, bis Wahrnehmungen die tatsächliche Qualität einholen?

Die Beantwortung all dieser Fragen kann verborgene Annahmen und Gewohnheiten aufdecken, die möglicherweise zu schlechten Ergebnissen führen.

Verzögerungen: Versteckte Störenfriede

Jetzt, da sich dein Kopf mit all diesen Schleifen dreht, wollen wir eine weitere Komplexitätsebene hinzufügen. Denn es gibt da eine weitere Sache, die das Verstehen des Verhaltens komplexer Systeme so schwierig macht: Das Vorhandensein von Verzögerungen im System. Jede Verbindung in einem System enthält eine Verzögerung. Manchmal sind Verzögerungen unmerklich kurz (z. B. wenn die Ampel grün wird und die Person hinter dir hupt). Zu anderen Zeiten sind sie unendlich lang (wie das Warten auf eine große Marketingkampagne, um Verkäufe zu generieren).

Verspätungen gibt es in vier grundlegenden „Geschmacksrichtungen“: Physisch, transaktional, informativ und wahrnehmungsbezogen. Physische Verzögerungen stellen die Zeit dar, die ein tatsächlicher „Stoff“ benötigt, um von einem Ort zum anderen zu wechseln oder von einem Zustand in einen anderen. So müssen zum Beispiel Produkte aus dem Lager an Einzelhändler versendet werden oder Rohstoffe in nützliche Produkte umgewandelt werden. Jede Transaktion benötigt ebenfalls Zeit, um abgeschlossen zu werden, egal ob es sich um ein Telefonat oder eine Reihe von Vertragsverhandlungen handelt. Dies kann als Transaktionsverzögerung bezeichnet werden. Dann gibt es Verzögerungen bei der Übermittlung von Informationen über die physischen Änderungen oder Entscheidungen, die getroffen wurden. Trotz all unserer modernen Hochgeschwindigkeitskommunikationssysteme können Informationsverzögerungen immer noch recht lang sein, da die Übertragung nicht notwendigerweise mit der Kommunikation übereinstimmt. (Das heißt, nur weil Informationen gesendet wurden, bedeutet dies nicht, dass sie empfangen und verstanden wurden.) Die vierte Quelle der Verzögerung ist oft die schwierigste – Verzögerungen in der Wahrnehmung. Die physischen Änderungen haben (nach einer Verzögerung) stattgefunden, Entscheidungen wurden getroffen und die Informationen über die Änderung wurden kommuniziert. Unsere Überzeugungen und Annahmen sind jedoch oft so tief, dass sich unsere Wahrnehmungen selbst dann nicht so leicht verschieben, wenn sich die Realität, auf der sie basieren, ändert.

Diese vier Arten von Verzögerungen sind weder gut noch schlecht. Wie wir damit umgehen, bestimmt, ob sie Probleme verursachen. In unserer Eile, die Dinge schnell zu erledigen, neigen wir dazu, die tatsächlichen Verzögerungen im System zu unterschätzen oder sie sogar zu ignorieren. Verzögerungen sind jedoch zu beachten, da sie das Verhalten eines Systems unvorhersehbar machen und unsere Bemühungen, die gewünschten Ergebnisse zu erzielen, verunsichern, wie wir im nächsten Artikel sehen werden.