29.7.22

Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können.

Eine Google-Suche ergab, dass man dafür den Support (support@ecoflow.com) anschreiben muss, der neben der Seriennummer der Powerstation auch die Email-Adresse benötigt, mit der man über die App verbunden ist (ohne Registrierung in der App geht es wohl nicht?).


Der 1st level Support antwortet immer ziemlich schnell, gibt die Daten an die Entwickler weiter und nach 2-3 Tagen erhält man den Zugang für die API.

Der Code, um die Ecoflow als thing zu definieren, sieht bei mir wie folgt aus:

UID: http:url:42fde8xxxx
label: Ecoflow
thingTypeUID: http:url
configuration:
  authMode: BASIC
  headers:
    - Content-Type=application/json
    - appKey=[vom Support mitgeteilt]
    - secretKey=[vom Support mitgeteilt]
  ignoreSSLErrors: false
  baseURL: https://api.ecoflow.com/iot-service/open/api/device/queryDeviceQuota?sn=[Seriennummer] 
 delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048

Als Channel habe ich testweise erst einmal die verbleibende Zeit definiert:

channels:
- id: ecoremaintime
    channelTypeUID: http:string
    label: Verbliebene Zeit
    description: null
    configuration:
      stateTransformation: JSONPATH:$.data.remainTime


So bekomme ich dort die verbliebenen Minuten, die die Powerstation noch voraussichtlich laufen kann.


29.4.22

Openhab Problem mit Homematic

 Nach vielen Versuchen habe ich des Rätsels Lösung gefunden in den Untiefen des Internets.


Ich hatte der Maschine, auf der OpenHab läuft, eine 2. IP Adresse zugeteilt. Die Folge war allerdings zeitlich versetzt, so dass ich dieses nicht als die Ursache erkannte, dass die Homematic Geräte nicht mehr gesteuert werden konnten.


Nun die Lösung:


Eintragen der Callback IP Adresse in der CCU Bridge!

12.6.20

Tasmota - Wemos D1 nicht mehr erreichbar

Mein Problem:

Ich hatte falsche Zugangsdaten für das WLAN eingetragen.
Doch statt nach x fehlgeschlagenen Versuchen einen AP anzubieten, ist diese Funktion in den neueren Versionen standardmäßig deaktiviert.
Stattdessen versucht das Modul unendliche Male eine Verbindung herzustellen.

Beim Neu-Flashen blieben die Einstellungen auch erhalten.

Was half:

Im Quellcode des Tasmota Repositorys der Datei "my_user_config.h"  ein paar Zeilen verändern und neu flashen.

Ändern des Standards
Alt:
#define CFG_HOLDER             4617              // [Reset 1] Change this value (max 32000) to load SECTION1 configuration parameters to flash

Neu:
#define CFG_HOLDER            5000              // [Reset 1] Change this value (max 32000) to load SECTION1 configuration parameters to flash
auf eine andere Zahl.


Alt:
#define WIFI_CONFIG_TOOL       WIFI_RETRY        // [WifiConfig] Default tool if wifi fails to connect (default option: 4 - WIFI_RETRY)
                                                 // (WIFI_RESTART, WIFI_MANAGER, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY)
                                                 // The configuration can be changed after first setup using WifiConfig 0, 2, 4, 5, 6 and 7.

Neu:
#define WIFI_CONFIG_TOOL       WIFI_MANAGER        // [WifiConfig] Default tool if wifi fails to connect (default option: 4 - WIFI_RETRY)
                                                 // (WIFI_RESTART, WIFI_MANAGER, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY)
                                                 // The configuration can be changed after first setup using WifiConfig 0, 2, 4, 5, 6 and 7.




25.5.20

Virtualbox -> VMWare Hypervisor Guest Additions deinstallieren

Der Plan war, ein Linux Image, welches unter Virtualbox erstellt wurde, im Hypervisor weiterzuverwenden.
Doch scheinbar wollte der Hypervisor nicht so richtig mit den zuvor installierten GuestAdditions arbeiten.
Diese Erweiterungen waren im Kernel verwurstet.

Lösung:
Im Linux-Image liegt das Verzeichnis /opt/{VBoxGuestAdditionsxxx}

Einfach die uninstall.sh ausführen.

Evtl. noch /etc/X11/xorg.conf löschen.

12.2.20

Server mit ISCPConfig - PHP bearbeiten mit Netbeans

PHP7 als FPM Modul -> Rechte  pro Webseite verschieden

Pfad:
/var/www/clients/client0/webxx//


Neuer Nutzer für netbeans
adduser netbeansuser
Gruppe hinzufügen
usermod -aG client0 netbeansuser
html Verzeichnis schreibbar machen für Gruppe client0
chmod -R 774 /var/www/clients/client0/webxx/web/


31.12.19

Fail2ban für Postfix

# Fail2Ban filter for postfix authentication failures
#

[INCLUDES]

before = common.conf

/etc/fail2ban/filter.d/postfix-sasl.conf

[Definition]

_daemon = (?:postfix/smtpd|postfix/submission/smtpd)

failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
             ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:Login|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
             ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed:
             ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:Login|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed:
             ^%(__prefix_line)swarning: (.*?)does not resolve to address <HOST>: Name or service not known$
             ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:login|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/]*={0,2})?\s*$
             ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL (?:login|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed:

# Author: Yaroslav Halchenko
Testen mit
fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/postfix-sasl.conf

/etc/fail2ban/jail.local:
[postfix-sasl]
enabled  = true
port     = smtp,ssmtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

Jails anzeigen:
fail2ban-client status

IP wieder freigeben:
fail2ban-client set sshd unbanip [IP]

Mail anpassen:
mwl -> /sendmail-common.conf
in action.d/iptables-multiport.conf:
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
<------>    /usr/local/bin/fail2ban-push.php <name> <protocol> <port> <ip>


Tabelle:
CREATE TABLE `sync_fail2ban` (
 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `hostname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `created` datetime NOT NULL,
 `name` text COLLATE utf8_unicode_ci NOT NULL,
 `protocol` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
 `port` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
 `ip` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`reversedns` text COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`),
 KEY `hostname` (`hostname`,`ip`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

PHP-Script:

#!/usr/bin/php
<?php
$name = $_SERVER["argv"][1];
$protocol = $_SERVER["argv"][2];
$port = $_SERVER["argv"][3];
if (!preg_match('/^\d{1,5}$/', $port))
$port = getservbyname($_SERVER["argv"][3], $protocol);
$ip = $_SERVER["argv"][4];
$date = date("Y-m-d H:i:s");
$hostname = gethostname();

// Verbindungsdaten einfügen | insert your database settings
$link = new mysqli("localhost", "fail2ban", "password", "fail2ban");
// Ab hier nix verändern | don’t change anything below
if ($link->connect_error) {
die("Verbindung fehlgeschlagen: " . $link->connect_error());
}
$query = "INSERT INTO sync_fail2ban (name, protocol, port, ip, created, hostname)
VALUES ('$name', '$protocol', '$port', '$ip', '$date','$hostname')";
if ($link->query($query) === TRUE ){
echo "Eintrag erfolgreich geschrieben";
} else {
echo "ERROR: " .$query . "<br>" . $link->error;
}
$link->close ();
?>


26.2.19

Mount unter Raspbian - diverse Fehler

Ich hatte auf einem RPI Ubuntu laufen mit /etc/fstab:

\\192.168.178.210\Backup /media/nas/Backup cifs username=pi,passwd=[meinPW],gid=1000,uid=1000 0 0


Ein Mounten war problemlos möglich.

Auf einem anderen RPI mit Raspbian kamen immer wieder Fehlermeldungen:

/var/log/kern.log

Unknown mount option "passwd xxx"

Umändern von passwd in password brachte auch nichts...

Google Suche fand natürlich einige Hilfen...
 
Ausprobiert z.B.

sec=ntlmv2

usw. brachte auch Fehlermeldungen
Feb 26 07:49:20 octopi kernel: [227184.735746] CIFS VFS: Send error in SessSetup = -13
Feb 26 07:49:20 octopi kernel: [227184.735785] CIFS VFS: cifs_mount failed w/return code = -13


Erst das Auslagern der credentials machte das Mounten möglich...... warum? .... grübel.... Sonderzeichen waren im PW nicht vorhanden.....

//192.168.178.210/Backup /media/nas/Backup cifs vers=1.0,credentials=/etc/.mycredentials,gid=1000,uid=1000 0 0
 .mycredentials:
username=pi
password=geheimespw



19.2.19

Netplan - mal wieder was Neues

Die Konfiguration unter Ubuntu 18 gestaltet sich mal wieder etwas anders als gewohnt.

Der Befehl netplan erwartet eine Yaml-Datei, die manchmal etwas zickig reagiert, wenn man die Einrückungen nicht besonders beachtet.

Unter /etc/netplan/50-cloud-init.yaml lässt sich diese anpassen

Beispiel mit verschiedenen Routen:
network:
  version: 2
  ethernets:
    ens160:
      addresses: [192.168.180.21/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.180.253
          metric: 100
        - to: 192.168.178.0/24
          via: 192.168.180.254
          metric: 100
        - to: 192.168.179.0/24
          via: 192.168.180.254
          metric: 100
      dhcp4: yes
      #gateway4: 192.168.180.253
      nameservers:
        addresses: [192.168.179.30,8.8.8.8]

13.2.19

SSH Zertifikats Check - One-liner

Bash-Script

#!/bin/bash
echo | openssl s_client -servername "$1" -connect "$1":443 2>/dev/null | openssl x509 -noout -issuer -dates -subject
Abspeichern z.B. als checkSSLCert.sh in /usr/bin

chmod +x /usr/bin/checkSSLCert

Aufruf

checkSSLCert [Domain]

Keys checken:

echo "--Certificate:" && openssl x509 -noout -modulus -in certificate_file && echo "--Key:" && openssl rsa -noout -modulus -in private_key


28.1.19

Pfad zu den Zertifikaten in Webmin

/etc/webmin/miniserv.conf

Dort 3 Einträge:
/etc/webmin/miniserv.conf:keyfile=/etc/letsencrypt/live/domain/privkey.pem
/etc/webmin/miniserv.conf:extracas=/etc/webmin/letsencrypt-ca.pem
/etc/webmin/miniserv.conf:certfile=/etc/letsencrypt/live/domain/cert.pem

28.12.18

Shelly 1 v3 - Erste Eindrücke

Heute kamen bei mir die Wlan Schaltaktoren Shelly 1 an.

Mein erster Eindruck:

Wow! Genau das, was ich schon lange gesucht habe.

Die Einbindung ins Wlan gelang auf Anhieb, die Weboberfläche wirkt aufgeräumt und bietet viele Funktionen, das Gerät ist richtig schön klein und das Beste ist, dass alles offen ist. Es bietet MQTT und man kann es sogar flashen.

Die nächsten Tage werde ich es ausgiebig testen und berichten.....



22.11.18

Tenvis Fittek JPT3815W-HD Webcam steuern über Linux

Live-Video:

rtsp://USER:PASSWORT@[IP der Kamera]:[PORT -> meist 554 für rstp]/11



Schwenken mit curl:
curl -H "Authorization: Basic [BASE64]" "http://[IP der Kamera]/web/cgi-bin/hi3510/ptzctrl.cgi?-step=1&-act=left&-speed=45"

act=left => links
act=right => rechts
act=up => hoch
act=down => runter

Base64:

echo -n user:password | base64
Ergebnis:dXNlcjpwYXNzd29yZA==


Snapshot:
curl -H "Authorization: Basic [BASE64]" "[IP der Kamera]/tmpfs/auto.jpg" -o test.jpg

Kommando gefunden hier

Firefox Extensions im JSON Format parsen

Ich suche ein bestimmtes Addon. Zunächst die komplette Anzeige

jq -r '.'  ~/.mozilla/firefox/xead1hks.default/extensions.json
 (Pfad zu den Extensions entsprechend anpassen)

 Alle Pfade zu den installierten Extensions ausgeben

jq -r '.addons[]| "\(.id) \(.path) \(.locales[0].name)"' ~/.mozilla/firefox/xead1hks.default/extensions.json

Suche nach einer bestimmten Extension.
Um eine Variable zu übergeben, muss diese als Argument an jq übergeben werden:
Beispiel: Suche nach Namen => $1 in Bash => $v1 in jq

found_ext=$(jq -r --arg v1 "$1" '.addons[] | select(.locales[0].name == $v1) | .path'  $extension_path)

 

 

IP-Adressen von Amazon parsen:

{
  "syncToken": "1640134401",
  "createDate": "2021-12-22-00-53-21",
  "prefixes": [
    {
      "ip_prefix": "3.5.140.0/22",
      "region": "ap-northeast-2",
      "service": "AMAZON",
      "network_border_group": "ap-northeast-2"
    },
 

wget -qO-  https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[] | .ip_prefix' -r

 

10.9.18

Tastatur - fn Taste immer aktiviert

1 statt j
2 statt k
3 statt l

Grund: Fn-Taste ist ständig aktiviert.
Das hatte ich in bei einer neu importierten virtuellen Maschine (Virtualbox).
Abhilfe:

Fn+[NUM]

23.8.18

Alle Rechner im internen Netzwerk schnell finden

Dazu arp-scan (apt install arp-scan) installieren und dann

sudo  arp-scan 192.168.178.0/24 | awk '{ print $1 }' | egrep "^[0-9]{3}" | uniq | sort -t . -k 3,3n -k 4,4n


Heraus kommen alle IP-Adressen aufsteigend sortiert.

14.8.18

exiftool auf Qnap installieren

1. Source herunterladen
https://www.sno.phy.queensu.ca/~phil/exiftool/Image-ExifTool-11.06.tar.gz
2.  Entpacke und in das Verzeichnis wechseln
3. perl Makefile.PL
4. make install


Perl ggfs. über ipkg (opkg) installieren.
Pfade der Executables:
/share/CACHEDEV1_DATA/.qpkg/Optware-NG/opt/bin/

1.8.18

c# Mehrere Datatables anlegen

List<DataTable> manytables = new List<DataTable>();

 manytables.Add(new DataTable("one"));
            manytables.Add(new DataTable("two"));
            manytables.Add(new DataTable("three"));
            string result = "";
            MessageBox.Show(manytables[0].TableName);
            foreach (DataTable table in manytables )
            {
                result += table.TableName + " "; 
            }
            MessageBox.Show("Count tables: " + manytables.Count() + "\r\n" + "Names: " + result);

26.7.18

Screen Befehl funktioniert nicht

Fehlermeldung:

/var/run/utmp: No such file or directory
Cannot find terminfo entry for 'putty'.

ls /usr/share/terminfo/x
xterm  xterm-xfree86

export TERM=xterm-xfree86

Nun gehts...

20.7.18

rclone - quick start

Neue Config anlegen
rclone config 

Dort Art wählen, z.B. sftp

Verzeichnis anlegen
rclone mkdir remote:Directory

Dateien auflisten
rclone ls remote:

Syncen
rclone sync SRC remote:Directory


Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können. ...