Moin,
ich habe eine Steckdosenleiste von Netio4All, mit vier Steckdosen, die man z.B. über MQTT schalten kann, die Spannung, Strom usw kann man sich auch anzeigen lassen.
Der Kanal zum schalten geht über das Thema „devices/Netio4All/messages/devicebound/“ und das lesen über das Thema „devices/Netio4All/messages/events/“,
Wird es demnächst in IPS, auch die Möglichkeit geben, das man im "MQTT-Device beides angeben kann?
Das Schalten der einzelnen Steckdosen klappt auch einwandfrei.
Nur die Werte aus dem mehrdimensionalen Array ab zuspeichern, in den einzel Variablen, damit habe ich Probleme, jede Steckdose hat eine eindeutige „ID“.
Mann kann sich einmal ein „GlobalMeasure“ Bericht senden lassen:
array(2) {
["GlobalMeasure"]=>
array(7) {
["Voltage"]=>
float(232,8)
["Frequency"]=>
float(50)
["TotalCurrent"]=>
int(747)
["OverallPowerFactor"]=>
float(0,76)
["TotalLoad"]=>
int(133)
["TotalEnergy"]=>
int(5703)
["EnergyStart"]=>
string(25) "2020-05-25T15:30:43+02:00"
}
["Outputs"]=>
array(4) {
[0]=>
array(9) {
["ID"]=>
int(1)
["Name"]=>
string(14) "USB Festplatte"
["State"]=>
int(1)
["Action"]=>
int(6)
["Delay"]=>
int(5000)
["Current"]=>
int(51)
["PowerFactor"]=>
float(0,43)
["Load"]=>
int(5)
["Energy"]=>
int(232)
}
[1]=>
array(9) {
["ID"]=>
int(2)
["Name"]=>
string(15) "Diskstation1618"
["State"]=>
int(1)
["Action"]=>
int(6)
["Delay"]=>
int(5000)
["Current"]=>
int(282)
["PowerFactor"]=>
float(0,9)
["Load"]=>
int(59)
["Energy"]=>
int(2708)
}
[2]=>
array(9) {
["ID"]=>
int(3)
["Name"]=>
string(3) "IPS"
["State"]=>
int(1)
["Action"]=>
int(6)
["Delay"]=>
int(5000)
["Current"]=>
int(124)
["PowerFactor"]=>
float(0,41)
["Load"]=>
int(12)
["Energy"]=>
int(572)
}
[3]=>
array(9) {
["ID"]=>
int(4)
["Name"]=>
string(6) "Server"
["State"]=>
int(1)
["Action"]=>
int(6)
["Delay"]=>
int(5000)
["Current"]=>
int(290)
["PowerFactor"]=>
float(0,84)
["Load"]=>
int(57)
["Energy"]=>
int(2189)
}
}
Des weiteren wird jedesmal wenn man eine Steckdose schaltet, der Bericht „Outputs“ geschickt:
array(1) {
["Outputs"]=>
array(1) {
[0]=>
array(7) {
["ID"]=>
int(3)
["Name"]=>
string(3) "IPS"
["State"]=>
int(1)
["Current"]=>
int(111)
["PowerFactor"]=>
float(0,43)
["Load"]=>
int(11)
["Energy"]=>
int(573)
}
}
}
Und jedesmal, wenn sich ein Wert ändert bekommt man einen Bericht
array(1) {
["Outputs"]=>
array(2) {
[0]=>
array(7) {
["ID"]=>
int(2)
["Name"]=>
string(15) "Diskstation1618"
["State"]=>
int(1)
["Current"]=>
int(282)
["PowerFactor"]=>
float(0,9)
["Load"]=>
int(59)
["Energy"]=>
int(2716)
}
[1]=>
array(7) {
["ID"]=>
int(3)
["Name"]=>
string(3) "IPS"
["State"]=>
int(1)
["Current"]=>
int(124)
["PowerFactor"]=>
float(0,38)
["Load"]=>
int(11)
["Energy"]=>
int(574)
}
}
}
Und hier dran scheitere ich, denn beim Bericht „GlobalMeasure“ ist jede Steckdose im richtigen Array.
Und hier hole ich z.B. für die Steckdose 3 es so ab:
$Geraet1_3_Strom = ($json["Outputs"][2]["Current"]
Nur das funktioniert nicht mehr, wenn der Bericht „Outputs“ geschickt wird, und der sogar 1, 2 oder sogar 3 Array hat.
Dort ist die Steckdose mal unter Array [0] oder unter [3] zu erreichen.
Ich hoffe ich habe es verständlich geschrieben wo mein Problem ist, und ich würde mich freuen wenn mir jemand mir den richtigen Weg zeigen kann.
Vielen Dank schon im vorraus.
MFG Hein09