Mittwoch, 3. April 2019

Abbau eines Medikaments

Eine kleine Simulation zum Abbau eines Medikaments im Tagesverlauf:
Annahmen:
- Einnahme um 7:00 und 14:00
- Dosis 7.5
- Halbwertszeit 19h
- Exponentieller Abbau
- Vollständige und instantane Aufnahme


Man erkennt eine Sättigung nach 3-4 Tagen.
Die Spanne in dem Bereich der Sättigung beträgt etwas 10.2, das sind 45% vom maximalen Wert.
Die Spanne ließe sich durch eine Einnahme im Abstand von 12h auf 34% minimieren, würde aber zu höheren Werten in der Nacht führen.  


Hier noch ein Zoom auf den Tagesverlauf in der Sättigung (nach 72h):

Man sieht die beiden Einnahmezeitpunkt um 7:00 und 14:00 und den langen Abfall über die Nacht.
Niedrige Werte zur Mittagspause und zur Schlafenszeit, perfekt ;-)
Alle Angaben ohne Gewähr!



Python Code:

import matplotlib.pyplot as plt
import numpy as np
import math

dose   = 7.5         # Dosis pro Tablette
lamb = 19.0 / 0.693  # Halbwertszeit -> Zeitkonstante in Stunden
hours = 144          # 5 days = 144 hours
p1 = 7               # 1. Tablette
p2 = 14             # 2. Tablette

d = np.zeros(hours)
for t in np.arange(1,hours,1):
    d[t] = d[t-1] * math.exp(-1/lamb)
    if t%24==p1 or t%24==p2:
        d[t] = d[t] + dose
   
lo = d[96+p1-1]
hi = d[96+p2]
span = hi - lo
perc = span / hi * 100
print("Spanne: ", span, " (",perc,"%)")

plt.plot( d )
#plt.plot( d[72:96+7] )
plt.xticks([0,24,48,72,96,120]
)


plt.xlabel('hours')
plt.ylabel('dose')
plt.ylim(0,25)
plt.show()



Samstag, 23. Dezember 2017

Sonoff S20 with EasyESP and OpenHAB and Alexa


I had some time and tried to make Alexa toggle the Sonoff S20 power switch that I recently bought  on Ebay for less than 20 Euro. It uses the well known ESP8266 WLAN chip. I have never tested the original firmware from Sonoff - I flashed it with EasyESP right away.

1. Flash S20 with Easy ESP Firmware 

There is a pretty good desciption that I followed:


I will not repeat everything, but just add some points. FIRST: Disconnect the 220V/110V power before opening the device and keep it disconnected also during the flashing procedure!! See the image for the pins, which were not labeled on my S20 board. Then connect VCC, RxD,TxD,GND to the same pins on your USB-Flash stick.

PINs of Sonoff S20
Now download EasyESP - I used the stable version R120. Note, that if you are on MacOS, like I am, you cannot use the provided batch file. The easiest solution for me was to use ESPTool.py. If you have python already installed,  simply enter "sudo pip install esptool" in you terminal window.

First, put the ESP into flash mode: hold the red button on the S20 board while connecting it to the USB-flash device. To write the firmware you have to first find out the name of your USB device. Look for a device named similar to /dev/tty.wchusbserialfd120. Then enter the following line: 

sudo esptool.py --port /dev/tty.wchusbserialfd120 write_flash 0x00000 ESPEasy_R120_1024.bin


Writing the firmware should only take a few seconds. Afterwards, the S20 will reboot and boot automatically into AP mode. Look for a WLAN called "ESP-0" and connect to it. It will ask for WPA password, enter "configesp". Open your browser and you will find a webpage where you can enter the SSID and password of your WLAN network. EasyESP will now try to connect - write down the IP it will display after is successfully connected. Then reboot and connect your computer to your home WLAN again. Enter the IP you just wrote down into your browser and you will get to the ESPEasy configuration webpage.
Flash USB-Programmer

See the above link on how to configure the GPIOs for your S20 in ESPEasy. After this, you should be able to switch power on/off using the button on the S20, and also using a simple web command (replace the IP with your S20 IP):


No worry if the button does not seem to work correctly - between two button presses you have to pause for about 2 seconds (I am not sure why). 

2. Configure Openhabian
Most people suggest to use an MQTT server to bind your ESPEasy device to your OpenHAB server. I found a simpler way by simply using the HTTPBinding in OpenHAB.  So, first install the HttpBinding in OpenHab, then add the following item to your default.items file:

Switch powerSwitch "Power Switch" ["Switchable"] {http=">[ON:POST:http://192.168.178.101/control?cmd=GPIO,12,1] >[OFF:POST:http://192.168.178.101/control?cmd=GPIO,12,0]"} 
Also add this to your default.sitemap file:

Switch item=powerSwitch label="Power Switch" 

You should now be able to switch the S20 Power Plug from OpenHab, using the OpenHAB Basic UI.

3. Bind to Alexa

There is an official OpenHAB-Skill for Alexa - however, I was not able to make it work. Instead I used the Hue-emulation service that comes with OpenHAB. Simply set the["Switchable"] tag on your item and it will appear in the Alexa app,  after you search for new devices for your Smart Home. You may now use an Alexa command to switch on your power plug.





Samstag, 10. Dezember 2016

Lautsprecherbau "Visaton Portrait" - Teil #2

Für die Weiche wird sowohl in die Schallwand eine Vertiefung gefräst (ganze Platine, 2mm) als auch in die Rückwand (nur für die Kondensatoren, 5mm). Die Platine wird auf der Schallwand mit viel Heißkleber befestigt, damit später nichts schnarrt. Die einzelnen Bauteile habe ich auch noch zusätzlich mit Heißkleber fixiert.


Um die Boxen aufzuhängen werden zwei Löcher in die Rückwand gebohrt. Wie die Löcher abgedichtet werden wurde von K&T nicht weiter beschrieben. In einigen Forenbeiträgen wird erwähnt, dass eine kleine Undichtigkeit der Box nicht weiter schadet. Trotzdem habe ich mir eine einfache Lösung ausgedacht (natürlich nur um weiter mit meiner neuen Oberfräse spielen zu können): Einfach in einen Holzknopf (ca. 15mm dick) ein Vertiefung fräsen, die ca. 10mm tief und etwas größer ist als ein Schraubenkopf. Diesen Knopf dann von innen auf das Loch der Box leimen. Die Box ist dicht und die Schraube hat im Loch eine Kante an der sie sich festklammern kann. 


Bespannt haben wir die Boxen erstmal mit weißem Boxenstoff. Von dem Akt der Bespannung gibt es leider keine Bilder - wir brauchten alle vier Hände um den Stoff einigermaßen gerade auf die Latten zu tackern. Neben den Fräsarbeiten sicherlich der anspruchsvollste Teil des Projektes. Vor dem Bespannen wurde der Rahmen noch schwarz gesprüht, damit sich der Untergrund nicht vom Rest der Box unterscheidet und durchschimmert. Danke Nadine!


Lautsprecherbau "Visaton Portrait" - Teil #1


Für unser neues Wohnzimmer suchte ich Lautsprecher die einerseits einen sehr guten Klang haben, andererseits möglichst keine Stellfläche udn vor allem keine Angriffsfläche für unsere Kinder bieten.

Die Zeitschrift Klang & Ton veröffentlichte 2005 das Projekt "Visaton Protrait".
Die Idee einen Lautsprecher komplett unsichtbar als Bilderrahmen getarnt zu bauen fand ich sehr fasziniered. Alle Materialien und die Ausgabe des Heftes sind hier zu finden.

Die Leisten und die Abstandshalter werden direkt auf die Rückwand geklebt. Die mittleren Abstandshalter der unteren Reihe habe ich etwas versetzt, damit die Schrauben später nicht in der Aussparung für den Lautsprecher sitzen.








Die Öffnungen für die beiden Lautsprecher werden mit der Oberfräse gefräst. Im Prinzip ginge das Freihand, da die Schallwand später unter der Abdeckung verschwindet. Sauberer geht es mit einem selbstgebauten Fräszirkel: die Oberfräse auf eine Latte schrauben (der Fräser guckt durch ein Loch in der Latte) und im korrekten Abstand zum Fräser (Radius des zu fräsenden Loches) eine Achse in Form einer Schraube anbringen. Diese Schraube geht dann durch ein Loch im Mittelpunkt des zu fräsenden Kreises in der Schallwand. Beim Herstellen des Fräszirkels hilft die Oberfräse - toll: eine Rekursion.

In der Schallwand zuerst die Vertiefung (großer Kreis) fräsen, dann den inneren Kreis ganz durch die Schallwand fräsen - andersherum geht es nicht weil sonst kein Zentrierloch mehr da ist ;-).
In die Rückwand wird zusätzlich eine 5mm Vertiefung für den hinteren Teil des Mitteltöners gefräst. Auf dem Bild sieht man noch das Loch für den Fräszirkel. Diese Loch wird am Ende mit einem Klecks Holzspachtel einfach wieder verschlossen, damit die Box dicht ist. 

Die Vertiefung für den Hochtöner wird freihand oder über einen Parallelanschlag gefräst. Der Runde Fräsekopf gibt automatisch abgerundete Ecken.

 

Einbau eines Autoradios in den VW T5.1 Caravelle


Da die meisten Beiträge zu diesem Thema eher verwirren als helfen, hier kurz eine einfache Lösung die definitiv funktioniert. In diesem Fall wurde das Pioneer MVH-AV280BT in einem T5.1 Caravelle von 2007 verbaut.

Zum Anschluß braucht ihr einen VW zu DIN Adapter wie diesen:
https://www.amazon.de/dp/B01CBT5D2M/ref=pe_386171_38075861_TE_item
Dort ist die Phantomspeisung für die Radio-Antenne gleich dabei.

Ein Problem bleibt: An den Steckern für das Original VW-Radio gibt es leider kein Zündungsplus, d.h. das neue Radio merkt nicht, in welcher Position der Zündschlüssel ist.
Weiß der Himmel was VW sich dabei gedacht hat, wahrscheinlich wollen sie einfach ihre überteuerten Radios verkaufen. D.h. ihr müsst das rote Kabel des Radios an irgendeiner anderen Stelle im Auto mit dem Zündungssignal verbinden.

Das Zündungsplus-Signal könnt ihr zum Beispiel am oberen Sicherungskasten direkt unter dem Getränkehalter abgreifen. Die Position der korrekten Sicherung findet ihr hier:
http://www.t5-wiki.de/wiki/Sicherungshalter
SB19 wird dort als "Radio-Dauerplus" bezeichnet, aber keine Sorge, es macht genau das was ihr wollt. Es lässt sogar das Radio laufen wenn der Motor abgestellt wird - solange bis der Schlüssel abgezogen wird. So kann man z.B. zu Ende telefonieren ohne den Motor laufen zu lassen, auch wenn man angekommen ist.

Ihr habt drei Möglichkeiten SB19 abzugreifen:
  1. Den Sicherungskasten ausbauen (war mir zu aufwändig).
  2. So einen Adapter benutzn: https://www.amazon.de/Kram-mini-Flachsicherungsadapter-Spannungsabgriff-Flachsicherungen/dp/B00274EH6K (hatte ich gerade nicht da ;-)
  3. Mit einem Dremel ein Kabel direkt an eine Mini-Flachsicherung löten und mit Heißkleber isolieren.
Hier sind ein paar Fotos meiner Bastellösung.
Erst die Seite der Flachsicherung vorsichtig mit dem Dremel abschleifen bis der Kontakt blank liegt:



Dann ein Kabel anlöten:

Mit Heißkleber isolieren, und überschüßigen Kleber mit dem Dremel wieder entfernen:

Beim Einbau darauf achten, dass das Signal NACH der Sicherung abgegriffen wird, das Kabel muss also den unteren Kontakt abgreifen. Im Zweifel mit dem Multimeter nachmessen, an welchem Kontakt (ohne eingebaute Sicherung) Spannung liegt und dann den anderen benutzen:


Das fertig eingebaute Radio:

Sonntag, 18. Oktober 2015

Import 1Password 3 or 4 data to KeepPass


I am a long term user of 1Password, even though I never upgraded from 1Password 3 due to the ridiculous price. So it was time to move to KeePass 2.

Hooray, Password 3 is able to export all entries into a txt file, separated by tabs which should make a nice CSV-File. But hold, the file is encoded ambiguous. For instance, the "note" field is not enclosed in quotation marks and exhibits a mix of escaped and not escaped new lines. The general CSV importer from KeePass is great, but it was not able to resolve this problem.

Next try: moving all data from 1Password 3 to a trial version of 1Password 4, since 1Password 4 claims to be able to export to CSV. And yes, it does - but only for the login entries! All other categories are not exported.

So to be clear: neither 1Password 3 nor 1Password 4 is able to export its complete data in a reasonable format. New users be aware. 

So it's time to pull out some serious tools here.

1. Export from 1Password 4 to 1PIF-File. This is JSON and contains all data.



2. Convert from JSON to well formed CSV using a little python script.
Before running this script, change the filenames. Also note, that only 5 fields are exported: title, username, password, url and note. If you need more, you have to extend the script. Here is the code:
 
# Tested with Python 2.7

import json
from pprint import pprint

 
f = open("E:\\data.test.1pif",'r')
out = open("E:\\1p.csv",'w')

for line in f:
    
    username = ""
    title = ""
    password = ""
    location = ""   
    notes = ""
    
    #-- Skip lines with '***'    
    if line[0:3] == '***':
        continue
 
    #-- Parse line
    data = json.loads(line);       
    #pprint(data);
    
    print "------------------------"
    title = data['title']     
    location = data['location']     
    
    if 'notesPlain' in  data['secureContents']:
        notes = data['secureContents']['notesPlain']

    if 'fields' in data['secureContents']:
        
        for field in  data['secureContents']['fields']:
            if 'designation' in field and field['designation']=='password':
                password = field['value']
            if 'designation' in field and field['designation']=='username':
                username = field['value']
    
    # todo: escape "," 
    notes = notes.replace("\n","\\n")
    
    newline =  title + "," + username + "," + password + "," + location + ",\"" + notes + "\"\n" 
    print(newline)
    out.write(newline.encode('utf-8'))               

f.close()
out.close() 
 
 
3. Import the csv file using the KeePass 2 "General CSV" import filter. 
Just use the default setting, in the third tab you have to change the order of the fields to match the CSV file.
 
 

Samstag, 19. November 2011

FHEM auf der Fritzbox mit CUL und MacOS

Die CUL ist ein kleiner USB-Stick von busware der mit Geräten kommunizieren kann, die auf 868 MHz senden. Der CUL-Stick kommt ungeflashed - d.h. wir müssen die spezielle FHEM Firmware erst auf den Stick bringen. Laut FHEM-FAQ sollte alles notwendige dazu auf der Fritzbox installiert sein. Das CULflash Skript gibt es tatsächlich - aber das Programm "dfu-programmer" wird nicht gefunden:


CULflash CUL CUL_V3
sh: dfu-programmer: not found


Also versuchen wir auf einem anderen Rechner zu flashen, in meinem Fall MacOS. Das benötigte Program "dfu-programmer" bekommt man am einfachsten über Mac Ports:

sudo port selfupdate
sudo port install dfu-programmer


Die Firmware hier laden (z.B. als GNU tarball und entpacken):


http://culfw.svn.sourceforge.net/viewvc/culfw/trunk/culfw/Devices/CUL/


Danach CUL in einen Mac USB-Port stecken und dann im Terminal:


dfu-programmer atmega32u4 erase
dfu-programmer atmega32u4 flash CUL_V3.hex
dfu-programmer atmega32u4 reset



Danach CUL wieder in den USB-Port der Fritzbox. Die CUL-LED sollte jetzt blinken und auf der FHEM-Webseite als "Initialized" erscheinen. Danach Geduld - es dauert ein paar Minuten bis alle Geräte/Sensoren erkannt werden.


Ich habe vor einem Jahr bei Conrad acht S555TH Temperatursensoren für 5,- Euro das Stück erstanden - die ersten 4 hat FHEM erkannt und eingetragen.