Ich nutze ein Skript um mir die Status Werte eines MQTT/Tasmota Gerätes abzurufen. Es handelt sich hierbei um die InLine RGB Steckdosen. Jetzt kommt aber ein Ausrufezeichen bei dem Skript, aber erst seit ich ein zweites „gleiches“ Gerät eingefügt habe. Bei einer Steckdose ist alles bestens.
Skript um die Werte abzurufen:
<?php
INLINE_sendMQTTCommand(12959,"status","0"); // Status 0 ruft alle MQTT Status Informationen ab (1-11) - ID ist die der InLine Plug Modul Instanz
INLINE_sendMQTTCommand(43910,"status","0"); // Status 0 ruft alle MQTT Status Informationen ab (1-11) - ID ist die der InLine Plug Modul Instanz
Dieses Skript rufe ich mit einem Zyklischen Ereignis, alle 5 Minuten auf.
Skript um die Werte in die Variablen zu schreiben:
<?php
// Variablenänderung
if($_IPS['SENDER'] == 'Variable') {
// Daten verarbeiten
$a = json_decode($_IPS['VALUE'], true);
// Verzweigung anhand der auslösenden Variablen
switch ($_IPS['VARIABLE']) {
// Status Value Variable
case 17783:
SetStatusValues($a);
break;
// Geräte Value Variable
case 16809:
SetDeviceValues($a);
break;
// Firmware Value Variable
case 45028:
SetFirmwareValues($a);
break;
// Log & Telemetrie Value Variable
case 52309:
SetLoggingAndTelemetryValues($a);
break;
// Speicher Value Variable
case 32031:
SetMemoryValues($a);
break;
// Netzwerk Value Variable
case 35444:
SetNetworkValues($a);
break;
// MQTT Value Variable
case 26114:
SetMQTTValues($a);
break;
// Zeit Value Variable
case 40075:
SetTimeValues($a);
break;
// Energie Monitoring Variable
case 44085:
SetEnergyMonitoringValues($a);
break;
// Energie Verbrauch Variable
case 59610:
SetEnergyConsumptionValues($a);
break;
// Telemetriedaten Variable
case 25366:
SetTeleperiodValues($a);
break;
default:
IPS_LogMessage("PLUG SCRIPT", $_IPS['VARIABLE'] . ': ' . $_IPS['VALUE']);
}
}
function SetStatusValues($array_var)
{
// Instanz Status Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (12369, $array_var['Status']['Module']);
setvalue (42481, $array_var['Status']['DeviceName']);
setvalue (57229, $array_var['Status']['FriendlyName']['0']);
setvalue (21553, $array_var['Status']['FriendlyName']['1']);
setvalue (38422, $array_var['Status']['Topic']);
setvalue (33694, $array_var['Status']['ButtonTopic']);
setvalue (50583, $array_var['Status']['Power']);
setvalue (57305, $array_var['Status']['PowerOnState']);
setvalue (23339, $array_var['Status']['LedState']);
setvalue (25113, $array_var['Status']['LedMask']);
setvalue (44302, $array_var['Status']['SaveData']);
setvalue (31369, $array_var['Status']['SaveState']);
setvalue (18772, $array_var['Status']['SwitchTopic']);
setvalue (40176, $array_var['Status']['SwitchMode']['0']);
setvalue (42711, $array_var['Status']['SwitchMode']['1']);
setvalue (59498, $array_var['Status']['SwitchMode']['2']);
setvalue (18738, $array_var['Status']['SwitchMode']['3']);
setvalue (32339, $array_var['Status']['SwitchMode']['4']);
setvalue (35458, $array_var['Status']['SwitchMode']['5']);
setvalue (27795, $array_var['Status']['SwitchMode']['6']);
setvalue (54170, $array_var['Status']['SwitchMode']['7']);
setvalue (48918, $array_var['Status']['ButtonRetain']);
setvalue (54006, $array_var['Status']['SwitchRetain']);
setvalue (52481, $array_var['Status']['SensorRetain']);
setvalue (25742, $array_var['Status']['PowerRetain']);
setvalue (21242, $array_var['Status']['InfoRetain']);
setvalue (15352, $array_var['Status']['StateRetain']);
}
function SetDeviceValues($array_var)
{
// Instanz Geräte Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (41241, $array_var['StatusPRM']['Baudrate']);
setvalue (16680, $array_var['StatusPRM']['SerialConfig']);
setvalue (20433, $array_var['StatusPRM']['GroupTopic']);
setvalue (17073, $array_var['StatusPRM']['OtaUrl']);
setvalue (54029, $array_var['StatusPRM']['RestartReason']);
setvalue (12116, $array_var['StatusPRM']['StartupUTC']);
setvalue (17117, $array_var['StatusPRM']['Uptime']);
setvalue (10138, $array_var['StatusPRM']['Sleep']);
setvalue (52218, $array_var['StatusPRM']['CfgHolder']);
setvalue (39265, $array_var['StatusPRM']['BootCount']);
setvalue (40165, $array_var['StatusPRM']['SaveCount']);
setvalue (53683, $array_var['StatusPRM']['SaveAddress']);
setvalue (49720, $array_var['StatusPRM']['BCResetTime']);
}
function SetFirmwareValues($array_var)
{
// Instanz Firmware Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (54518, $array_var['StatusFWR']['Version']);
setvalue (13561, $array_var['StatusFWR']['BuildDateTime']);
setvalue (27190, $array_var['StatusFWR']['Boot']);
setvalue (42283, $array_var['StatusFWR']['Core']);
setvalue (17737, $array_var['StatusFWR']['SDK']);
setvalue (31671, $array_var['StatusFWR']['CpuFrequency']);
setvalue (58296, $array_var['StatusFWR']['Hardware']);
setvalue (24939, $array_var['StatusFWR']['CR']);
}
function SetLoggingAndTelemetryValues($array_var)
{
// Instanz Logging und Telemetrie Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (34481, $array_var['StatusLOG']['SerialLog']);
setvalue (51727, $array_var['StatusLOG']['WebLog']);
setvalue (35913, $array_var['StatusLOG']['MqttLog']);
setvalue (57600, $array_var['StatusLOG']['SysLog']);
setvalue (28807, $array_var['StatusLOG']['LogHost']);
setvalue (54077, $array_var['StatusLOG']['LogPort']);
setvalue (39732, $array_var['StatusLOG']['SSId']['0']);
setvalue (20581, $array_var['StatusLOG']['SSId']['1']);
setvalue (46681, $array_var['StatusLOG']['TelePeriod']);
setvalue (42964, $array_var['StatusLOG']['Resolution']);
setvalue (26064, $array_var['StatusLOG']['SetOption']['0']);
setvalue (55696, $array_var['StatusLOG']['SetOption']['1']);
setvalue (45718, $array_var['StatusLOG']['SetOption']['2']);
setvalue (52872, $array_var['StatusLOG']['SetOption']['3']);
setvalue (42335, $array_var['StatusLOG']['SetOption']['4']);
}
function SetMemoryValues($array_var)
{
// Instanz Speicher Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (22607, $array_var['StatusMEM']['ProgramSize']);
setvalue (58313, $array_var['StatusMEM']['Free']);
setvalue (37338, $array_var['StatusMEM']['Heap']);
setvalue (44401, $array_var['StatusMEM']['ProgramFlashSize']);
setvalue (45912, $array_var['StatusMEM']['FlashSize']);
setvalue (37528, $array_var['StatusMEM']['FlashChipId']);
setvalue (18646, $array_var['StatusMEM']['FlashFrequency']);
setvalue (29926, $array_var['StatusMEM']['FlashMode']);
setvalue (47357, $array_var['StatusMEM']['Features']['0']);
setvalue (46771, $array_var['StatusMEM']['Features']['1']);
setvalue (20160, $array_var['StatusMEM']['Features']['2']);
setvalue (55730, $array_var['StatusMEM']['Features']['3']);
setvalue (57240, $array_var['StatusMEM']['Features']['4']);
setvalue (45332, $array_var['StatusMEM']['Features']['5']);
setvalue (36912, $array_var['StatusMEM']['Features']['6']);
setvalue (44316, $array_var['StatusMEM']['Features']['7']);
setvalue (16439, $array_var['StatusMEM']['Features']['8']);
setvalue (46199, $array_var['StatusMEM']['Drivers']);
setvalue (57758, $array_var['StatusMEM']['Sensors']);
}
function SetNetworkValues($array_var)
{
// Instanz Netzwerk Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (45479, $array_var['StatusNET']['Hostname']);
setvalue (24628, $array_var['StatusNET']['IPAddress']);
setvalue (45224, $array_var['StatusNET']['Gateway']);
setvalue (56597, $array_var['StatusNET']['Subnetmask']);
setvalue (24947, $array_var['StatusNET']['DNSServer1']);
setvalue (10129, $array_var['StatusNET']['DNSServer2']);
setvalue (54070, $array_var['StatusNET']['Mac']);
setvalue (39453, $array_var['StatusNET']['Webserver']);
setvalue (54440, $array_var['StatusNET']['WifiConfig']);
setvalue (43408, $array_var['StatusNET']['WifiPower']);
}
function SetMQTTValues($array_var)
{
// Instanz MQTT Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (37419, $array_var['StatusMQT']['MqttHost']);
setvalue (33765, $array_var['StatusMQT']['MqttPort']);
setvalue (46497, $array_var['StatusMQT']['MqttClientMask']);
setvalue (25284, $array_var['StatusMQT']['MqttClient']);
setvalue (13865, $array_var['StatusMQT']['MqttUser']);
setvalue (43939, $array_var['StatusMQT']['MqttCount']);
setvalue (46976, $array_var['StatusMQT']['MAX_PACKET_SIZE']);
setvalue (41949, $array_var['StatusMQT']['KEEPALIVE']);
setvalue (12248, $array_var['StatusMQT']['SOCKET_TIMEOUT']);
}
function SetTimeValues($array_var)
{
// Instanz Zeit Informationen // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (18648, $array_var['StatusTIM']['UTC']);
setvalue (14772, $array_var['StatusTIM']['Local']);
setvalue (28837, $array_var['StatusTIM']['StartDST']);
setvalue (19781, $array_var['StatusTIM']['EndDST']);
setvalue (22612, $array_var['StatusTIM']['Timezone']);
setvalue (26353, $array_var['StatusTIM']['Sunrise']);
setvalue (17459, $array_var['StatusTIM']['Sunset']);
}
function SetEnergyMonitoringValues($array_var)
{
// Instanz Energie Monitoring // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (27718, $array_var['StatusPTH']['PowerDelta']['0']);
setvalue (36176, $array_var['StatusPTH']['PowerDelta']['1']);
setvalue (52060, $array_var['StatusPTH']['PowerDelta']['2']);
setvalue (54167, $array_var['StatusPTH']['PowerLow']);
setvalue (19659, $array_var['StatusPTH']['PowerHigh']);
setvalue (36851, $array_var['StatusPTH']['VoltageLow']);
setvalue (42839, $array_var['StatusPTH']['VoltageHigh']);
setvalue (30977, $array_var['StatusPTH']['CurrentLow']);
setvalue (52704, $array_var['StatusPTH']['CurrentHigh']);
}
function SetEnergyConsumptionValues($array_var)
{
// Instanz Energie Verbauch // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (23551, $array_var['StatusSNS']['Time']);
setvalue (40921, $array_var['StatusSNS']['ENERGY']['TotalStartTime']);
setvalue (37993, $array_var['StatusSNS']['ENERGY']['Total']);
setvalue (40371, $array_var['StatusSNS']['ENERGY']['Yesterday']);
setvalue (11363, $array_var['StatusSNS']['ENERGY']['Today']);
setvalue (59413, $array_var['StatusSNS']['ENERGY']['Power']);
setvalue (26718, $array_var['StatusSNS']['ENERGY']['ApparentPower']);
setvalue (43668, $array_var['StatusSNS']['ENERGY']['ReactivePower']);
setvalue (54140, $array_var['StatusSNS']['ENERGY']['Factor']);
setvalue (56641, $array_var['StatusSNS']['ENERGY']['Voltage']);
setvalue (48260, $array_var['StatusSNS']['ENERGY']['Current']);
}
function SetTeleperiodValues($array_var)
{
// Instanz Telemetriedaten // ID's eintragen der einzelnen Variablen innerhalb der angegebenen Instanz
setvalue (59381, $array_var['StatusSTS']['Time']);
setvalue (22159, $array_var['StatusSTS']['Uptime']);
setvalue (11990, $array_var['StatusSTS']['UptimeSec']);
setvalue (26085, $array_var['StatusSTS']['Heap']);
setvalue (20315, $array_var['StatusSTS']['SleepMode']);
setvalue (41681, $array_var['StatusSTS']['Sleep']);
setvalue (25167, $array_var['StatusSTS']['LoadAvg']);
setvalue (41414, $array_var['StatusSTS']['MqttCount']);
setvalue (49209, $array_var['StatusSTS']['POWER1']);
setvalue (48980, $array_var['StatusSTS']['POWER2']);
setvalue (19203, $array_var['StatusSTS']['Dimmer']);
setvalue (10785, $array_var['StatusSTS']['Color']);
setvalue (36088, $array_var['StatusSTS']['HSBColor']);
setvalue (10687, $array_var['StatusSTS']['Channel']['0']);
setvalue (25205, $array_var['StatusSTS']['Channel']['1']);
setvalue (57358, $array_var['StatusSTS']['Channel']['2']);
setvalue (16973, $array_var['StatusSTS']['Scheme']);
setvalue (50129, $array_var['StatusSTS']['Fade']);
setvalue (32965, $array_var['StatusSTS']['Speed']);
setvalue (14540, $array_var['StatusSTS']['LedTable']);
setvalue (32404, $array_var['StatusSTS']['Wifi']['AP']);
setvalue (52501, $array_var['StatusSTS']['Wifi']['SSId']);
setvalue (10562, $array_var['StatusSTS']['Wifi']['BSSId']);
setvalue (54677, $array_var['StatusSTS']['Wifi']['Channel']);
setvalue (33239, $array_var['StatusSTS']['Wifi']['Mode']);
setvalue (13980, $array_var['StatusSTS']['Wifi']['RSSI']);
setvalue (15151, $array_var['StatusSTS']['Wifi']['Signal']);
setvalue (25940, $array_var['StatusSTS']['Wifi']['LinkCount']);
setvalue (53888, $array_var['StatusSTS']['Wifi']['Downtime']);
}
Diese Werte werden werden mit einem Ausgelösten Ereignis in die Variablen geschrieben. Für jede String Value Variable ein Ereignis.
Wenn ich jetzt den zweiten Plug aus dem Skript entferne ist alles Ok.
INLINE_sendMQTTCommand(43910,"status","0"); // Status 0 ruft alle MQTT Status Informationen ab (1-11) - ID ist die der InLine Plug Modul Instanz