[Modul] Tasmota

Hat hier keiner eine Idee wie das geht?

Ich habe keine Shellies, aber wenn ich mir die Doku ansehe, dann könnte eventuell das Setzen der Farbe funktionieren.

TasmotaLED_setColorHex(25537, „FF0000“);
TasmotaLED_setColorHex(25537, „00FF00“);
TasmotaLED_setColorHex(25537, „0000FF“);

Sonst wird das wohl nur jemand mit einem Shelly RGB oder Kai selber beantworten können.

Hallo Ralf,
Besten Dank für deine Antwort!
Ja, das funktioniert, ist aber doch sehr aufwändig das so zu machen weil ich ja immer den Wert für alle 3 Ausgänge übergeben muss.
Ich möchte ja jeden Kanal als alleinstehenden Dimmer verwenden.

Mit Tasmota kannst du 4 PWM Kanäle einzeln steuern, muss nur eingestellt werden.
Hab das aber gerade nicht griffbereit, musst mal in der Tasmota Doku suchen.
Ich Habe einen Eigenbau 4fach PWM Dimmer für LED’s mit 5V so am laufen gehabt.

Ah, cool!
Genau das brauche ich.
Vielen Dank für den Tipp, werde es heute Abend versuchen

Cooles Tool, mal direkt unter Docker installiert. Mal sehen ob das auch gut funktioniert.
Musste zumindest schon mal die Firewall freischalten, da meine Tasmota-Geräte im anderen VLAN hängen. Aber hat er gefunden

Hallo tomgr,
Ich habe gestern alles mögliche versucht, bekomme aber nie die 4 Slider wie bei dir.
…und das Internet habe ich auch schon leer gesucht.
Könntest du bei Gelegenheit Evtl. noch einmal schauen wie das genau bei dir konfiguriert ist?
Wenn ich alles so einstelle wie auf deinen Bildern zu sehen sieht das einfach nicht so aus…
Oder könnte Evtl. Ein Backup deiner Konfiguration weiterhelfen???
Ich beschäftige mich noch nicht so lange mit Tasmota und MQTT und habe daher noch nicht so ganz den Durchblick.
Was mir aufgefallen ist, du hast die Version 10, ich 12.
Evtl. Kann es daran liegen???

Danke und Gruß
Isi

Vermutlich hat tomgr noch etwas konfiguriert:

vielleicht hilft

SetOption68 1

Das kann ich leider nicht beantworten.

Grüße,
Kai

Schau mal ob in der Instanz der Haken bei „Automatisierte Sensorwerte“ gesetzt ist.

Grüße,
Kai

Ich habe leider nicht so ein Gerät und kann das sehr schwer testen und nachstellen.
Da wären Debugs sehr hilfreich.

Grüße,
Kai

Ich könnte TuyaEnum einbauen, aber ich würde es ohne Profil machen, dies müsstest du dann selbst anlegen, da ich davon ausgehe, dass bei anderen Geräten mit einer TuyaMCU TuyaEnum2 etwas anderes bedeutet. Dies würde dir sicherlich reichen, oder?

Grüße,
Kai

Ich hoffe ich habe jetzt alle offenen Fragen beantwortet, ansonsten bitte die Frage einfach nochmal stellen.

Grüße,
Kai

Danke für den Tipp, das kannte ich auch noch nicht. Allerdings gefällt mir nicht so sehr, dass die Daten in einer DB liegen, da wäre ich beim restore einfach zu verzickt :wink:

Ich habe aber die Idee geklaut und schnell ein kleines Script zusammengekloppt. Es ist etwas speziell, da ich das Fritzbox-Modul nutze - aber die Schleife kann man ja auch schnell durch eine range-Schleife ersetzen bzw. wenn das jemand will, kann ich das noch machen. Wer keinen Scan will, muss die Variable so wie im Beispiel vorher setzen.

Idee: Es werden alle Hosts durchsucht und nach WLED oder TASMOTA identifiziert. Nur Aktuell geänderte Kondigurationen oder presets werden dann unter $backuproot gespeichert. Es gibt immer eine „latest“ Datei und den Verlauf der geänderten Versionen mit Zeitstempel.

<?php

// Ausstieg, damit NAS nicht unnötig angeworfen wird - ggf. einfach entfernen
if (GetValueBoolean(13736)) return;
if (GetValueInteger(31790)>0) return;

//Folgende Zeile auskommentieren, damit neu gescant wird
//$devices=json_decode('{"Hostname":{"ip":"192.168.178.46","type":"Tasmota"}, usw..... - 

if (!isset($devices)){
    $hosts=FB_GetHostNumberOfEntries(24240); // id der Fritzbox Host-Instanz

    for ($i=0;$i<FB_GetHostNumberOfEntries(24240);$i++){
        $hostarr=FB_GetGenericHostEntry(24240,$i);
        $fp = @fsockopen($hostarr['NewIPAddress'], 80, $errno, $errstr, 1);
        if (!$fp) {
        }
        else {
            if ($_IPS['SENDER']=='Execute') echo $hostarr['NewHostName'].$hostarr['NewIPAddress'];
            fclose($fp);
            $url = 'http://'.$hostarr['NewHostName']. '/';
            $ch = curl_init($url);
            curl_setopt_array($ch, array(
                CURLOPT_FOLLOWLOCATION => false,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_CONNECTTIMEOUT => 12,
                CURLOPT_RETURNTRANSFER => true,
                //CURLOPT_USERAGENT => 'TasmoBackup '.$GLOBALS['VERSION'],
                CURLOPT_ENCODING => "",
                CURLOPT_REFERER => 'http://'.$hostarr['NewHostName'].'/',
                CURLOPT_HTTPHEADER => array('Origin: http://'.$hostarr['NewHostName']),
            ));
            $data = curl_exec($ch);
            $err = curl_errno($ch);
            $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            if ($_IPS['SENDER']=='Execute') echo " ".$statusCode;
            if (strpos($data, 'Tasmota') !== false) {
                if ($_IPS['SENDER']=='Execute') echo " TASMOTA";
                $devices[$hostarr['NewHostName']]=array('ip'=>$hostarr['NewIPAddress'],'type'=>'Tasmota');
            }
            if (strpos($data, 'WLED') !== false) {
                if ($_IPS['SENDER']=='Execute') echo " WLED";
                $devices[$hostarr['NewHostName']]=array('ip'=>$hostarr['NewIPAddress'],'type'=>'WLED');
            }
            if ($_IPS['SENDER']=='Execute') echo "\n";
        }
    }
}

$backuproot="/Freigabepfad für das Backup, wird ggf. angelegt/";

foreach  ($devices as $host=>$device){
    $backup=$backuproot.$host."/";
    if (!file_exists($backuproot)) mkdir($backuproot);
    if (!file_exists($backup)) mkdir($backup);
    switch ($device['type']){
    case "WLED":
        if (@$cfg=Sys_GetURLContent("http://".$host."/cfg.json")){
            if (@$cfgalt=file_get_contents($backup.$host.".latest.cfg.json")){
                if ($cfg!=$cfgalt){
                    if ($_IPS['SENDER']=='Execute'){
                        echo $host." speichere neue Version...\n";
                    }
                    file_put_contents($backup.$host.".".date("dmYHis").".cfg.json", $cfg);
                    file_put_contents($backup.$host.".latest.cfg.json", $cfg);
                }
                elseif ($_IPS['SENDER']=='Execute'){
                    echo $host." keine Änderung!\n";
                }
            }
            else{
                file_put_contents($backup.$host.".".date("dmYHis").".cfg.json", $cfg);
                file_put_contents($backup.$host.".latest.cfg.json", $cfg);
                if ($_IPS['SENDER']=='Execute'){
                    echo $host." Fehler beim Einlesen oder boch kein Backup vorhanden\n";
                }
            }
        }
        if (@$presets=Sys_GetURLContent("http://".$host."/presets.json")){
            if (@$presetsalt=file_get_contents($backup.$host.".latest.presets.json")){
                if ($presets!=$presetsalt){
                    file_put_contents($backup.$host.".".date("dmYHis").".presets.json", $presets);
                    file_put_contents($backup.$host.".latest.presets.json", $presets);
                }
            }
            else{
                file_put_contents($backup.$host.".".date("dmYHis").".presets.json", $presets);
                file_put_contents($backup.$host.".latest.presets.json", $presets);
            }
        }
        break;
    case "Tasmota":
        if (@$cfg=Sys_GetURLContent("http://".$host."/dl")){
            if (@$cfgalt=file_get_contents($backup.$host.".latest.dmp")){
                if ($cfg!=$cfgalt){
                    if ($_IPS['SENDER']=='Execute'){
                        echo $host." speichere neue Version...\n";
                    }
                    file_put_contents($backup.$host.".".date("dmYHis").".dmp", $cfg);
                    file_put_contents($backup.$host.".latest.dmp", $cfg);
                }
                elseif ($_IPS['SENDER']=='Execute'){
                    echo $host." keine Änderung!\n";
                }
            }
            else{
                file_put_contents($backup.$host.".".date("dmYHis").".dmp", $cfg);
                file_put_contents($backup.$host.".latest.dmp", $cfg);
                if ($_IPS['SENDER']=='Execute'){
                    echo $host." Fehler beim Einlesen oder boch kein Backup vorhanden\n";
                }
            }
        }
        break;
    }
}
?>

Danke Ralf,
SetOption68 1 dann ist es nicht mehr RGB und die Ausgänge werden einzeln gesteuert.
Sorry, hatte gestern OP und noch nicht so fit.

Hallo Kai,

ich habe einen Rollladenaktor auf Basis „Currydouble“ mit Deinem Modul eingebunden.
die Rollladen kann ich mit Deiner vorgegeben Standard-Aktion auch aus IPS steuern.
der Status der Rolllade und die Zielvorgabe wurden als Variablen ebenfalls durch Dein Modul automatisch angelegt und werden auch aktualisiert. Leider kann ich aber Shutter1_Target nicht verändern. Per Script habe ich es versucht, komme da aber nicht weiter. Würdest Du mir da helfen wollen ?

Hallo Kai,
klar, der Haken ist gesetzt :slight_smile:

Grüße Frank

DANKE!
SetOption68 1 war das Stichwort!
Jetzt geht es so wie ich es brauche

Die Sicherung liegt als Datei auf dem Webserver, die DB ist „nur“ zur Verwaltung.

Ich kenne die Konfiguration von Tasmota nicht. Wie sieht die aus?
Wenn du mehr Infos dazu hast, dann können wir sicherlich herausfindne, was du senden musst.

Grüße,
Kai