Montag, 12. Juni 2023

Kroatien

Dressrehersal


Distanzen

Bis zum See: 400 kM
Bis Meran: 328 Km
Bis zum Gardasee: 254 Km
Bis Piran (Slovenien): 320 Km

Pässe

Durch die Wintersperre ist ein Überqueren der beiden Pässe nicht vor ca. 20.5 möglich.

Umbrailpass

Wintersperre: Umbrailpass / Alpenpässe (alpen-paesse.ch)

Stilfser Joch

Wintersperre scheint die selbe wie der Umbrailpass


Sonntag, 2. April 2023

Kosten beim Telefonieren sparen (Festnetz -> Mobilfunk (DE) ) für 2 Cent

Nach dem Umstieg auf die Deutsche Giganetz kostet jeder Anruf in's Fest- und Mobil-Netz extra weil keine Flatrate enthalten ist.

Dieser Artikel Mit VOIP/SIP und FritzBox beschreibt einen Ansatz Freevoipdeal.com bei dem ein Gespräch 2 Cent kostet. Angeblich soll das telefonieren in's Festnetz kostenlos.

Allerdings muss das Konto erst mit 10EUR aufgeladen werden bevor man das testen kann. Daher habe ich das noch nicht ausprobiert.

Die Anleitung müsste prinzipiell aber für jeden anderen Anbieter ebenfalls funktionieren.

Sonntag, 26. März 2023

ESP32 als "Hacking-Tool"

ESP32_NAT_Router

Diese Repo war mein start: ESP32 NAT Router with WPA2 Enterprise support. Der Source-Code hat sich mit ESP-IDF nicht bauen lassen. Die fertigen bin Files habe ich erst später gefunden. Die teste ich eventuell noch.

Es gibt einen Fork der fertiger Images bereitstellt: ESP32 NAT Router Extended Das hat sich nach der Anleitung problemlos auf mein ESP32-DEVKIT von AliExpress falshen lassen.

Nach Eingabe der Parameter in der Web-UI auf dem neuen Access-Point konnte ich so sehr einfach eine Verbindung in's Internet erstellen.

Um auf den ESP32 via Serial-Console zuzugreifen habe ich CoolTerm verwendet. Den Seriellen Port kann man direkt in CoolTerm auswählen. Mit ls /dev/cu.* lässt sich prüfen ob der Mac den ESP32 erkennt. Das war aber schon zum flashen notwendig. Die Verbindung zum ESP32 erfolgt mit 115200 baud.
Mit show kann der Status des NAT_Router geprüft werden.

Im nächsten Schritt möchte ich nun den Live-Traffic mit WireShark untersuchen. Wireshark kann von hier heruntergeladen werden. Da WireShark direk ein WIFI Interface verwenden kann ist sonst weiter nichts notwendig.










Sonntag, 20. Oktober 2019

How to Monitor Kafka with AppDynamics

This article is about the monitoring of a Kafka installation with AppDynamics. I will look in to the instrumentation with the JavaAgent 4.5 and MachineAgent 4.5. All this on a local Notebook installation. Maybe I will look in to an Opensift setup later.

A good source for Kafka knowledge for the beginners can be found here: http://cloudurable.com/blog/kafka-tutorial-kafka-from-command-line/index.html

What we need:
1. Kafka & Zookeeper
2. AppDynamics Controler (SAAS)
3. AppDynamics Java Agent and Machine Agent

Kafka was downloaded from https://kafka.apache.org/downloads. At the time of writing 2.3.0 was the latest version and used for this article. I installed it according to the tutorial of Clousurable mentioned above.

For AppDynamics I have registered the 15 days evaluation license. From my newly created account I downloaded the Machine Agent and Java Agent 4.5.X. Both where unziped to the home folder of my Fedora 29.

Configuration


1. Kafka


To enable JMX I have added this line export JMX_PORT=9988 just above the last line in kafka-server-start.sh located in the Kafka bin folder.

To support the AppDynamics Java Agent I have added $APPD_OPTS to the section #Launch mode of the shell script kafka-run.calss.sh located in the bin folder of Kafka. So it looks like this:

exec $JAVA $APPD_OPTS $KAFKA_HEAP_OPTS $KAFK_.........

Location is important. It must be the first argument after $JAVA.

2. AppDynamics


For AppDynamics we have two sections. The Java Agent and the Machine Agent. Let us start with the Java Agent.

2.1 AppDynamics Java Agent


I have unpacked the ZIP  AppServerAgent-4.5.15.27926.zip to /home/juerg/AppDynamics_JavaAgenet. Configuration of the agent takes place in /conf/controler-info.xml. Here the controler-info.xml. I used. Beside the conroler-info.xml. The someof the fields I passed via -D parameter in $APPD_OPTS to Kafka. I placed this in ~/.bash_profile. The export looks like this:

export APPD_OPTS=" -javaagent:/home/juerg/AppDynamics_JavaAgenet/javaagent.jar -Dappdynamics.agent.logs.dir=/tmp/logs -Dappdynamics.agent.uniqueHostId=$HOSTNAME -Dappdynamics.agent.reuse.nodeName=true -Dappdynamics.jvm.shutdown.mark.node.as.histical=true -Dappdynamics.agent.reuse.nodeName.prefix=Kafka-Broker- -Dappdynamics.agent.tierName=Kafka-Broker -Dappdynamics.agent.log4j2.disabled=true"

Here some Screenshots from AppDynamics UI:



2.2 Machine Agent


Like the Java Agent I unziped the Machine Agent to my home folder. To start it as a stand alone agent I have created a simple shell script:

agent-start.sh
#!/bin/bash
./bin/machine-agent -p /tmp/pidfile -Dappdynamics.agent.uniqueHostId=$HOSTNAME -Dappdynamics.agent.reuse.nodeName=true -D appdynamics.jvm.shutdown.mark.node.as.histical=true -Dappdynamics.agent.reuse.nodeName.prefix=Kafka-Broker- -Dappdynamics.agent.tierName=Kafka-Broker -Dappdynamics.agent.log4j2.disabled=true -Dappdynamics.agent.maxMetrics=5000

As you can see the tier and node name are the same in Machine and Java agent. This will in AppDynamics UI then been aggregated in the same place.

Here some Screenshots from AppDynamics UI:



Samstag, 19. Oktober 2019

ESP32 misst Fluglärm

Nach dem erfolgreichen Bau eines Feinstaubsensors (https://luftdaten.info/feinstaubsensor-bauen/) ist die Idee entstanden das Konzept für das Messen des Fluglärms zu übertragen. Die Stärke des Feinstaubsensors SDS011 ist seine serielle Schnittstelle. Diese ermögliche den Anschluss des Sensors mit nur 4 Leitungen und ist somit auch für weniger erfahrene leicht nachzubauen.

Nach einiger Recherche habe ich bei Ali Express den HH_06.03 gefunden. Dieser ist hier beschrieben https://zhzh.xyz/2019/07/10/iot/esp32micropythonhh06uart/. Das enthaltene MicroPython Script:

from machine import UART 
uart = UART(1, 115200)
uart.init(115200, bits=8, parity=None, stop=1)
print(uart)
frameHeader = b'\xbb\xaa\x01' 
while True:
    if frameHeader == uart.read(3):
          frameDataLowPosition = uart.read( 1 )
          frameDataHighPosition = uart.read( 1 )
          frameCheck = uart.read( 1 )
          frameDataLowPosition = int.from_bytes(frameDataLowPosition, 'big' )
          frameDataHighPosition = int.from_bytes(frameDataHighPosition, 'big' )
    
          frameCheck = int.from_bytes(frameCheck, 'big' )
          if ((frameDataLowPosition+frameDataHighPosition+ 187 + 170 + 1 )& 0xFF ) == frameCheck:
             db = (frameDataHighPosition<< 8 | frameDataLowPosition)* 0.1
             print(db)     

lässt sich auf dem ESP32 leicht testen. Der Sensor liefert alle 500ms den gemessenen db(A) Wert.

Ich bin aktuell mit Windows unterwegs. Da sieht die Übertragung der Firmware für MicroPython so aus:
esptool.py --chip esp32 --port com4 --baud 460800 write_flash -z 0x1000 esp32-20191011-v1.11-422-g98c2eabaf.bin

Ich verwende Thonny als IDE.

Im nächsten Schritt übertrage ich den Code nun nach Arduino.

Die ersten Tests führten zu Bootschleifen. Dies lag an der Verwendung von serial1. Hier eine Erklärung: https://www.az-delivery.com/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/esp-32-lora-alle-seriellen-schnittstellen-nutzen. Die Verwendung von serial2 löst das Problem.

Mit dem Logik-Analyser habe ich mir mal das gelieferte Signal angesehen un kann die Angaben der o.g. chinesischen Web-Seite bestätigen. Alle 500ms wird ein Werte-Paket mit \xbb\xaa\x01 als Starts Sequenz  gesendet.


Wenn ich keinen Weg finde nach den drei Start-Zeichen zu suchen, so wie in Python, dann ist das hier ein Ansatz https://stackoverflow.com/questions/33662818/arduino-serial-read-and-parse-hex.

Nah dem ich die erwarteten Daten auf serial2 des ESP32 nicht erhalten habe, habe ich mal SoftwareSerial ausprobiert. Siehe da swSer.begin(115200, 18, 19, SWSERIAL_8N1, false, 95, 11);
hat auf Anhieb geklappt.

23:16:39.369 ->  <Arduino is ready>
23:16:40.022 -> This just in ... BB
23:16:40.022 -> This just in ... AA
23:16:40.057 -> This just in ... 1
23:16:40.090 -> This just in ... 14
23:16:40.090 -> This just in ... 5
23:16:40.124 -> This just in ... 7F
23:16:40.492 -> This just in ... BB
23:16:40.526 -> This just in ... AA
23:16:40.560 -> This just in ... 1
23:16:40.560 -> This just in ... 59
23:16:40.594 -> This just in ... 3
23:16:40.627 -> This just in ... C2

Nun kann es weitergehen. Erste Code-Schnipsel funktionieren und liefern Daten. Es gibt immer mahl wieder Lücken in der Werteverarbeitung. Grund??

Mittwoch, 18. März 2015

AirPlay auf dem Raspberry Pi

Nach dem ich über Weihnachten Amazon Prime Instant Video getestet habe, wollte ich wissen ob ich den kleinen Raspberry als AirPlay Receiver verwenden kann?
Ich habe Raspbmc verwendet. Ursprünglich wollte ich rplay verwenden. Leider hat das mit dem Key für die Beta-Version nicht geklappt.
Zur Installation von Raspbmc bin ich der Anleitung auf der Projekt-Webseite für die OS X gefolgt:
Ich habe eine 4 GB Class 4 SD Karte verwendet die ich noch Zuhause hatte. Nach Abschluss der Installation, diese hat ca. 20 min. gedauert, zeigt sich Raspbmc mit einer schicken grafischen Oberfläche.
AirPlay muss nun noch aktiviert werden. Das geschieht unter
System > Network > “Allow XBMC to receive AirPlay content" 
Ein erster Test mit Arte vom iPad hat auf Anhieb funktioniert.
Amazon Instant Video hat leider eine Fehlermeldung gebracht. Das liegt wohl am DRM. Sowie ich dafür eine Lösung gefunden habe aktualisiere ich die Seite hier. Schade.

Sonntag, 15. März 2015

Wassermelder mit SMS Benachrichtigung über RWE SmartHome

Nach dem Wasserschaden im Keller soll ein Wasseralarm per SMS auf dem Mobiltelefon ausgelöst werden.

Die REW SmartHome Zentrale kann bei einem Alarm eine e-Mail versenden. Diese Funktion kostet einmalig knapp 20€. Darin enthalten sind 20 SMS. Weitere 100 kosten dann jeweils 14,95€.
Das geht auch kostenlos. Allerdings nur über Umwege.


Was habe ich:
- Einen Mail App in der SmartHome Zentrale
- Einen Mail Account bei Google-Mail, Kalender und Drive
- Einen Wassermelder

- Einen Tür und Fenster Sensor

Ablauf:
Die Zentrale sendet eine Mail an die Adresse bei Gmail. In Google-Drive gibt es ein Script das jede Minute nach einer bestimmten Mail schaut. Wenn diese erkannt wird, so wird ein neuer Kalendereintrag erzeugt. Dieser wiederum löst die SMS aus. Klingt kompliziert, ist es auch. Dafür ohne weiter Kosten;-)


Umsetzung:
Die Hardware, Wassermelder und RWE Tür und Fenster Sensor
Ich habe bei Amazon den Wassermelder "Rev Ritter 0023440 Wassermelder MX 80" für knappe 16€ gekauft. Dieser hat einen Alarmausgang. Damit wird ein umgebauter Tür- und Fenstersensor der RWE SmartHome Zentrale angesteuert.
Hier der Anschluss am Alarm-Ausgang des Wassermelders:

Die beiden Adern habe ich durch das Gehäuse und an der Unterseite herausgeführt. So musste ich kein Loch in das Gehäuse bohren. Erleichtert auch den Garantiefall.
Als nächsten habe ich den RWE Tür und Fenster Sensor umgebaut. Im inneren ist ein Reed-Kontakt. An diesen werden zwei Kabel angelötet die vom oben gezeigten Alarmausgang des Wassermelders den Reed-Kontakt überbrücken.

Die beiden Pfeile zeigen die Stelle an denen die Kabel angelötet werden.
Da ich auch den Fenstersensor nicht mit einer zusätzlichen Bohrung versehen wollte habe ich die Kabel durch den kleinen Stern auf der Vorderseite geführt.
Der Kabelbinder dient zur Zugentlastung.
Hier die fertige Konstruktion:
Und hier das ganze an der Wand montiert:
Die Software
Nach dem nun die Technik fertig montiert ist muss der Tür und Fenster Sensor in die RWE Steuerung eingebunden werden und ein Ereignisprofil erstellt werden.
Der Fenster Sensor setzt eine Zustandsvariable auf JA.
Diese wird in einem Ereignisprofil abgefragt und führt zu einer e-Mail.
Nun fehlt noch die SMS Benachrichtigung. Dazu gibt es hier eine gute Anleitung und ein Google Tabellen Dokument zum herunterladen. Das darin enthalten Script muss angepasst werden. Das liegt an der inflexiblen RWE e-Mail Benachrichtigung. Hier lässt sich nämlich die Betreff-Zeile nicht anpassen. Die verschickte Mail enthält zusätzlich HTML-Zeichen die in der SMS auch nicht schön sind. Als Label habe ich in Gmail „SMS“ verwendet.
Eingehenden Mails wird mit einem Filter das Label SMS zugewiesen. Hier das Setup:


Das Script sucht also alle Mails mit diesem Label SMS und erzeugt einen Termin dafür. Zusätzlich wird eine SMS Benachrichtigung für den Termin gesetzt und in Gmail das Label der Mail entfernt.
Hier die angepasste Funktion:
Damit das Script regelmäßig ausgeführt wird muss noch ein minütlicher Träger unter „Ressourcen“ -> „Träger des aktuellen Projektes“ gesetzt werden.
So sieht ein Termin im Kalender dann aus:
Die SMS auf dem iPhone sieht dann so aus:

Die grosse Frage an dieser Lösung ist, wie zuverlässig Google die Kalenderbenachrichtigung per SMS verschickt. Die ersten Tests mit einzelnen Benachrichtigungen am Tag haben bestens funktioniert. Zwischen auftreten des Alarms und Eingang der SMS sind nicht mehr als 2 min. vergangen. Die e-Mail gibt es ja auch noch und wenn ich zuhause bin macht der Wassermelder mit 85 db auch ordentlich krach.