Haussteuerung - Backup/Restore der Log-Datenbank (MariaDB)
_________________________________________________________
BACKUP der Datenbank einrichten
_________________________________________________________
1. Script backup.sh anlegen
#!/bin/bash
#
# dieses Skript kann man beliebig oft ausführen
#
# Anzahl der Sicherungen die aufgehoben werden sollen
KEEP=3
BACKUPS=`find /volume1/Backup/DBBackup/backup -name "mysqldump-*.gz" | wc -l | sed 's/\ //g'`
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 /volume1/Backup/DBBackup/mysqldump-*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
DATE=`date +%Y%m%d%H%M%S`
rm -f /volume1/Backup/DBBackup/.mysqldump-${DATE}.gz_INPROGRESS
/usr/syno/mysql/bin/mysqldump --opt -uroot -phomer_2009 --all-databases | gzip -c -9 > /volume1/Backup/DBBackup/.mysqldump-${DATE}.gz_INPROGRESS
mv -f /volume1/Backup/DBBackup/.mysqldump-${DATE}.gz_INPROGRESS /volume1/Backup/DBBackup/mysqldump-${DATE}.gz
exit 0
2. anpassen /etc/crontab
# Jeden Tag um 5:00 h ausführen
0 5 * * * root sh /volume1/Backup/DBBackup/backup.sh
3. restart cron
synoservicecfg --restart crond
_________________________________________________________
tägliches CLEANUP der Datenbank
________________________________________________________
Da es einige Aktoren/Sensoren gibt, die sehr gesprächig sind, wo ich es bis aber zeitlich nicht geschafft habe, das in FHEM mal anzupassen, war es notwendig dafür zu sorgen, dass die Datenbank nicht so schnell ins unermessliche wächst. Die einfachste Methode dafür - einfach einmal täglich unbenutze Logeinträge per SQL zu löschen.
1. Scheduler einschalten
Dazu in etc/mysql/my.cnf unter mysqld folgendes eintragen:
event_scheduler = on
Danach Restart der DB: /usr/share/mysql/mysql.server restart
2. über phpmyadmin ein cleanup Event erstellen
CREATE EVENT cleanup_fhem
ON SCHEDULE EVERY 1 DAY
DO
delete from history where device like 'iPhone%' or device like 'iphone%' or device like 'HK.Wasch%' or device like 'st_anwe%' or (device like '%Sauna%' and device not like '%Saunag%') or device like 'HMLAN%' or device like 'E_WS%' or device like 'WS1%' or device like 'Weihna%' or device like 'Action%' or device like 'FSB14%' or device like 'Fenster%' or device like 'HM_%' or device like 'HR%' or device like 'Lampe%' or device like 'Mac%' or device like 'Stehl%' or (device = 'Zisterne' and reading <> 'level') or device like 'DS18B20%' or device = 'CCU' or device = 'CUL1' or device = 'CUL_0' or device like 'TC_TWI%' or device = 'fronthem' or device like 'TCM%' or device like 'EnO%' or device like 'Stern%' or device like '%Wasch%' or (device like 'DS2423%' and event like 'counters.B%') or device like 'Auto_Raff%' or device like 'Securasp%' or device = 'global' or device = 'OWSERVER' or device like 'Raff%' or device like 'Rasen%' or device like '%Temp'
-> Das Script ist nicht sonderlich elegant, erfüllt aber seinen Zweck. Ihr müsst über phpadmin oder ein gescheites Analysetool einfach mal Eure Logtabelle mal analysieren und die nicht benötigten Einträge identifizieren.
________________________________________________________
MYSQL - Log File für cron jobs einrichten:
________________________________________________________
mysql -u root -p fhem
SHOW PROCESSLIST\G
Datei öffnen: /etc/syslog-ng/syslog-ng.conf
folgende Zeilen hinzufügen:
destination cron { file("/var/log/cron.log"); };
filter f_cron { facility(cron); };
log { source(src); filter(f_cron); destination(cron); };
________________________________________________________
Tuning der MariaDB
________________________________________________________
in etc/mysql/my.cnf unter mysqld folgendes eintragen:
query_cache_type = 1
query_cache_limit = 256K
query_cache_min_res_unit = 2k
query_cache_size = 20M
________________________________________________________
Backup/Restore
________________________________________________________
#backup all databases in one file (eventually add the option --add-locks):
mysqldump -u username -p -–all-databases > file.sql
#backup all databases in one gzipped file:
mysqldump -u username -p -–all-databases | gzip > file.sql.gz
#restore all databases:
mysql -u username -p < file.sql
fistandantilus am 02. Januar 17
|
Permalink
|
0 Kommentare
|
kommentieren
Philips Lumea for Men TT3003/11
Mit den Haaren ist das ja so eine Sache, der eine mag sie, der andere nicht. Ich jedenfalls will die Dinger zumindest auf der Brust, in den Achseln und im Intimbereich loswerden.
Kaum hat man sich rasiert, stachelt es schon wieder echt nervig. Waxing hab ich auch probiert, aber außer Schmerzen, Hautirritationen und eingewachsenen Haaren hat das nichts gebracht. Klar, es war auf jeden Fall länger Ruhe, als beim Rasieren, aber angesichts der Nachteile auch keine Dauerlösung. Bliebe noch Lasern. Als ich mich dann mal bei den Studios so umgehört hatte und auch die Preise pro Sitzung in Erfahrung gebracht hatte, war das Thema ganz schnell gestorben und ich hatte mich schon mit dem Rasierer abgefunden. Bis ich vor Kurzem mal wieder so angenervt war, dass ich mich erneut mit der Thematik auseinandergesetzt habe und über die mobilen Haarentfernungssysteme für den Hausgebrauch - sogenannte IPL Laser - gestolpert bin. Nach einigen Recherchen habe ich mich dazu entschlossen, das Geld in einen Philips Lumea for Men TT3003/11 zu investieren.

Das Gerät wird zusammen mit einem Bodygroomer von Philips geliefert, der ansich schon eine sehr gute Investition ist. Ein elektrischer Nass-/Trockenrasier für den ganzen Körper. Bevor man mit der Laserbehandlung beginnt, sollten die entsprechenden Stellen vorher nochmal rasiert werden. Der Groomer leistet hervorragende Arbeit. Die Form des Scherkopfes eigenet sich sehr gut für jegliche Körperregion und hinterlässt ein sehr gutes Endergebnis. Hat man die Vorarbeit geleistet, kann der TT3003 zum Einsatz kommen. Das Gerät erinnert ein wenig an einen Fön und liegt sehr gut in der Hand. Allerdings wiegt es auch ein paar Gramm, was mich persönlich aber nicht behindert oder stört.
Die Bedienung ist einfach. Es gib einen Ein-/Ausschalter, einen Wahlschalter für die Intensität der Lichtblitze und den "Feuer" Knopf zum Auslösen des Lasers. Für die Auswahl der Intensität liegt eine Karte bei, der man die empfohlene Stufe entnehmen kann. Ich habe mit 4 begonnen, jetzt aber auf 5 umgestellt, ohne Nebenwirkungen.
Zum Beginnen muss der Laserkopf leicht auf die Haut aufgedrückt werden, da als Sicherheitsmechanismus dort noch ein Schalter verbaut ist, um zu verhintern, dass man direkt ins Licht schaut. Übt man den richtigen Druck aus, löst das Gerät den Lichtblitz aus. In meinem Fall verspüre ich dabei einen leichten Stich, was daher rührt, das die Haarwurzeln durch den Laser ja erhitzt werden. Mit leichten Überlappungen verfährt man so bei dem gesamten zu behandelnden Bereich. Die bei manchen bemängelte Akkuleistung und lange Aufladezeit war für mich kein Problem, ich kann meine "Problem"-Stellen mit einer Akkuladung behandeln.
Jetzt zum Wichtigsten, dem Ergebnis. Bereits nach der ersten Behandlung konnte ich einen merkbar verlangsamten Haarwuchs feststellen und insbesondere im Bereich der Achseln sogar fast gar keinen mehr. Nach aktuell 3 Anwendungen bin ich zwar noch nicht haarfrei, allerdings hat das Gerät die wöchentlichen Rasur-Rituale um ein vielfaches vereinfacht und verkürzt. Wenn es doch noch irgendwo stachelt, wird kurz der Bodygroomer gezückt und wieder für glatte Haut gesorgt und spätestens bei der nächsten Behandlung erwischt es wieder ein paar Haare mehr, denen zumindest vorübergehend der Garaus gemacht wird.
Dass es wahrscheinlich keine dauerhafte Haarentfernung ist weiß ich, aber solange es bei dem aktuell sehr geringen Aufwand bleibt, bin ich mehr als zufrieden. Für mich hat sich die Anschaffung gelohnt!
Noch als Hinweis, das Gerät funktioniert am besten bei dunklen Haaren. Blonde, graue oder rote Haare sprechen nicht auf die Wellenlänge des Lasers an!
fistandantilus am 02. Januar 17
|
Permalink
|
0 Kommentare
|
kommentieren
Haussteuerung - FHEM und instabiler Eltako Bus
Während die Heizungssteuerung sehr stabil läuft, hatte ich mit dem Eltako Bus immer mal wieder Probleme. Merkbar wurde das meistens erst, wenn man versucht hat im OG irgendwo das Licht ein- oder auszuschalten. In diesen Fällen war die schnellste Lösung der Gang zum Schaltschrank und kurz die Sicherung des Eltako Busses ausgeschaltet. Für den WAF (Woman Acceptance Factor) natürlich nicht unbedingt hilfreich.
Aber zum Glück gibt es mit dem FHEM Forum eine schier unendliche Quelle hilfreichen Wissens. Auf der Suche nach meinem Problem bin ich auf einen ähnlichen Fall gestoßen, der die Instabilitäten auf die fehlende Fehlerbehandlung im 00_TCM.pm Modul zurückführte. Da das alles plausibel klang habe ich die Änderungen ebenfalls implementiert:
Im Write-Teil ganz am Ende:
...
Log3 $name, 5, "TCM $name sent ESP: $bstring";
DevIo_SimpleWrite($hash, $bstring, 1);
# next commands will be sent with a delay
usleep(int(AttrVal($name, "sendInterval", 100)) * 1000);
my $po = $hash->{USBDev};
my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
my $ClearedErrorFlags = $po->reset_error;
}
im Read-Teil ganz am Ende:
...
}
$hash->{PARTIAL} = $data;
my $po = $hash->{USBDev};
my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags) = $po->status;
my $ClearedErrorFlags = $po->reset_error;
}
Langzeiterfahrungen poste ist später vielleicht nochmal. Vorerst hatte ich seit den Änderungen keinen Ausfall mehr, was schon sehr positiv ist. Offen ist, wo überhaupt die Fehler herkommen und wie man sie ggf. verhindern/reduzieren kann.
Für alle zukünftigen FHEM Updates müsst Ihr jetzt daran denken, die Änderungen immer wieder im 00_TCM.pm nachzuziehen, falls die nicht irgendwann standardmässig sowieso schon implementiert werden.
Nachtrag vom 02.01.2017: Seit der Umsetzung, die jetzt eine reichliche Woche zurückliegt, läuft das System erfreulicherweise äußerst stabil - Null Aussetzer - der Haussegen ist gerettet ;)
fistandantilus am 29. Dezember 16
|
Permalink
|
0 Kommentare
|
kommentieren
Haussteuerung - Waschmaschine fertig
Hier kommen wir jetzt mal wieder zu einem weiteren Beispiel der Kategorie nicht nötig aber nützlich :)
Auf der Suche nach Dingen die man automatisieren kann, bin ich auch irgendwann mal auf die Waschmaschine gekommen. Auch hier wird sich der skeptische Leser sicher wieder fragen - was soll das? Um es kurz zu machen geht es nur darum, ein Feedback zu bekommen, wenn der Waschvorgang abgeschlossen ist. Jedem ist es sicher schonmal passiert, dass er vergessen hat, die Wäsche aufzuhängen, weil er einfach nicht mehr daran gedacht hat, dass er die Waschmaschine angestellt hatte.
Da meine Waschmaschine keinen Netzwerkanschluss oder irgendeine andere Schnittstelle hat (gibt es überhaupt Geräte?), musste ein anderer Ansatz her. Die einfachste Lösung ist den Stromverbrauch zu monitoren. Damit ich das auch kann, verwende ich einen Homematic Funk-Schaltaktor 1fach mit Leistungsmessung.
Die Funktionsweise der Lösung ist recht einfach:
- steigt der Verbrauch auf > 30 Watt, was sofort eintritt, wenn die Trommel losdreht, ist das ein Zeichen dafür, dass die Waschmaschine läuft
- sinkt der Verbrauch danach für wenigstens 5 min unter 9Watt, gehe ich davon aus, dass die Waschmaschine fertig ist und sende eine Pushnachricht ans Handy, sowie gebe auch aktustisch eine Rückmeldung
- 15 min nachdem die Fertigmeldung kam, wird dann auch der Aktor und somit die Waschmaschine komplett ausgeschaltet
Und damit Ihr das Ganze jetzt noch Programmtechnisch nachvollziehen könnt, ist hier der Code dazu:
define HK.Waschmaschine CUL_HM 38B715
attr HK.Waschmaschine IODev CUL1
attr HK.Waschmaschine IOgrp CCU:CUL1
attr HK.Waschmaschine actCycle 000:10
attr HK.Waschmaschine actStatus alive
attr HK.Waschmaschine autoReadReg 4_reqStatus
attr HK.Waschmaschine expert 2_full
attr HK.Waschmaschine firmware 1.6
attr HK.Waschmaschine group 2: Geräte
attr HK.Waschmaschine model HM-ES-PMSw1-Pl
attr HK.Waschmaschine room UG.Heizungskeller
attr HK.Waschmaschine serialNr MEQ0170626
attr HK.Waschmaschine subType powerMeter
attr HK.Waschmaschine webCmd getConfig:clear msgEvents
define HK.Waschmaschine_Sw CUL_HM 38B71501
attr HK.Waschmaschine_Sw devStateIcon on:black_Steckdose.on off:black_Steckdose.off
attr HK.Waschmaschine_Sw event-on-change-reading state
attr HK.Waschmaschine_Sw group 2: Geräte
attr HK.Waschmaschine_Sw model HM-ES-PMSw1-Pl
attr HK.Waschmaschine_Sw peerIDs 00000000,
attr HK.Waschmaschine_Sw room UG.Heizungskeller
attr HK.Waschmaschine_Sw subType switch
attr HK.Waschmaschine_Sw webCmd statusRequest:toggle:on:off
define HK.Waschmaschine_Pwr CUL_HM 38B71502
attr HK.Waschmaschine_Pwr event-on-change-reading current,power
attr HK.Waschmaschine_Pwr model HM-ES-PMSw1-Pl
define HK.Waschmaschine_SenPwr CUL_HM 38B71503
attr HK.Waschmaschine_SenPwr event-on-change-reading none
attr HK.Waschmaschine_SenPwr model HM-ES-PMSw1-Pl
attr HK.Waschmaschine_SenPwr peerIDs 00000000,
define HK.Waschmaschine_SenI CUL_HM 38B71504
attr HK.Waschmaschine_SenI event-on-change-reading none
attr HK.Waschmaschine_SenI model HM-ES-PMSw1-Pl
attr HK.Waschmaschine_SenI peerIDs 00000000,
define HK.Waschmaschine_SenU CUL_HM 38B71505
attr HK.Waschmaschine_SenU event-on-change-reading none
attr HK.Waschmaschine_SenU model HM-ES-PMSw1-Pl
attr HK.Waschmaschine_SenU peerIDs 00000000,
define HK.Waschmaschine_SenF CUL_HM 38B71506
attr HK.Waschmaschine_SenF event-on-change-reading none
attr HK.Waschmaschine_SenF model HM-ES-PMSw1-Pl
attr HK.Waschmaschine_SenF peerIDs 00000000,
-> Definition der Geräte
#Dummy WaschmaschineWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren
define HK.WaschmaschineWatt dummy
attr HK.WaschmaschineWatt event-on-change-reading state
attr HK.WaschmaschineWatt group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineWatt room UG.Heizungskeller
#Dummy HK.WaschmaschineWatt mit Werten versorgen
define HK.WaschmaschineWattSet notify HK.Waschmaschine_Pwr {my $power =ReadingsVal("HK.Waschmaschine_Pwr","power","");; fhem ("set HK.WaschmaschineWatt $power")}
attr HK.WaschmaschineWattSet group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineWattSet room UG.Heizungskeller
define HK.WaschmaschineBetrieb dummy
attr HK.WaschmaschineBetrieb event-on-change-reading state
attr HK.WaschmaschineBetrieb group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineBetrieb room UG.Heizungskeller
-> Definition der Dummies
define HK.WaschmaschineBetriebCheck DOIF ([HK.Waschmaschine_Pwr:power]>30) (set HK.WaschmaschineBetrieb on) \
DOELSEIF \
([HK.Waschmaschine_Pwr:power]<9) (set HK.WaschmaschineBetrieb off, set Pushover msg 'FHEM' 'Waschmaschine ist fertig', set HM_3674FE playTone 032, setstate HK.WaschmaschineAutoOff defined, trigger HK.WaschmaschineBetrieb off)
attr HK.WaschmaschineBetriebCheck event-on-change-reading state
attr HK.WaschmaschineBetriebCheck group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineBetriebCheck room UG.Heizungskeller
attr HK.WaschmaschineBetriebCheck wait 60:300
define HK.WaschmaschineAutoOff watchdog HK.WaschmaschineBetrieb:off 00:15 HK.WaschmaschineBetrieb:on {fhem("set HK.Waschmaschine_Sw off");;;;fhem("set Pushover msg 'FHEM' 'Waschmaschine wurde ausgeschaltet'")}
attr HK.WaschmaschineAutoOff group 1: Automatisierung Waschmaschine
attr HK.WaschmaschineAutoOff regexp1WontReactivate 1
attr HK.WaschmaschineAutoOff room UG.Heizungskeller
-> die Logik
fistandantilus am 22. Dezember 16
|
Permalink
|
0 Kommentare
|
kommentieren