soncheck2 - Tasmota-Geräte ohne Webserver finden und konfigurieren

  • Hallo Tasmota-User,

    ich möchte euch heute mein Terminal-Skript vorstellen, mit dem ihr z. B. Folgendes machen könnt (Bitte auch das Update am Ende des Beitrags beachten):

    • Tasmota geflashte Geräte im selben Netz aufspüren
    • Grundeinstellungen vornehmen (An/AUS, Blinktime und Blinkcount, Stromstoßmodus (pulsetime), LED-Funktion)
    • Emulationen und Namen abrufen und verändern
    • Netzwerkeinstellungen verändern (IP, SSID, Passwort)
    • Statusinformationen abrufen


    Voraussetzungen:

    • Benötigt keinen Webserver
    • Läuft derzeit nur auf Linux (Raspberry Pi, Ubuntu, etc.), weil es die BASH benutzt
    • Zusatzprogramme: ping, grep (in der Regel vorhanden) und curl (wird nachinstalliert)
    • Läuft derzeit nicht auf virtuellen Linux-Maschinen (d. h. läuft schon, aber findet nichts, weil es nur im eigenen (Sandbox-) Netz sucht)
    • weblog 2 (Standard) muss auf den Tasmota-Geräten aktiv sein!
    • Mehrkanalgeräte (Dual, CH4) (noch) nicht vollständig unterstützt


    Installation:

    • soncheck2.zip herunterladen und im Home-Verzeichnis (oder einem Unterverzeichnis davon) entpacken
    • ein Terminal in dem Verzeichnis starten und mit dem Befehl chmod +x soncheck2.sh die Datei ausführbar machen
    • im Terminal ./soncheck2.sh eingeben und den Anweisungen am Bildschirm folgen


    Hinweise zur Benutzung und Steuerung:

    • Die Funktionsauswahl geschieht in der Regel über Eingabe von Buchstaben. Groß- und Kleinschreibung ist nicht relevant: a = A.
    • Die automatische Suche nach Tasmota-Geräten kann bis zu 5 Minuten dauern, wenn alle 255 Adressen geprüft werden.
    • Bei der manuellen Auswahl eines Tasmota-Gerätes bitte nur die Ziffern des letzten Oktetts eingeben, also irgend etwas zwischen 1 und 255.
    • Im Menü Netzwerkeinstellungen müssen allerdings immer komplette IP-Nummern eingegeben werden.

    Hinweis für Raspberry Pi- und Linux-Anfänger:

    • Das Terminal ist nur die Software-Umgebung in der das Skript läuft. Wenn ihr das Skript startet (./soncheck2.sh), werdet ihr durch Auswahlmenüs geführt. Es gibt viele Hinweistexte. Mit Q oder Strg-C kann das Skript jederzeit beendet werden.
    • Kann über Putty, SSH oder mit einer direkt angeschlossenen Tastatur bedient werden



    Ich würde mich über anschauen, ausprobieren und Feedback freuen!


    Update 15.02.2018

    Nun sollte das Skript auch auf einer virtuellen Maschine laufen. Ich habe es bei mir mit einem virtuellen Raspberry Pi auf einem Ubuntu Hostsystem getestet. Netzwerk des virtuellen Systems ist 10.0.2.1/24 und das Zielnetzwerk (mit den Tasmota-Geräten) ist 192.168.178.1/24. Funzt. Wäre schön, wenn es jemand gegenchecken könnte. Idealerweise auch in der Kombi Windows- oder Apple-Host mit Raspbian-/Debian-/Ubuntu-Gastsystem.


    Unterschiede zur ersten Version:

    Es gibt eine Abfrage, ob sich das System, auf dem das Skript aufgerufen wird, im selben Netz befindet wie die Tasmota-Geräte. Bei J geht es weiter wie bisher. Bei Eingabe von N werdet ihr zur Eingabe der ersten drei Oktette des Zielnetzwerkes - also des Netzwerkes, in dem sich die Tasmotas befinden - aufgefordert. Bitte in der Struktur XXX.XXX.XXX. eingeben. Den letzten Punkt nicht vergessen. Danach erfolgt dann wieder die Abfrage, ob ihr ein einzelne Gerät manuell festlegen wollt oder ob das "Fremdnetz" nach Tasmotas durchsucht werden soll. Naja und das Skript heißt erst einmal soncheck2a.sh.


    Update 01.03.2018

    soncheck2a.sh kann nun auch mit Passwort geschützten Tasmota-Geräten umgehen. Es stehen verschiedene Auswahlen zur Verfügung, je nach dem ob die Geräte alle oder nur teilweise Passwort geschützt sind und ob ein einheitliches Passwort verwendet wird oder jedes Gerät sein eigenes Passwort braucht.

    Die zweite Änderung bezieht sich darauf, dass bei der automatisierten Suche nach Tasmota-Geräte nun das Programm fping statt ping zum Einsatz kommt. Weil ich bei fping das Timeout (Wartezeit auf eine Antwort eines Gerätes) auf kürzere Zeiten als 1 Sekunde einstellen kann, arbeitet nun der Netzwerk-Scan bis zum Faktor 4 schneller. Der angefragten Installation muss natürlich zugestimmt werden.


    Ankündigung:

    Unter bestimmten Voraussetzungen läuft das Skript auch unter Windows 10. Dort kann nämlich ein Linux-Subsystem installiert werden mit der BASH als Terminal. Dafür ist das Skript optimiert. Wer sich dafür interessiert, kann mir eine PM schicken. Dann beschreibe ich die notwendigen Schritte.


    PS: Schade, dass einer der Moderatoren das Thema von der Pinnwand genommen und damit tief in der Historie vergraben hat, wo es niemand findet...


    Update 03.04.2018

    Skript bleibt nun nicht mehr bei bestimmten nicht Netzgeräten beim IP-Scan hängen sondern arbeitet nach einer nicht erwarteten bzw. keiner Antwort nach einer Sekunde weiter.

  • Hallo Jörg
    Habe es mal angefangen zu Testen und finde es schonmal Super.:thumbup:

    Getestet wird ich mit einem Rpi3 / Jessie Full.
    Es sind 2 Tasmota Geräte (Basic, TH10 mit 5.12.0a) im Einsatz.
    Bei "Automatische Suche" wird nur der TH10 gefunden.

    Nach "Manueller Eingabe" wird der Basic nicht gefunden

    nur der TH10 und direktes schalten 1,2,3,4 - 0 funktioniert.

    Auch 11 - 14 konnte im groben mit Erfolg testen.

  • premo

    Manchmal scheinen die Geräte zu schlafen. Führe bitte mal zwei Mal die automatische Suche aus. Vielleicht liegt es auch an der Sleeptime. Falls gesetzt bitte mal auf 0 setzen und testen.

    Gruß

    Jörg

  • JoergZ :

    Hab über Deine Signatur zu diesem Shellscript gefunden. Auch als alter Hase kann man immer wieder neue Anregungen entnehmen. Gefällt mir!


    Gerade hab ich mal einen Scan über das gesamte (Standard-) private class C-Netz laufen lassen. Es lief gut an, aber dann...


    Für meine Heizkörperthermostate habe ich einen eq-3 MaxCube im Netz hängen. Das Ding scheint ein Schweinchen zu sein, denn auf den Ping antwortet der Cube und wird demnach als online erkannt. Auf den nachfolgenden http-Request per curl antwortet er aber nicht, es gibt aber auch keinen Timeout! Also bleibt das Script bis zum Sanktnimmerleinstag hängen und kann nur noch mit CTRL-C abgebrochen werden.


    Deswegen ein kleiner Verbesserungsvorschlag, die Zeile 114 um den curl-Timeout-Parameter zu ergänzen.


    Jetzt:

    Code
    1. if a=$(curl -s http://$netz$i/cm?cmnd=power | grep -i 'power'); then


    Vorschlag: Verbindungsversuch mit 5 Sekunden Timeout

    Code
    1. if a=$(curl --connect-timeout 5 -s http://$netz$i/cm?cmnd=power | grep -i 'power'); then


    Damit rennt der Netzwerkscan nun komplett durch.

    Grüssings

    Armin


    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus

  • Frickelmaster

    Oh super! Das hat mich auch genervt weil ich einen AccessPoint habe, der ebenfalls auf den Ping (natürlich) reagiert,aber bei der Power-Abfrage ebenfalls blockiert. Unter anderen deswegen habe ich die Eingrenzung der IP-Nummern implementiert. Hätte ich mal in das fucking manual con curl geguckt... Ich denke, ich setzte den Timeout auf 1. Wer da noch nicht reagiert hat, verdient es nicht in die Liste der Tasmota-Geräte aufgenommen zu werden. Überarbeite und erweitere das Skript sowieso gerade. Demnächst auch für Windows 10 User verfügbar...

  • Frickelmaster

    Habe es doch noch einmal geändert, weil mein Edimax AccessPoint die Power-Abfrage trotz timeout hat ins Leere laufen lassen und das Skript blockiert. Dann habe ich mich zu einer offensichtlich noch härteren Gangart mit diesem Parameter entschlossen:

    Code
    1. if a=$(curl --max-time 1 -s http://$netz$i/cm?cmnd=power | grep -i 'power'); then ....

    Läuft. Wenn keine Antwort kommt, geht's einfach weiter.

  • Das ist so wie ein kill -9 :-)


    Aber egal... wenn's funktioniert, ist das doch prima. Warum nicht auch mal die dicke Keule schwingen?!

    Grüssings

    Armin


    iobroker, Sonoff Basic/POW/TH16 mit Tasmota, Obi-ESP8266-Steckdosen mit Tasmota, PIR-Sensoren mit Sonoff Basic, Max! Heizkörperthermostate + Cube, BroadlinkPro, Broadlink Mini, BBS (billige Baumarkt-Steckdosen), FritzDect200

    3D-Drucker Anycubic i3 Mega, Tronxy X5S, Anycubic Linear Plus

  • Ich bin gerade über das Script gestolpert. :)

    Hat mir auf Anhieb gefallen.


    Auf dem Raspberry Pi3 läuft es grundsätzlich. Es findet auch mein Sonoff S20.


    Probiert habe ich die Netzwerkeinstellungen zu ändern (z.B. feste IP). Das hat leider nicht funktioniert, die neue IP wurde nicht übernommen, er lief nach einem Neustart weiterhin auf der alten IP. Aber dank den Begriffen (IPAddress1) konnte ich nun die IP über die Konsole fest einstellen. :)


    Wird noch weiter am Script gearbeitet oder ist die Entwicklung dahingehend eingeschlafen?

    Ich könnte es verstehen, weil man ja grundsätzlich über die Weboberfläche und dort über die Konsole alles direkt ansprechen kann.

    Meine Hardware@home: Fritzbox 7490, 3xFritzDect 200, 1xSonOff S20 u. Gosund SP1 mit Tasmota, Syno NAS, Raspberry Pi 3B f. PiHole, Docker, Portainer

  • Du hast recht, ich habe das Script nicht weiterentwickelt, weil es wenig Nutzer gibt, die gerne mit der Konsole arbeiten. Die meisten ziehen grafische Tools vor, wie sie mit TasmoAdmin und QuickView von den Kollegen hier in diesem Forum vorgestellt wurden und gute Alternativen sind. Nicht zuletzt QuickView arbeitet ebenfalls serverless.

    Warum beim S20 nicht eine geänderte IP übernommen wurde, muss ich mal prüfen. Dazu melde ich mich noch einmal.