+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    Aug 2009
    Beiträge
    215

    Standard MQTT Array mehrdimensionalen Array

    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:
    PHP-Code:
    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:

    PHP-Code:
    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
    PHP-Code:
    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:
    PHP-Code:
    $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

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    23,130

    Bisher ist dort nichts geplant. Ich würde mir eher mal die Module vom KaiS ansehen und ein dann ein passendes Modul bauen, welches in einer Instanz alle Kanäle abbildet.

    paresy

  3. #3
    Registriert seit
    Aug 2009
    Ort
    Lippe
    Beiträge
    2,369

    Kannst du mal die genaue Bezeichung oder einen Link zu der Leiste posten?
    Würde die mir gerne mal anschauen.
    Ev kannst ja direkt ein Modul von KaiS nutzen.
    lg Thomas
    IPS Raspberry Pi2(3) mit LCN, HM, Sonoff+Shelly per MQTT, SONOS und viel Eigenbau + Pi2(3) mit Heizungssteuerung über GPIO per IPS

  4. #4
    Registriert seit
    Aug 2009
    Beiträge
    215

    hier der Link zur Leiste:

    https://www.netio-products.com/en/device/netio-4all

    Ich würde mich freuen über ein Modul, oder aber auch wie man es mit ein Script lösen kann.

    Hein09

  5. #5
    Registriert seit
    Aug 2016
    Beiträge
    3,648

    Hallo,

    wenn du ein wenig Geduld hast, dann schaue ich mir das mal an.

    Grüße,
    Kai


    Gesendet von iPhone mit Tapatalk
    IPS 5.2, auf Tinkerboard und RPI, piVCCU, Homematic & Homematic IP, diverse Tasmota Geräte, Shelly, GHoma, LG HomBot, Sonos, Tvheadend, HomeKit, AppleTV
    Einfach mal rein schauen: IP-Symcon Discord Channel

  6. #6
    Registriert seit
    Aug 2009
    Beiträge
    215

    Moin,

    ja klar habe ich Zeit, bin ja froh wenn mir jemand auf die Sprünge hilft.
    Hein09

  7. #7
    Registriert seit
    Aug 2009
    Beiträge
    215

    Moin,

    ich brauche nicht unbedingt ein Modul.

    Mir würde es schon reichen wenn jemand mir sagen könnte, wie ich das Problem per Script lösen kann.

    Und zwar das einmal der Wert im Array 2 ist, aber beim nächsten mal im Array 0 zu finden ist.

    Wie kann man dieses Problem lösen?

    @KaiS natürlich freue ich mich auch noch auf Deine Rückmeldung.

    Hein09

Ähnliche Themen

  1. MQTT - Daten (String) in Array zerlegen
    Von hardlog im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 05.10.19, 17:03
  2. Antworten: 7
    Letzter Beitrag: 30.04.18, 18:18
  3. array
    Von zman0801 im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 13.04.12, 20:59
  4. Array
    Von JensNRW im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 06.03.12, 21:14
  5. Sortierung eines mehrdimensionalen Array's
    Von Attain im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 27.06.11, 18:54