Ist natürlich aktiv, leider funktioniert das Modul schon ewig nicht mehr
.
Das liegt aber leider am PHP ![]()
Moin,
neues Update online. Bei der Umstellung von Profilen auf native Darstellung wurde die „Fehlende Übersetzungen“ Funktion beschädigt. Diese funktioniert nun wieder.
LG
Burkhard
Moin,
kleines Update mit weiteren Übersetzungen erfolgt.
Wer uns bei den Übersetzungen helfen möchte, hier ein kleines Script, welches ihr in Symcon erstellen könnt. Es sucht alle fehlenden Übersetzungen in den vorhandenen Z2M-Instanzen, legt eine String-Variable unterhalb des Script an und speichert das Ergebnis darin als JSon-Datei. Diese könnt Ihr dann gerne zur Verfügung stellen. Sensible Daten werden in der Datei nicht gespeichert, nur das scan-Ergebnis und die fehlenden Übersetzungen.
<?php
declare(strict_types=1);
/**
* Sucht in allen Zigbee2MQTT-Geräte- und Gruppeninstanzen nach fehlenden Übersetzungen.
*
* Das Skript ist für die Ausführung als IP-Symcon-Skript vorgesehen. Es erzeugt
* unterhalb des Skripts eine Stringvariable mit einem zusammengefassten JSON-Bericht
* und gibt denselben Bericht zusätzlich im Ausgabefenster aus.
*/
// Bei true wird vor dem Auslesen für jede Instanz IPS_ApplyChanges() ausgeführt.
// Das kann Variablen neu auswerten und MQTT-Kommunikation auslösen.
$refreshInstancesBeforeScan = false;
// Bei true wird der Bericht in einer Stringvariable unterhalb dieses Skripts gespeichert.
$storeReportInVariable = true;
$reportVariableIdent = 'MissingTranslationsReport';
$reportVariableName = 'Fehlende Zigbee2MQTT-Übersetzungen';
$moduleTypes = [
'{E5BB36C6-A70B-EB23-3716-9151A09AC8A2}' => 'Device',
'{11BF3773-E940-469B-9DD7-FB9ACD7199A2}' => 'Group'
];
$instances = [];
foreach ($moduleTypes as $moduleID => $moduleType) {
foreach (IPS_GetInstanceListByModuleID($moduleID) as $instanceID) {
$instances[(int) $instanceID] = $moduleType;
}
}
ksort($instances, SORT_NUMERIC);
$translations = [];
$errors = [];
$instancesWithMissingTranslations = [];
$missingOccurrences = 0;
foreach ($instances as $instanceID => $moduleType) {
try {
if ($refreshInstancesBeforeScan) {
IPS_ApplyChanges($instanceID);
}
$export = Z2M_UIExportDebugData($instanceID);
$data = z2mDecodeDebugExport($export);
$missingTranslations = $data['missingTranslations'] ?? [];
if (!is_array($missingTranslations)) {
throw new RuntimeException('Der Debugexport enthält keine gültige Übersetzungsliste.');
}
$instance = [
'id' => $instanceID,
'name' => IPS_GetName($instanceID),
'path' => IPS_GetLocation($instanceID),
'moduleType' => $moduleType
];
if (isset($data['Model']) && is_string($data['Model']) && $data['Model'] !== '') {
$instance['model'] = $data['Model'];
}
foreach ($missingTranslations as $translation) {
if (!is_array($translation) || count($translation) !== 1) {
continue;
}
$type = (string) array_key_first($translation);
$value = (string) $translation[$type];
if ($type === '' || $value === '') {
continue;
}
$key = $type . "\0" . $value;
if (!isset($translations[$key])) {
$translations[$key] = [
'type' => $type,
'value' => $value,
'instances' => []
];
}
$translations[$key]['instances'][$instanceID] = $instance;
$instancesWithMissingTranslations[$instanceID] = true;
++$missingOccurrences;
}
} catch (Throwable $exception) {
$errors[] = [
'instanceID' => $instanceID,
'name' => IPS_GetName($instanceID),
'moduleType' => $moduleType,
'error' => $exception->getMessage()
];
}
}
$translationList = array_values($translations);
foreach ($translationList as &$translation) {
$translation['instances'] = array_values($translation['instances']);
}
unset($translation);
usort(
$translationList,
static fn (array $left, array $right): int => [$left['type'], $left['value']] <=> [$right['type'], $right['value']]
);
$report = [
'generatedAt' => date(DATE_ATOM),
'language' => IPS_GetSystemLanguage(),
'summary' => [
'instancesScanned' => count($instances),
'instancesWithMissingTranslations' => count($instancesWithMissingTranslations),
'missingOccurrences' => $missingOccurrences,
'uniqueMissingTranslations' => count($translationList),
'errors' => count($errors)
],
'missingTranslations' => $translationList,
'errors' => $errors
];
$json = json_encode(
$report,
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_SUBSTITUTE
);
if (!is_string($json)) {
throw new RuntimeException('Der Übersetzungsbericht konnte nicht als JSON erzeugt werden.');
}
if ($storeReportInVariable) {
$scriptID = (int) ($_IPS['SELF'] ?? 0);
if ($scriptID > 0) {
$variableID = @IPS_GetObjectIDByIdent($reportVariableIdent, $scriptID);
if ($variableID === false) {
$variableID = IPS_CreateVariable(VARIABLETYPE_STRING);
IPS_SetParent($variableID, $scriptID);
IPS_SetIdent($variableID, $reportVariableIdent);
IPS_SetName($variableID, $reportVariableName);
}
SetValueString($variableID, $json);
}
}
echo $json;
/**
* Dekodiert den von Z2M_UIExportDebugData() gelieferten Data-URI.
*
* @return array<string, mixed>
*/
function z2mDecodeDebugExport(string $export): array
{
$prefix = 'data:application/json;base64,';
if (str_starts_with($export, $prefix)) {
$export = substr($export, strlen($prefix));
}
$decoded = base64_decode($export, true);
if ($decoded === false) {
throw new RuntimeException('Der Debugexport ist nicht gültig Base64-kodiert.');
}
$data = json_decode($decoded, true);
if (!is_array($data)) {
throw new RuntimeException('Der Debugexport enthält kein gültiges JSON.');
}
return $data;
}
LG
Burkhard
Moin,
ich habe noch zwei Fragen zum neuen Modul.
Ich habe alles von Zigbee2MQTT gelöscht, und bin neu angefangen.
Und hier meine Fragen:
- Wieso wird im Konfigurator die Bridge rot markiert?

Und wie bekommt man die roten Fehler weg, die treten auf dem iPad und auf Android auf (Bild Android), in der Kachelvisualisierung auf Win11 sind die nicht vorhanden?
Hein09
translation.json (21,8 KB)
Ganz vielen Dank an Dich und das Z2M Team!
Schaue ich mir an und wird behoben. Die sollte da eigentlich gar nicht drin sein. ![]()
Muss ich mir auch noch mal anschauen. Werde ich heute Abend oder morgen machen.
LG
Burkhard
Moin,
wird zum nächsten Update enthalten sein.
Lieben Dank für die Unterstützung.
LG
Burkhard
Moin,
erstmal ein herzliches Dankeschön an Euch Tester. Mich würden aber auch Feedbacks zum Modul allgemein (nicht unbedingt nur zu den Fehlern
) freuen.
Hier vor Allem: Bedienbarkeit, Geschwindigkeit, Komfort, etc. (auch gerne Kritik
)
LG
Burkhard
Also ich hab mich noch nicht getraut auf V6 umzusteigen, weil jede Änderung in meinem ZigBee2MQTT immer wie die Operation am offenen Herzen war.
Wenn ich den Schritt wage, kommt eine Einschätzung.
Danke für Eure Arbeit
LG
Mach Dir keinen Kopf,
bei mir läuft die Version jetzt bereits seit Juni fehlerfrei im produktiv-System. Kann dich aber verstehen und wäre genauso vorsichtig. Es hat sich ja doch einiges im Modul getan.
LG
Burkhard
Hallo,
ich habe auch die Testing bei mir laufen… alles super seit Wochen/Monaten. Echt toll, was die Bridge mittlerweile alles kann. Über die das WebUI kann ich sehen, dass ich die 6.04 Extension habe.
Allerdings, wenn ich auf den Button in der Bridge drücke, kommt folgender Fehler:
-
- Fehlermeldung: Unterordner /libs exisitiert bei mir nicht
-
- Fehlermeldung: Datei BridgeRequestHelper.php ist da
Derzeit läuft diese Zigbee2MQTT Version.
Grüße
Björn
Moin Björn,
schaue ich mir mal an. Hast Du schon erneut installieren mal probiert?
LG
Burkhard
Habe ich über den ModulStore schon gemacht, bringt aber keine Verbesserung.
in dem Pfad, wie bei Dir, habe ich auch einen /libs/ Ordner, aber er will nach …/Bridge/libs/…
Also aus dem kläglichen Screenshot kann ich erkennen, das er nicht nach bridge/libs will, sondern nach bridge/Helper/…
Den es auch gibt:
Vielleicht kannst Du den FEhler einfach mal als TExt kopieren und hier reinstellen, damit wir ihn komplett sehen.
Und da wir gerade dabei sind: Welchen Button hast Du in der Bridge gedrückt?
LG
Burkhard
**file_get_contents(/var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Bridge/libs/IPSymconExtension2.js): Failed to open stream: Datei oder Verzeichnis nicht gefunden in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Bridge/Helper/BridgeConfigurationCommandHelper.php on line 27
Notice: Invalid payload in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/Bridge/Helper/BridgeRequestHelper.php on line 44
ERROR**
so, jetzt hat das rauskopieren geklappt….
Das Meldungsfenster ist halt immer zu klein … und lässt sich auf dem Mac nicht vergrößern.







