Как правильно разобрать stdClass?
UPD: чутка поправил// Выводим все ХВС
foreach($array as $obj)
{    
    if(strpos($obj->Meter->ServiceName, 'ХВС') !== false){
         echo($obj->Meter->ServiceName . PHP_EOL);
    }
}


// Выводим все ГВС
foreach($array as $obj)
{    
    if(strpos($obj->Meter->ServiceName, 'ГВС') !== false){
         echo($obj->Meter->ServiceName . PHP_EOL);
    }
}UPD 2:  Код писал прямо в редакторе, попробуйте... возможны ошибки... но "ХВС" и "Г" может быть рандомным// Получаем наши ГВС (или что-то рандомное из нашего массива)
function getValues($array, $value)
{
    $values = []; 
    foreach($array as $obj)
    {    
        if(strpos($obj->Meter->ServiceName, $value) !== false){
             $values[] = $obj->Meter->ServiceName;
        }
    }
    return $values;
}

// Получаем наши ГВС, где $metrics наш массив в вопросе
print_r(getValues($metrics, 'ГВС'));
print_r(getValues($metrics, '12ХВС'));
print_r(getValues($metrics, 'Что-то'));
У тебя массив объектов а не объект.$array = [......];
foreach($array as $obj => $key) {
echo $obj->$key;
if(is_object($obj->$key))  {
...цикл или рекурсия
}

}