Hallo Leute,
in einem Modul habe ich folgende Funktion:
private function SetRadioStationsAssociations()
{
// Aktuelles Profil aufräumen
$ProfilArray = Array();
$ProfilArray = IPS_GetVariableProfile("IPS2Pioneer.RadioStations_".$this->InstanceID);
foreach ($ProfilArray["Associations"] as $Association)
{
@IPS_SetVariableProfileAssociation("IPS2Pioneer.RadioStations_".$this->InstanceID, intval($Association["Value"]), "", "", -1);
}
$RadioStationsString = $this->ReadPropertyString("RadioStations");
$RadioStations = json_decode($RadioStationsString);
$this->SendDebug("SetRadioStationsAssociations", serialize($RadioStations), 0);
foreach ($RadioStations as $Key => $Value) {
$this->SendDebug("SetRadioStationsAssociations", $Value->RadioStationName." mit Frequenz ".round($Value->RadioStationFrequency, 1)." MHz hinzugefuegt", 0);
IPS_SetVariableProfileAssociation("IPS2Pioneer.RadioStations_".$this->InstanceID, round($Value->RadioStationFrequency, 1), $Value->RadioStationName, "Melody", -1);
}
}
Im ersten Teil sollen die vorhandenen Associations gelöscht werden - das funktioniert offenbar.
Im zweiten Teil sollen die Daten einer List ausgelesen werden um sie als neue Associations hinzugefügt werden.
Im Debug hole ich mir dazu folgende Daten mal heraus:
im ersten „SendDebug“:
15.11.2020, 15:58:21 | SetRadioStationsAssociations | a:4:{i:0;O:8:"stdClass":2:{s:16:"RadioStationName";s:4:"R.SH";s:21:"RadioStationFrequency";d:102.5;}i:1;O:8:"stdClass":2:{s:16:"RadioStationName";s:8:"NDR1 Nds";s:21:"RadioStationFrequency";d:103.2;}i:2;O:8:"stdClass":2:{s:16:"RadioStationName";s:8:"Radio HH";s:21:"RadioStationFrequency";d:103.60000000000001;}i:3;O:8:"stdClass":2:{s:16:"RadioStationName";s:4:"NDR2";s:21:"RadioStationFrequency";d:87.60000000000001;}}
Es sind also zum Test vier Radiosender in der List (mal abgesehen von der Float-Darstellung das in einem anderen Thema bearbeitet wird) sind die Daten so identisch mit den Einträgen in der List.
Im zweiten „SendDebug“:
15.11.2020, 15:58:21 | SetRadioStationsAssociations | R.SH mit Frequenz 102,5 MHz hinzugefuegt
15.11.2020, 15:58:21 | SetRadioStationsAssociations | NDR1 Nds mit Frequenz 103,2 MHz hinzugefuegt
15.11.2020, 15:58:21 | SetRadioStationsAssociations | Radio HH mit Frequenz 103,6 MHz hinzugefuegt
15.11.2020, 15:58:21 | SetRadioStationsAssociations | NDR2 mit Frequenz 87,6 MHz hinzugefuegt
Das ist stimmig zu den Daten aus der List.
IPS_SetVariableProfileAssociation("IPS2Pioneer.RadioStations_".$this->InstanceID, round($Value->RadioStationFrequency, 1), $Value->RadioStationName, "Melody", -1);
sollte jetzt sein Wirkung entfalten.
ABER: Bei den Associations fehlt immer irgendeiner der Datensätze oder Frequenzen sind bei zwei Sendern identisch.
Habe ich ein Timing-Problem?
Joachim